/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：KKW14004SFLogic
 *   ソースファイル名：KKW14004SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2016年11月10日
 *＜機能概要＞
 *   スマートバリュー情報引継画面 Viewロジックです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *	v27.00.00	 2016/11/10	  FJ)原田	  新規作成【ANK-2862-00-00】スマートバリューコード引継　機能の実装＜随時削減策＞
 *	v27.01.00	 2016/11/16	  FJ)江藤	  【IT1-2016-0000162】メッセージ表示対応
 *
 **********************************************************************/

package eo.web.webview.KKW14004SF;


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 eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
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.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0851_KKSV0851OPDBMapper;
import eo.web.webview.mapping.KKSV0852_KKSV0852OPDBMapper;
import eo.web.webview.mapping.KKSV0853_KKSV0853OPDBMapper;

/**
 * スマートバリュー情報引継を行います。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW14004SFLogic extends JCCWebBusinessLogic
{
	/** リターンコード 正常 */
	private static final String RETURN_CD_NORMAL = "0000";
	
	/** 詳細コード 引継元ネットサービス契約チェック */
	private static final String DTAIL_CD_E01 = "E01";
	
	/** 詳細コード SYSID一致チェック */
	private static final String DTAIL_CD_E02 = "E02";
	
	/** 詳細コード 引継元スマートバリュー存在チェック */
	private static final String DTAIL_CD_E03 = "E03";
	
	/** 詳細コード 引継元スマートバリュー適用済チェック */
	private static final String DTAIL_CD_E04 = "E04";
	
	/** 詳細コード 引継元スマートバリュー全解約チェック */
	private static final String DTAIL_CD_E05 = "E05";
	
	/** 詳細コード 引継先ネットサービス契約チェック */
	private static final String DTAIL_CD_E06 = "E06";
	
	/** 詳細コード 引継先ネットサービス契約状態チェック */
	private static final String DTAIL_CD_E07 = "E07";
	
	/** 詳細コード 引継先eo光ネット料金プラン体系識別コードチェック */
	private static final String DTAIL_CD_E08 = "E08";
	
	/** 詳細コード 引継先ネットスマートバリュー未存在チェック */
	private static final String DTAIL_CD_E09 = "E09";
	
	/** 詳細コード 引継先電話スマートバリュー未存在チェック */
	private static final String DTAIL_CD_E10 = "E10";
	
	/** 詳細コード 引継先光電話サービス契約状態チェック */
	private static final String DTAIL_CD_E11 = "E11";
	
	/** 詳細コード 引継元ネット住所変更中チェック */
	private static final String DTAIL_CD_E12 = "E12";
	
	/** 詳細コード 引継元電話住所変更中チェック */
	private static final String DTAIL_CD_E13 = "E13";
	
	/** 詳細コード 引継先ネット住所変更中チェック */
	private static final String DTAIL_CD_E14 = "E14";
	
	/** 詳細コード 引継先電話住所変更中チェック */
	private static final String DTAIL_CD_E15 = "E15";
	
	/** 詳細コード 引継先ネット排他チェック */
	private static final String DTAIL_CD_E91 = "E91";
	
	/** 詳細コード 引継先光電話サービス追加要チェック */
	private static final String DTAIL_CD_W01 = "W01";

	/**
	 * 初期表示処理<br>
	 * 
	 * @return 正常の場合は true、そうでない場合は false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionInit() throws Exception
	{
		// 引継情報MAPの取得
		JCCWebCommon.getScreenInfo(this);
		
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();
		
		// マッピング用paramBeanセット
		X31SDataBeanAccess[] paramBean = { serviceFormBean };
		
		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// ユースケースID格納用マップに情報を設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   JKKCommonConst.UCID_KKSV0851);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0851OP);
		
		// 条件格納用マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		// 処理結果格納用マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// マッピングクラス
		KKSV0851_KKSV0851OPDBMapper mapper = new KKSV0851_KKSV0851OPDBMapper();
		
		// 上りマッピング
		mapper.setKKSV085101SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2, JCCWebCommon.getOpeDate(this, null));
		
		// サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// 下りマッピング
		mapper.getKKSV085101SC(paramBean, outputMap);
		
		// 検索ボタンを活性化
		serviceFormBean.sendMessageString(KKW14004SFConst.SEARCH_BTN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "false");
		
		// 登録確認ボタンを非活性化
		serviceFormBean.sendMessageString(KKW14004SFConst.ADD_CFM_BTN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "true");
		
		// 次画面情報セット
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14004);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14004);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}

	/**
	 * 検索ボタン押下処理<br>
	 * 
	 * @return 正常の場合は true、そうでない場合は false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionSearch() throws Exception
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();
		
		// マッピング用paramBeanセット
		X31SDataBeanAccess[] paramBean = { serviceFormBean };
		
		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// ユースケースID格納用マップに情報を設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   JKKCommonConst.UCID_KKSV0852);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0852OP);
		
		// 条件格納用マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		// 処理結果格納用マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// マッピングクラス
		KKSV0852_KKSV0852OPDBMapper mapper = new KKSV0852_KKSV0852OPDBMapper();
		
		// 上りマッピング
		mapper.setKKSV085201SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2, JCCWebCommon.getOpeDate(this, null));
		mapper.setKKSV085202SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		
		// サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// 下りマッピング
		mapper.getKKSV085201SC(paramBean, outputMap);
		mapper.getKKSV085202SC(paramBean, outputMap);
		mapper.getKKSV085203SC(paramBean, outputMap);
		
		// ＳＹＳＩＤ（引継元）が設定されている場合、検索結果が取得できたと判定する
		String motoSysid = serviceFormBean.sendMessageString(KKW14004SFConst.MOTO_SYSID, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 検索結果が取得できた場合
		if(!JKKStringUtil.isNullBlank(motoSysid))
		{
			//検索ボタン表示区分 非活性化
			serviceFormBean.sendMessageString(KKW14004SFConst.SEARCH_BTN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "true");
			
			//登録確認ボタン表示区分 活性化
			serviceFormBean.sendMessageString(KKW14004SFConst.ADD_CFM_BTN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "false");
		}
		// 検索結果が取得できなかった場合
		else
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0300_KW, new String[]{ "サービス契約", "お客さまID"});
		}
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}

	/**
	 * リセットボタン押下処理<br>
	 * 
	 * @return 正常の場合は true、そうでない場合は false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionReset() throws Exception 
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();
		
		// 引継元表示項目をクリア
		serviceFormBean.sendMessageString(KKW14004SFConst.MOTO_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW14004SFConst.MOTO_SYSID, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW14004SFConst.MOTO_CUST_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW14004SFConst.MOTO_PRC_GRP_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW14004SFConst.MOTO_PPLAN_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW14004SFConst.MOTO_SVC_KEI_STAT_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW14004SFConst.KDDI_VAL_CD, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW14004SFConst.KDDI_JGS_KEI_KANRI_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW14004SFConst.TAJGS_WRIB_KEI_CNC_YMD, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW14004SFConst.TAJGS_WRIB_KEI_DSL_YMD, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW14004SFConst.TAJGS_TCH_YOKSI_UM, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW14004SFConst.EOHNT_DSL_TAJGS_TCH_YMD, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW14004SFConst.EOHTL_DSL_TAJGS_TCH_YMD, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW14004SFConst.PPCHG_TAJGS_TCH_YMD, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// 初期表示処理を呼び出す
		actionInit();
		
		return true;
	}

	/**
	 * 戻るボタン押下処理<br>
	 * 
	 * @return 正常の場合は true、そうでない場合は false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionBack() throws Exception 
	{
		// 遷移先情報の設定
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}

	/**
	 * 登録確認ボタン押下処理<br>
	 * 
	 * @return 正常の場合は true、そうでない場合は false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionAddCfm() throws Exception 
	{
		// チェックのみでスマートバリュー情報引継処理呼出
		boolean result = executeSmtvlInfHktgi(JPCModelConstant.FUNC_CD_2);
		
		if (result)
		{
			// 共有フォームBeanのアクセスクラスを取得
			X31SDataBeanAccess commonBean = super.getCommonInfoBean();
			// 次画面情報のセット
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14005);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14005);
		}
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return result;

	}

	/**
	 * 確定ボタン押下処理<br>
	 * 
	 * @return 正常の場合は true、そうでない場合は false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionFix() throws Exception 
	{
		// チェック＆登録でスマートバリュー情報引継処理呼出
		boolean result = executeSmtvlInfHktgi(JPCModelConstant.FUNC_CD_1);
		
		if (result)
		{
			// 共有フォームBeanのアクセスクラスを取得
			X31SDataBeanAccess commonBean = super.getCommonInfoBean();
			
			// 次画面情報のセット
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14006);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14006);
		}
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * 修正ボタン押下処理<br>
	 * 
	 * @return 正常の場合は true、そうでない場合は false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionShusei() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		// 次画面情報のセット
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14004);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14004);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 完了ボタン押下処理<br>
	 * 
	 * @return 正常の場合は true、そうでない場合は false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionFin() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		// 次画面情報のセット
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00145);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00145);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}

	/**
	 * スマートバリュー情報引継処理<br>
	 * 
	 * @param funcCd 機能コード
	 * @return チェックエラーがない場合は true、そうでない場合は false
	 * @throws Exception 例外が発生した場合
	 */
	private boolean executeSmtvlInfHktgi(String funcCd) throws Exception
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceFormBean = super.getServiceFormBean();
		
		// マッピング用paramBeanセット
		X31SDataBeanAccess[] paramBean = { serviceFormBean };
		
		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// ユースケースID格納用マップに情報を設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0853);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0853OP);
		
		// 条件格納用マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		// 処理結果格納用マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// マッピングクラス
		KKSV0853_KKSV0853OPDBMapper mapper = new KKSV0853_KKSV0853OPDBMapper();
		
		// 上りマッピング
		inputMap = mapper.setKKSV085301CC(paramBean, inputMap, funcCd);
		
		// サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// サービス実行結果の取得
		HashMap<String, Object> kKSV085301CCResult = (HashMap<String, Object>)outputMap.get("KKSV085301CC");
		
		// スマートバリュー情報引継CCのリターンコード、詳細コードを取得
		String returnCd = (String)kKSV085301CCResult.get("return_cd");
		String dtaiCd = (String)kKSV085301CCResult.get("dtail_cd");
		
		// IT1-2016-0000162 メッセージ追加 2016/11/16 ADD START
		if(RETURN_CD_NORMAL.equals(returnCd))
		{
			if(JPCModelConstant.FUNC_CD_2.equals(funcCd))
			{
				// 登録確認の場合、確認メッセージ表示
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKK0370__I, new String[]{ "スマートバリュー情報引継"});
			}
			else
			{
				// 確定の場合、完了メッセージ表示
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, new String[]{ "スマートバリュー情報引継"});
			}
		}
		// IT1-2016-0000162 メッセージ追加 2016/11/16 ADD END
		
		// 詳細コードをもとにメッセージ情報を設定
		dtailCdToMessageInfo(dtaiCd);
		
		// リターンコードが正常以外をエラーとする
		if(!RETURN_CD_NORMAL.equals(returnCd))
		{
			return false;
		}
		
		return true;
	}
	
	/**
	 * 詳細コードをもとにメッセージ情報を設定します<br>
	 * 
	 * @param dtaiCd 詳細コード
	 */
	private void dtailCdToMessageInfo(String dtaiCd)
	{
		if(DTAIL_CD_E01.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE390_KW);
		}
		else if(DTAIL_CD_E02.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE400_KW);
		}
		else if(DTAIL_CD_E03.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE410_KW);
		}
		else if(DTAIL_CD_E04.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE410_KW);
		}
		else if(DTAIL_CD_E05.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE410_KW);
		}
		else if(DTAIL_CD_E06.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE420_KW);
		}
		else if(DTAIL_CD_E07.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE430_KW);
		}
		else if(DTAIL_CD_E08.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE440_KW);
		}
		else if(DTAIL_CD_E09.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE450_KW);
		}
		else if(DTAIL_CD_E10.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE460_KW);
		}
		else if(DTAIL_CD_E11.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE470_KW);
		}
		else if(DTAIL_CD_E12.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE480_KW);
		}
		else if(DTAIL_CD_E13.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE490_KW);
		}
		else if(DTAIL_CD_E14.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE500_KW);
		}
		else if(DTAIL_CD_E15.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE510_KW);
		}
		else if(DTAIL_CD_E91.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB6510_KW);
		}
		else if(DTAIL_CD_W01.equals(dtaiCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE520__I);
		}
	}
}
