/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：TUW01806SFLogic
*	ソースファイル名：TUW01806SFLogic.java
*	作成者			：FJ
*	日付			：2014年01月06日
*＜機能概要＞
*	VIEWロジッククラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v5.00.00	2014/01/06	FJ)中西		新規作成
*	v5.00.00	2014/01/06	FJ)中西		ANK-1766-00-00
*
**********************************************************************/

package eo.web.webview.TUW01806SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.TUW01805SF.TUW01805SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JTUScreenConst;
import eo.web.webview.common.JTUWebCommon;
import eo.web.webview.mapping.TUSV0101_TUSV0101OPDBMapper;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.constant.JTUStrConst;
import eo.common.constant.JPCModelConstant;

/**
 * TUW01806のビューロジック
 * @author FJ
 *
 */
public class TUW01806SFLogic extends JCCWebBusinessLogic
{
	
	/**
	 * 検索処理最大検索件数
	 */
	private static final String SEARCH_MAX_SHOW_CNT = "TUW01806_MAX_SHOW_CNT";
	

	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_init() throws Exception
	{
			return tuw01806_init();
	}
	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean tuw01806_init() throws Exception
	{
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		/**
		 * DataBean設定処理
		 */
		// セッション情報取得
		HashMap<String, Object> searchInfo = JCCWebCommon.getScreenInfo(this);
		
		bean.sendMessageString(TUW01806SFConst.SVC_KEI_NO_HD, X31CWebConst.DATABEAN_SET_VALUE
				, searchInfo.get(TUW01806SFConst.SVC_KEI_NO_HD).toString());
		
		bean.sendMessageString(TUW01806SFConst.NTT_TELNO_HD, X31CWebConst.DATABEAN_SET_VALUE
				, searchInfo.get(TUW01806SFConst.NTT_TELNO_HD).toString());
		
		bean.sendMessageString(TUW01806SFConst.HOJIN_KOJIN_CD, X31CWebConst.DATABEAN_SET_VALUE
				, searchInfo.get(TUW01806SFConst.HOJIN_KOJIN_CD).toString());
		
		bean.sendMessageString(TUW01806SFConst.SVC_KEI_UCWK_NO, X31CWebConst.DATABEAN_SET_VALUE
				, searchInfo.get(TUW01806SFConst.SVC_KEI_UCWK_NO).toString());
		
		bean.sendMessageString(TUW01806SFConst.HJIN_EO_YKAE_SVKEI_NO, X31CWebConst.DATABEAN_SET_VALUE
				, searchInfo.get(TUW01806SFConst.HJIN_EO_YKAE_SVKEI_NO).toString());
		
		bean.sendMessageString(TUW01806SFConst.NTT_TELNO, X31CWebConst.DATABEAN_SET_VALUE
				, searchInfo.get(TUW01806SFConst.NTT_TELNO).toString());
		
		bean.sendMessageString(TUW01806SFConst.BMP_KOJI_FIX_YMD, X31CWebConst.DATABEAN_SET_VALUE
				, searchInfo.get(TUW01806SFConst.BMP_KOJI_FIX_YMD).toString());
		
		// 一覧表示フラグの初期化
		bean.sendMessageString(TUW01806SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.LIST_DISP_FLG_FALSE);
		
		/**
		 * サービス呼出処理
		 */
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "TUSV0101");
		
		// マッピングクラスのインスタンスを生成
		TUSV0101_TUSV0101OPDBMapper mapper = new TUSV0101_TUSV0101OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		/*
		 * 上りマッピング
		 */
		// マッピングクラスの呼び出し
		mapper.setTUSV010101SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		/**
		 * サービス処理結果の取得
		 */
		
		// 一覧情報のクリア
		X31SDataBeanAccessArray beanList = paramBean[0].getDataBeanArray(TUW01806SFConst.ETU0081B019CBSMSG1LIST);
		if(beanList.getCount() != 0)
		{
			beanList.clearArray();
		}
		/*
		 * 下りマッピング
		 */
		// マッピングクラスの呼び出し
		mapper.getTUSV010101SC(paramBean, outputMap);
		
		//行スタイル設定
		JTUWebCommon.setRowStyle(bean, TUW01806SFConst.ETU0081B019CBSMSG1LIST, TUW01806SFConst.ROW_STYLE_01);
		
		HashMap<String, Object> parentMap = null;
		if(outputMap.containsKey("TUSV010101SC"))
		{
			parentMap = (HashMap<String, Object>)outputMap.get("TUSV010101SC");
		}
		
		/**
		 * 取得データ件数チェック
		 */
		// 検索エラー取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg("TUSV010101SC", outputMap);
		
		if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			//0件の場合
			String[] msgRpl = new String[]{"電話帳申込", "電話帳申込情報"};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0300_KW, msgRpl);
			
			setTransferPageId("TUW018010PJP");
			
			return true;
		}
		else if(parentMap.containsKey("ETU0081B019CBSMsg1List"))
		{
			//最大件数を超えた場合、メッセージ出力
			if(JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
			{
				String[] msgRpl = new String[]{JCCWebCommon.getSearchConst(SEARCH_MAX_SHOW_CNT),"全件の表示"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB5980__I, msgRpl);
			}
			
			/**
			 * 一覧表示フラグ設定処理
			 */
			bean.sendMessageString(TUW01806SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.LIST_DISP_FLG_TRUE);
			
			/**
			 * 明細表示形式設定処理
			 */
			setDispStyle(bean);
			
			/**
			 * セッション引継情報の保持
			 */
			saveSessionSearchInfo();
			
			/**
			 * 明細ラジオボタンの初期値設定
			 */
			setDispRadio(bean);
		}
		
		/**
		 * DataBean設定処理
		 */
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW01806, JTUScreenConst.SCREEN_NAME_TUW01806);
		
		return true;
	}
	
	/**
	 * 詳細遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_detail() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		/**
		 * DataBean設定処理
		 */
		saveSelectedInfo();
		
		JTUWebCommon.setScreenId(this, JTUScreenConst.SCREEN_ID_TUW01805, JTUScreenConst.SCREEN_ID_TUW01806);
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW01805, JTUScreenConst.SCREEN_NAME_TUW01805);
		
		return true;
	}
	
	/**
	 * 戻る遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_back() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		/**
		 * DataBean設定処理
		 */
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUWebCommon.getScreenId(this), "");
		
		return true;
	}
	
	
	/**
	 * 選択された情報をセッションに保持
	 */
	private void saveSelectedInfo()
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		X31SDataBeanAccessArray beanList = bean.getDataBeanArray(TUW01806SFConst.ETU0081B019CBSMSG1LIST);
		
		X31SDataBeanAccess childbean = null;
		
		String tmp = bean.sendMessageString(TUW01806SFConst.CHOICE, X31CWebConst.DATABEAN_GET_VALUE);
		
		int i = Integer.parseInt(tmp);
		
		childbean = beanList.getDataBean(i);
		
		/**
		 * セッション設定処理
		 */
		// 引き継ぎ情報を格納するMAP
		HashMap<String, Object> hktgiMap = new HashMap<String, Object>();
		// 検索条件の保持
		hktgiMap.put(TUW01805SFConst.SVC_KEI_NO_HD
				, childbean.sendMessageString(TUW01806SFConst.SVC_KEI_NO_DISP_01, X31CWebConst.DATABEAN_GET_VALUE));
		hktgiMap.put(TUW01805SFConst.NTT_TELNO_HD
				, childbean.sendMessageString(TUW01806SFConst.NTT_TELNO_01, X31CWebConst.DATABEAN_GET_VALUE));
		hktgiMap.put(TUW01805SFConst.DNWACHO_MSKM_NO
				, childbean.sendMessageString(TUW01806SFConst.DNWACHO_MSKM_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
		hktgiMap.put(TUW01805SFConst.GENE_ADD_DTM
				, childbean.sendMessageString(TUW01806SFConst.GENE_ADD_DTM_01, X31CWebConst.DATABEAN_GET_VALUE));
		
		/**
		 * 引継情報の設定
		 */
		JCCWebCommon.setScreenInfo(this, JTUScreenConst.SCREEN_ID_TUW01805, hktgiMap);
		
		/*
		 * 履歴一覧画面にも選択情報を保持（再検索後、選択された情報を初期表示にて選択するため）
		 */
		HashMap<String, Object> listhktgiMap = JCCWebCommon.getScreenInfo(this);
		
		listhktgiMap.put(TUW01806SFConst.DNWACHO_MSKM_NO, 
				childbean.sendMessageString(TUW01806SFConst.DNWACHO_MSKM_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
		listhktgiMap.put(TUW01806SFConst.GENE_ADD_DTM, 
				childbean.sendMessageString(TUW01806SFConst.GENE_ADD_DTM_01, X31CWebConst.DATABEAN_GET_VALUE));
		
		JCCWebCommon.setScreenInfo(this, JTUScreenConst.SCREEN_ID_TUW01806, listhktgiMap);
	}
	
	/**
	 * 表示形式を設定
	 * @param bean
	 * @param msgListName
	 * @param rowStyleName
	 */
	private void setDispStyle(X31SDataBeanAccess bean)
	{
		X31SDataBeanAccessArray listDataBean = bean.getDataBeanArray(TUW01806SFConst.ETU0081B019CBSMSG1LIST);
		int len = listDataBean.getCount();
		X31SDataBeanAccess childBean = null;
		String tmp = "";
		for(int i = 0; i < len; i++)
		{
			childBean = listDataBean.getDataBean(i);
			tmp = childBean.sendMessageString(TUW01806SFConst.DNWACHO_KISAI_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			if(JTUStrConst.DNWACHO_KISAI_CD_NON.equals(tmp))
			{
				childBean.sendMessageString(TUW01806SFConst.DNWACHO_KISAI_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.UM_NON_JP);
			}
			else
			{
				childBean.sendMessageString(TUW01806SFConst.DNWACHO_KISAI_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.UM_YK_JP);
			}
			tmp = "";
			tmp = childBean.sendMessageString(TUW01806SFConst.DNWACHO_MSKM_STAT_01, X31CWebConst.DATABEAN_GET_VALUE);
			if(JTUStrConst.TDIS_SEND_STAY.equals(tmp))
			{
				childBean.sendMessageString(TUW01806SFConst.DNWACHO_MSKM_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.MI_JP);
			}
			else
			{
				childBean.sendMessageString(TUW01806SFConst.DNWACHO_MSKM_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.ZUMI_JP);
			}
			tmp = "";
			tmp = childBean.sendMessageString(TUW01806SFConst.TDIS_INFO_CHK_FLG_01, X31CWebConst.DATABEAN_GET_VALUE);
			if(JTUStrConst.MIZUMI_MI.equals(tmp))
			{
				childBean.sendMessageString(TUW01806SFConst.TDIS_INFO_CHK_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.MI_JP);
			}
			else
			{
				childBean.sendMessageString(TUW01806SFConst.TDIS_INFO_CHK_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.ZUMI_JP);
			}
		}
	}
	
	/**
	 * 検索条件をセッションに保持
	 */
	private void saveSessionSearchInfo()
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		/**
		 * セッション設定処理
		 */
		// 引き継ぎ情報を格納するMAP
		HashMap<String, Object> hktgiMap = new HashMap<String, Object>();
		
		hktgiMap.put(TUW01806SFConst.SVC_KEI_NO_HD, 
				bean.sendMessageString(TUW01806SFConst.SVC_KEI_NO_HD, X31CWebConst.DATABEAN_GET_VALUE));
		
		hktgiMap.put(TUW01806SFConst.NTT_TELNO_HD, 
				bean.sendMessageString(TUW01806SFConst.NTT_TELNO_HD, X31CWebConst.DATABEAN_GET_VALUE));
		
		hktgiMap.put(TUW01806SFConst.HOJIN_KOJIN_CD, 
				bean.sendMessageString(TUW01806SFConst.HOJIN_KOJIN_CD, X31CWebConst.DATABEAN_GET_VALUE));
		
		hktgiMap.put(TUW01806SFConst.SVC_KEI_UCWK_NO, 
				bean.sendMessageString(TUW01806SFConst.SVC_KEI_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));
		
		hktgiMap.put(TUW01806SFConst.HJIN_EO_YKAE_SVKEI_NO, 
				bean.sendMessageString(TUW01806SFConst.HJIN_EO_YKAE_SVKEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		
		hktgiMap.put(TUW01806SFConst.NTT_TELNO, 
				bean.sendMessageString(TUW01806SFConst.NTT_TELNO, X31CWebConst.DATABEAN_GET_VALUE));
		
		hktgiMap.put(TUW01806SFConst.BMP_KOJI_FIX_YMD, 
				bean.sendMessageString(TUW01806SFConst.BMP_KOJI_FIX_YMD, X31CWebConst.DATABEAN_GET_VALUE));
		
		/**
		 * 引継情報の設定
		 */
		JCCWebCommon.setScreenInfo(this, JTUScreenConst.SCREEN_ID_TUW01806, hktgiMap);
	}
	
	/**
	 * 選択された情報が存在すれば選択ラジオボタンの初期値設定
	 * @param bean
	 */
	private void setDispRadio(X31SDataBeanAccess bean)
	{
		
		String key = bean.sendMessageString(TUW01806SFConst.DNWACHO_MSKM_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String key2 = bean.sendMessageString(TUW01806SFConst.GENE_ADD_DTM, X31CWebConst.DATABEAN_GET_VALUE);
		String str = "0";
		
		if(JTUWebCommon.isNull(key) || JTUWebCommon.isNull(key2))
		{
			bean.sendMessageString(TUW01806SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, str);
			return;
		}
		
		X31SDataBeanAccessArray listDataBean = bean.getDataBeanArray(TUW01806SFConst.ETU0081B019CBSMSG1LIST);
		int len = listDataBean.getCount();
		X31SDataBeanAccess childBean = null;
		String tmp = "";
		String tmp2 = "";
		for(int i = 0; i < len; i++)
		{
			childBean = listDataBean.getDataBean(i);
			tmp = childBean.sendMessageString(TUW01806SFConst.DNWACHO_MSKM_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
			tmp2 = childBean.sendMessageString(TUW01806SFConst.GENE_ADD_DTM_01, X31CWebConst.DATABEAN_GET_VALUE);
			if(key.equals(tmp) && key2.equals(tmp2))
			{
				str = String.valueOf(i);
				break;
			}
		}
		
		bean.sendMessageString(TUW01806SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(str));
		return;
	}
}
	
