/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：契約管理システム
 *   モジュール名    ：解約レター再発行・更新画面
 *   ソースファイル名：KKW21812SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2017年09月30日
 *＜機能概要＞
 *   解約レター再発行・更新画面を表示する。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v33.00.00   2017/09/30   FJ）原田    新規作成【ANK-3251-00-00】
 **********************************************************************/
package eo.web.webview.KKW21812SF;

import java.util.HashMap;

import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKStringUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0873_KKSV0873OPDBMapper;
import eo.web.webview.mapping.KKSV0874_KKSV0874OPDBMapper;

/**
 * 解約レター登録画面を表示する。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW21812SFLogic extends JCCWebBusinessLogic
{
	/** 処理区分キー **/
	public static final String TRAN_DIV = "key_tran";
	
	/** 処理区分:更新/照合ボタンの場合 **/
	public static final String TRAN_DIV_UPDSHOG = "1";
	
	/** 処理区分:再発行ボタンの場合 **/
	public static final String TRAN_DIV_SAIHAKKO = "3";
	
	
	/**
	 * 初期表示処理を行います。<br>
	 * <br>
	 * @return	true:正常
	 * @throws	Exception
	 */
	public boolean actionInit() throws Exception
	{

		// 引き継ぎ情報のMAPを取得
		HashMap<String, Object> screenInfo = JCCWebCommon.getScreenInfo(this);
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = { bean };

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfBean = getCommonInfoBean();

		// 処理区分の情報取得
		if (TRAN_DIV_UPDSHOG.equals(screenInfo.get(TRAN_DIV)))
		{
			// 処理種別：更新／照合
			paramBean[0].sendMessageString(KKW21812SFConst.SHORI_DIV, X31CWebConst.DATABEAN_SET_VALUE, TRAN_DIV_UPDSHOG);
			paramBean[0].sendMessageString(KKW21812SFConst.SHORI_DIV_NM, X31CWebConst.DATABEAN_SET_VALUE, "更新／照合");
		}
		else if(TRAN_DIV_SAIHAKKO.equals(screenInfo.get(TRAN_DIV)))
		{
			// 処理種別：再発行
			paramBean[0].sendMessageString(KKW21812SFConst.SHORI_DIV, X31CWebConst.DATABEAN_SET_VALUE, TRAN_DIV_SAIHAKKO);
			paramBean[0].sendMessageString(KKW21812SFConst.SHORI_DIV_NM, X31CWebConst.DATABEAN_SET_VALUE, "再発行");
		}
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0873_KKSV0873OPDBMapper mapper = new KKSV0873_KKSV0873OPDBMapper();
		// 変数の定義
		HashMap<String, Object> paramMap  = new HashMap<String, Object>();
		
		HashMap<String, Object> inputMap  = new HashMap<String, Object>();
		HashMap<String, Object> outputMap  = new HashMap<String, Object>();
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0873");
		
		mapper.setKKSV087301CC(paramBean, inputMap, screenInfo);
		
		invokeService(paramMap, inputMap, outputMap);
		
		mapper.getKKSV087301CC(paramBean, outputMap);
		
		
		// *************************************************************
		// 解約レターコメント備考コードリスト設定
		// *************************************************************
		X31SDataBeanAccessArray dsl_letter_comment_biko_cd_list = paramBean[0].getDataBeanArray(KKW21812SFConst.DSL_LETTER_COMMENT_BIKO_CD_LIST);
		X31SDataBeanAccess dsl_letter_comment_subbean = dsl_letter_comment_biko_cd_list.getDataBean(0);
		
		// コメント備考コードを取得
		String bikoCd = JKKStringUtil.nullToBlank(paramBean[0].sendMessageString(KKW21812SFConst.COMMENT_BIKO_CD, X31CWebConst.DATABEAN_GET_VALUE));
		
		String index = "";
		
		if ("".equals(bikoCd) || null == bikoCd)
		{
			index = "0";
		}
		else
		{
			// コメント備考コードが"0"から始まる場合、先頭の"0"を取り除く
			if(bikoCd.startsWith("0"))
			{
				index = bikoCd.replaceAll("0", "");
			}
			else
			{
				index = bikoCd;
			}
		}
		
		// 添え字の設定
		dsl_letter_comment_subbean.sendMessageString(KKW21812SFConst.INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, index);
		
		// 自画面の画面名を設定
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21812);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}


	/**
	 * 更新確認ボタン
	 * 
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean actionCfm() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = { bean };
		
		// 運用日付を取得
		String unyoYmd = JCCWebCommon.getOpeDate(this, null);
		
		// *************************************************************
		// 解約レター送付先住所選択リスト取得
		// *************************************************************
		X31SDataBeanAccessArray dsl_letter_sohus_state_choice_list = paramBean[0].getDataBeanArray(KKW21812SFConst.DSL_LETTER_SOHUS_STATE_CHOICE_LIST);
		X31SDataBeanAccess dsl_letter_sohus_subbean = dsl_letter_sohus_state_choice_list.getDataBean(0);
		// 添え字の取得
		String dsl_letter_sohus_index = dsl_letter_sohus_subbean.sendMessageString(KKW21812SFConst.INDEX_01, X31CWebConst.DATABEAN_GET_VALUE);
		// 添え字からコードを取得
		String dsl_letter_sohus_cd_value = dsl_letter_sohus_subbean.sendMessageString(KKW21812SFConst.CD_DIV_LIST_01, 
				X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(dsl_letter_sohus_index));
		// 添え字から名称を取得
		String dsl_letter_sohus_nm_value = dsl_letter_sohus_subbean.sendMessageString(KKW21812SFConst.CD_DIV_NM_LIST_01, 
				X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(dsl_letter_sohus_index));
		// 解約レター送付先住所コード＿選択＿選択の設定
		paramBean[0].sendMessageString(KKW21812SFConst.DSL_LETTER_SOHUS_STATE_NM_CD_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, dsl_letter_sohus_cd_value);
		// 解約レター送付先住所名称＿選択の設定
		paramBean[0].sendMessageString(KKW21812SFConst.DSL_LETTER_SOHUS_STATE_NM_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, dsl_letter_sohus_nm_value);

		// *************************************************************
		// 解約レターコメント備考コードリスト取得
		// *************************************************************
		X31SDataBeanAccessArray dsl_letter_comment_biko_cd_list = paramBean[0].getDataBeanArray(KKW21812SFConst.DSL_LETTER_COMMENT_BIKO_CD_LIST);
		X31SDataBeanAccess dsl_letter_comment_subbean = dsl_letter_comment_biko_cd_list.getDataBean(0);
		// 添え字の取得
		String dsl_letter_comment_index = dsl_letter_comment_subbean.sendMessageString(KKW21812SFConst.INDEX_01, X31CWebConst.DATABEAN_GET_VALUE);
		// 添え字からコードを取得
		String dsl_letter_comment_cd_value = dsl_letter_comment_subbean.sendMessageString(KKW21812SFConst.CD_DIV_LIST_01, 
				X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(dsl_letter_comment_index));
		// 添え字から名称を取得
		String dsl_letter_comment_nm_value = dsl_letter_comment_subbean.sendMessageString(KKW21812SFConst.CD_DIV_NM_LIST_01, 
				X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(dsl_letter_comment_index));
		//解約レターコメント備考コード＿選択＿選択の設定
		paramBean[0].sendMessageString(KKW21812SFConst.DSL_LETTER_COMMENT_BIKO_CD_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, dsl_letter_comment_cd_value);
		//解約レターコメント備考コード名称＿選択の設定
		paramBean[0].sendMessageString(KKW21812SFConst.DSL_LETTER_COMMENT_BIKO_CD_NM_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, dsl_letter_comment_nm_value);
		
		// *******************
		// 解約日付の取得
		// *******************
		// ネット−解約年月日の取得
		String netDslYmdYear = paramBean[0].sendMessageString(KKW21812SFConst.NET_DEL_YMD_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
		String netDslYmdMonth = paramBean[0].sendMessageString(KKW21812SFConst.NET_DEL_YMD_MON, X31CWebConst.DATABEAN_GET_VALUE);
		String netDslYmdDay = paramBean[0].sendMessageString(KKW21812SFConst.NET_DEL_YMD_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		
		String netDslYmd = netDslYmdYear + netDslYmdMonth + netDslYmdDay;
		paramBean[0].sendMessageString(KKW21812SFConst.NET_DEL_YMD, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(netDslYmd));
		
		
		// 電話−解約年月日の取得
		String telDslYmdYear = paramBean[0].sendMessageString(KKW21812SFConst.TEL_DEL_YMD_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
		String telDslYmdMonth = paramBean[0].sendMessageString(KKW21812SFConst.TEL_DEL_YMD_MON, X31CWebConst.DATABEAN_GET_VALUE);
		String telDslYmdDay = paramBean[0].sendMessageString(KKW21812SFConst.TEL_DEL_YMD_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		
		String telDslYmd = telDslYmdYear + telDslYmdMonth + telDslYmdDay;
		paramBean[0].sendMessageString(KKW21812SFConst.TEL_DEL_YMD, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(telDslYmd));
		
		
		// テレビ−解約年月日の取得
		String tvDslYmdYear = paramBean[0].sendMessageString(KKW21812SFConst.TV_DEL_YMD_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
		String tvDslYmdMonth = paramBean[0].sendMessageString(KKW21812SFConst.TV_DEL_YMD_MON, X31CWebConst.DATABEAN_GET_VALUE);
		String tvDslYmdDay = paramBean[0].sendMessageString(KKW21812SFConst.TV_DEL_YMD_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		
		String tvDslYmd = tvDslYmdYear + tvDslYmdMonth + tvDslYmdDay;
		paramBean[0].sendMessageString(KKW21812SFConst.TV_DEL_YMD, X31CWebConst.DATABEAN_SET_VALUE, JKKStringUtil.nullToBlank(tvDslYmd));
		
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0874_KKSV0874OPDBMapper mapper = new KKSV0874_KKSV0874OPDBMapper();
		// 変数の定義
		HashMap<String, Object> paramMap  = new HashMap<String, Object>();
		
		HashMap<String, Object> inputMap  = new HashMap<String, Object>();
		HashMap<String, Object> outputMap  = new HashMap<String, Object>();
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0874");
		
		mapper.setKKSV087401CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2, unyoYmd);
		
		invokeService(paramMap, inputMap, outputMap);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		// 自画面の画面名を設定
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21813);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21813);

		return true;
	}
	
	/**
	 * 確定ボタン押下処理
	 * 
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean actionAdd() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = { bean };
		
		// 運用日付を取得
		String unyoYmd = JCCWebCommon.getOpeDate(this, null);
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0874_KKSV0874OPDBMapper mapper = new KKSV0874_KKSV0874OPDBMapper();
		// 変数の定義
		HashMap<String, Object> paramMap  = new HashMap<String, Object>();
		
		HashMap<String, Object> inputMap  = new HashMap<String, Object>();
		HashMap<String, Object> outputMap  = new HashMap<String, Object>();
		
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0874");
		
		mapper.setKKSV087401CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1, unyoYmd);
		
		invokeService(paramMap, inputMap, outputMap);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		// 自画面の画面名を設定
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21814);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21814);

		return true;
	}
	
	/**
	 * 修正ボタン処理を行います。（解約レター再発行・更新画面、解約レター再発行・更新完了画面）<br>
	 * <br>
	 * @return	true:正常
	 * @throws	Exception
	 */
	public boolean moveToKkw21811() throws Exception
	{
		// 引き継ぎ情報のMAPを取得
		JCCWebCommon.getScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW21811);
		
		// 遷移先情報の設定 一覧画面 （解約レター検索画面）
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21811);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21811);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	/**
	 * 修正ボタン処理を行います。（解約レター再発行・更新確認画面）
	 * <br>
	 * @return true:正常
	 * @throws Exception
	 */
	public boolean moveToKkw21812() throws Exception
	{

		// 遷移先情報の設定 （解約レター再発行・更新確認画面）
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21812);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21812);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
}
