/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：TUW02402SFLogic
*	ソースファイル名：TUW02402SFLogic.java
*	作成者			：FJ
*	日付			：2011年06月28日
*＜機能概要＞
*	VIEWロジッククラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2011/06/28	FJ)宮本		新規作成
*
**********************************************************************/

package eo.web.webview.TUW02402SF;

import java.util.ArrayList;
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 eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.TUW02401SF.TUW02401SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JTUScreenConst;
import eo.web.webview.common.JTUWebCommon;
import eo.web.webview.mapping.TUSV0020_TUSV0020OPDBMapper;
import eo.web.webview.mapping.TUSV0021_TUSV0021OPDBMapper;


/**
 * TUW02402のビューロジック
 * @author FJ
 *
 */
public class TUW02402SFLogic extends JCCWebBusinessLogic
{
	
	/**
	 * 初期表示ユースケースID
	 */
	private static final String INIT_USECASE_ID = "TUSV0021";
	
	/**
	 * 初期表示SCタイトル01
	 */
	private static final String INIT_SC_TITLE01 = "TUSV002101SC";
	/**
	 * 初期表示SCタイトル02
	 */
	private static final String INIT_SC_TITLE02 = "TUSV002102SC";
	/**
	 * 初期表示SCタイトル03
	 */
	private static final String INIT_SC_TITLE03 = "TUSV002103SC";
	
	/**
	 * 登録ユースケースID
	 */
	private static final String ADD_USECASE_ID = "TUSV0020";
	
	
	/**
	 * リスト最大検索件数
	 */
	private static final String LIST_MAX_SHOW_CNT = "TUW02402_LIST_MAX_SHOW_CNT";
	
	/** メッセージ置換文字列  */
	private static final 	String[] MESSAGE_VALUE = {"申込事業所の登録"};
	
	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_init() throws Exception
	{
		return tuw02402_init();
	}
	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean tuw02402_init() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
								, X31CWebConst.DATABEAN_SET_VALUE, JTUScreenConst.SCREEN_NAME_TUW02402);

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		/**
		 * DataBean設定処理
		 */
		// 戻るボタンの表示要否判定
		bean.sendMessageString(TUW02402SFConst.BACK_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE
				, JTUWebCommon.getBackDispFlg(this, this.getGamenId()));
		
		/**
		 * サービス呼出処理
		 */
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, INIT_USECASE_ID);
		
		// マッピングクラスのインスタンスを生成
		TUSV0021_TUSV0021OPDBMapper mapper = new TUSV0021_TUSV0021OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		

		// オペレーション日付取得
		String opeDate = JCCWebCommon.getOpeDate(this, null); 
		// 上りマッピングクラスの呼び出し
		mapper.setTUSV002101SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1, opeDate);
		mapper.setTUSV002102SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setTUSV002103SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1, opeDate);
		
		// 一覧照会共通部設定
		((HashMap<String, Object>)inputMap.get(INIT_SC_TITLE02)).put("search_type", JPCModelConstant.SAERCH_TYPE_IKT);
		((HashMap<String, Object>)inputMap.get(INIT_SC_TITLE02)).put("max_search_num", JCCWebCommon.getSearchConst(LIST_MAX_SHOW_CNT));

		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JTUWebCommon.setMessageInfo(this, msgResult);
			
			setTransferPageId(JTUWebCommon.getScreenId(this) + "0PJP");
			
			return true;
		}
		
		/**
		 * サービス処理結果の取得
		 */
		// 下りマッピングクラスの呼び出し
		mapper.getTUSV002101SC(paramBean, outputMap);
		mapper.getTUSV002102SC(paramBean, outputMap);
		mapper.getTUSV002103SC(paramBean, outputMap);
		
		JTUWebCommon.setListNo(bean, TUW02402SFConst.MSKM_JIGSHO_CD_LIST, TUW02402SFConst.CD_NM_01);
		JTUWebCommon.setListNo(bean, TUW02402SFConst.TSJGS_CD_LIST, TUW02402SFConst.CD_NM_01);
		JTUWebCommon.setListNo(bean, TUW02402SFConst.CHOHYO_OPUT_CD_LIST, TUW02402SFConst.CD_NM_01);
		
		// セッション情報取得
		JTUWebCommon.getScreenInfo(this);
		
		// コードからリストのインデックスを設定
		JTUWebCommon.setListIndex(bean, TUW02402SFConst.MSKM_JIGSHO_CD_LIST, TUW02402SFConst.INDEX_01
				, TUW02402SFConst.CD_01, TUW02402SFConst.MSKM_JIGSHO_SBT_CD);
		
		return true;
	}
	
	/**
	 * 登録確認遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_cfm() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		setBeanUpdateInfo(bean);
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		/**
		 * サービス呼出処理
		 */
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, ADD_USECASE_ID);
		
		// マッピングクラスのインスタンスを生成
		TUSV0020_TUSV0020OPDBMapper mapper = new TUSV0020_TUSV0020OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// 上りマッピングクラスの呼び出し
		mapper.setTUSV002001SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setTUSV002002SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setTUSV002003SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		
		
		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);	
		// エラー処理 
		if(msgResult != null)
		{
			JTUWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		/**
		 * DataBean設定処理
		 */
		JTUWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, MESSAGE_VALUE);
		JCCWebCommon.setMessageAreaBackColor(this, "1");
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW02403, JTUScreenConst.SCREEN_NAME_TUW02403);
		
		return true;
		
	}
	
	/**
	 * 入力内容を設定
	 * @param bean
	 */
	private void setBeanUpdateInfo(X31SDataBeanAccess bean)
	{
		
		// 申込事業所種別コードの設定
		JTUWebCommon.setListSelectedValue(bean, TUW02402SFConst.MSKM_JIGSHO_SBT_CD
				, TUW02402SFConst.MSKM_JIGSHO_CD_LIST, TUW02402SFConst.INDEX_01, TUW02402SFConst.CD_01);
		JTUWebCommon.setListSelectedValue(bean, TUW02402SFConst.MSKM_JIGSHO_SBT_CD_NM
				, TUW02402SFConst.MSKM_JIGSHO_CD_LIST, TUW02402SFConst.INDEX_01, TUW02402SFConst.CD_NM_01);

		// 通信事業者コードの設定
		JTUWebCommon.setListSelectedValue(bean, TUW02402SFConst.TSJGS_CD
				, TUW02402SFConst.TSJGS_CD_LIST, TUW02402SFConst.INDEX_01, TUW02402SFConst.CD_01);
		JTUWebCommon.setListSelectedValue(bean, TUW02402SFConst.TSJGS_NM
				, TUW02402SFConst.TSJGS_CD_LIST, TUW02402SFConst.INDEX_01, TUW02402SFConst.CD_NM_01);

		// 帳票出力環境識別コードの設定
		JTUWebCommon.setListSelectedValue(bean, TUW02402SFConst.CHOHYO_OPUT_ENV_SKBT_CD
				, TUW02402SFConst.CHOHYO_OPUT_CD_LIST, TUW02402SFConst.INDEX_01, TUW02402SFConst.CD_01);
		JTUWebCommon.setListSelectedValue(bean, TUW02402SFConst.CHOHYO_OPUT_ENV_SKBT_CD_NM
				, TUW02402SFConst.CHOHYO_OPUT_CD_LIST, TUW02402SFConst.INDEX_01, TUW02402SFConst.CD_NM_01);

		
	}
	
	/**
	 * 戻る遷移処理
	 * @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;
	}
	
	
	/**
	 * 確定遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_fix() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		setBeanUpdateInfo(bean);
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		/**
		 * サービス呼出処理
		 */
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, ADD_USECASE_ID);
		
		// マッピングクラスのインスタンスを生成
		TUSV0020_TUSV0020OPDBMapper mapper = new TUSV0020_TUSV0020OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// 上りマッピングクラスの呼び出し
		mapper.setTUSV002001SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setTUSV002002SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setTUSV002003SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);	
		// エラー処理 
		if(msgResult != null)
		{
			JTUWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		/**
		 * DataBean設定処理
		 */
		JTUWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0380__I, MESSAGE_VALUE);
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW02404, JTUScreenConst.SCREEN_NAME_TUW02404);
		
		return true;
		
	}
	
	/**
	 * 修正遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_shusei() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		/**
		 * DataBean設定処理
		 */
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW02402, JTUScreenConst.SCREEN_NAME_TUW02402);
		
		return true;
	}
	
	/**
	 * 完了遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_fin() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		//サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 戻り先IDの取得
		String backScreenId = JTUWebCommon.getScreenId(this);
		
		// 戻り先IDの有無で遷移先の判定を行う。
		if (JTUWebCommon.isNull(backScreenId) 
				|| JTUScreenConst.SCREEN_ID_TUW02402.equals(backScreenId))
		{
			// 登録画面へ遷移する
			// Beanクリア処理
			ArrayList<String> keyList = new ArrayList<String>();
			
			keyList.add(TUW02402SFConst.MSKM_JIGSHO_NO);
			keyList.add(TUW02402SFConst.MSKM_JIGSHONM);
			keyList.add(TUW02402SFConst.MSKM_JIGSHO_TNTSHA_NM);
			keyList.add(TUW02402SFConst.SEND_UPPLNO);
			keyList.add(TUW02402SFConst.MKM_JIGSHO_TNTSHA_RRKS_TLN);
			keyList.add(TUW02402SFConst.MKM_JIGSHO_TNTSHA_FAX_NO);
			keyList.add(TUW02402SFConst.KOPT_RRK_MDGC_TELNO);
			keyList.add(TUW02402SFConst.KOPT_RRK_MDGC_FAX_NO);
			
			JTUWebCommon.clearTxtBean(bean, keyList);
			
			// 初期処理実行
			tuw02402_init();
			
			// 遷移先の情報を共有フォームBeanの項目に設定する。
			JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW02402, JTUScreenConst.SCREEN_NAME_TUW02402);
		}
		else
		{
			// 戻り先IDに遷移する
			if(JTUScreenConst.SCREEN_ID_TUW02401.equals(backScreenId))
			{
				/**
				 * セッション設定処理
				 */
				// 引き継ぎ情報を格納するMAP
				HashMap<String, Object> hktgiMap = JTUWebCommon.getScreenInfo(this, JTUScreenConst.SCREEN_ID_TUW02401);
				
				hktgiMap.put(TUW02401SFConst.MSKM_JIGSHO_NO, 
						bean.sendMessageString(TUW02402SFConst.MSKM_JIGSHO_NO, X31CWebConst.DATABEAN_GET_VALUE));
				
				/**
				 * 引継情報の設定
				 */
				JTUWebCommon.setScreenInfo(this, JTUScreenConst.SCREEN_ID_TUW02401, hktgiMap);
				
			}
			
			/**
			 * DataBean設定処理
			 */
			// 遷移先の情報を共有フォームBeanの項目に設定する。
			JTUWebCommon.setNextScreenInfo(commoninfoBean, backScreenId, "");
		}
		
		return true;
	}

}

