/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：KKW21701SFLogic
 *   ソースファイル名：KKW21701SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2017年07月19日
 *＜機能概要＞
 *   申込書イメージ付替登録画面 Viewロジックです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *	v33.00.00	 2017/07/19	  FJ)鈴木	  新規作成【ANK-3097-00-00】申込書イメージの付け替え　機能の実装＜随時削減策＞
 *
 **********************************************************************/

package eo.web.webview.KKW21701SF;


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.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.KKSV0865_KKSV0865OPDBMapper;
import eo.web.webview.mapping.KKSV0866_KKSV0866OPDBMapper;


/**
 * 申込書イメージ付替情報検索を行います。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW21701SFLogic extends JCCWebBusinessLogic
{
	
	/**
	 * 初期表示処理<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_KKSV0865);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0865OP);
		
		// 条件格納用マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		// 処理結果格納用マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// マッピングクラス
		KKSV0865_KKSV0865OPDBMapper mapper = new KKSV0865_KKSV0865OPDBMapper();
		
		// 上りマッピング
		mapper.setKKSV086501CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2, JCCWebCommon.getOpeDate(this, null));
		
		// サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// 下りマッピング
		mapper.getKKSV086501CC(paramBean, outputMap);
		
		// 検索ボタンを活性化
		serviceFormBean.sendMessageString(KKW21701SFConst.SEARCH_BTN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "false");
		
		// 登録確認ボタンを非活性化
		serviceFormBean.sendMessageString(KKW21701SFConst.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_KKW21701);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21701);
		
		// 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_KKSV0865);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0865OP);
		
		// 条件格納用マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		// 処理結果格納用マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// マッピングクラス
		KKSV0865_KKSV0865OPDBMapper mapper = new KKSV0865_KKSV0865OPDBMapper();
		
		// 上りマッピング
		mapper.setKKSV086501CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2, JCCWebCommon.getOpeDate(this, null));
		
		// サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// 下りマッピング
		mapper.getKKSV086501CC(paramBean, outputMap);
		
		// 処理結果コードを取得する
		String tranRsltCd = "0";
		HashMap parentMap = (HashMap)outputMap.get("KKSV086501CC");
		if (parentMap != null)
		{
			if (parentMap.containsKey("tran_rslt_cd"))
			{
				if (parentMap.get("tran_rslt_cd") != null)
				{
					tranRsltCd = (String)parentMap.get("tran_rslt_cd");
				}
			}
		}
		// 処理結果コードが"1"の場合：サービス契約存在チェックエラー
		if ("1".equals(tranRsltCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0300_KW, new String[]{ "サービス契約", "お客さまID"}, "in_moto_svc_kei_no");
			return false;
		}
		// 処理結果コードが"2"の場合：サービス契約番号‐受付番号紐付きチェックエラー
		if ("2".equals(tranRsltCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE760_KW, new String[]{ "お客さまID", "受付番号"}, "in_moto_svc_kei_no");
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE760_KW, new String[]{ "お客さまID", "受付番号"}, "in_moto_mskmsho_no");
			return false;
		}
		// 処理結果コードが"0"の場合：正常
		if ("0".equals(tranRsltCd))
		{
			//検索ボタン表示区分 非活性化
			serviceFormBean.sendMessageString(KKW21701SFConst.SEARCH_BTN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "true");
			
			//登録確認ボタン表示区分 活性化
			serviceFormBean.sendMessageString(KKW21701SFConst.ADD_CFM_BTN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "false");
		}
		// 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(KKW21701SFConst.MOTO_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW21701SFConst.MOTO_MSKMSHO_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW21701SFConst.MOTO_MSKM_FORM_CD_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW21701SFConst.MOTO_SYSID, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW21701SFConst.MOTO_CUST_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW21701SFConst.MOTO_PRC_GRP_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW21701SFConst.MOTO_PPLAN_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW21701SFConst.MOTO_SVC_KEI_STAT_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW21701SFConst.IN_MOTO_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
		serviceFormBean.sendMessageString(KKW21701SFConst.IN_MOTO_MSKMSHO_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// 初期表示処理を呼び出す
		actionInit();
		
		//検索ボタン表示区分 活性化
		serviceFormBean.sendMessageString(KKW21701SFConst.SEARCH_BTN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "false");
		
		//登録確認ボタン表示区分 非活性化
		serviceFormBean.sendMessageString(KKW21701SFConst.ADD_CFM_BTN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "true");
		
		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 
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// 次画面情報のセット
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21702);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21702);
		
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKK0370__I, new String[]{ "申込書イメージ付替登録"});
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}

	/**
	 * 確定ボタン押下処理<br>
	 * 
	 * @return 正常の場合は true、そうでない場合は false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionFix() throws Exception 
	{
		// チェック＆登録で申込書イメージ付替登録呼出
		boolean result = executeMskmImgChg(JPCModelConstant.FUNC_CD_1);
		
		if (result)
		{
			// 共有フォームBeanのアクセスクラスを取得
			X31SDataBeanAccess commonBean = super.getCommonInfoBean();
			
			// 次画面情報のセット
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21703);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21703);
			
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, new String[]{ "申込書イメージ付替登録"});
		}
		
		// 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_KKW21701);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21701);
		
		// 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 executeMskmImgChg(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_KKSV0866);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0866OP);
		
		// 条件格納用マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		// 処理結果格納用マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// マッピングクラス
		KKSV0866_KKSV0866OPDBMapper mapper = new KKSV0866_KKSV0866OPDBMapper();
		
		// 上りマッピング
		inputMap = mapper.setKKSV086601CC(paramBean, inputMap, funcCd, null);
		
		// サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		return true;
	}
}
