/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：CKW02701SFLogic
 *   ソースファイル名：CKW02701SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2017年04月12日
 *＜機能概要＞
 *   コンテンツ利用規約同意登録画面 Viewロジックです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *	v29.00.00	 2017/04/12	  FJ)辻本	  新規作成【ANK-3132-00-00】バックヤード画面へのコンテンツ同意登録機能の追加
 *	v33.00.00	 2017/08/14	  FJ) 辻本	  【ANK-3194-00-00】コンテンツ同意・コンテンツ連絡先メールアドレスの挙動改善
 *
 **********************************************************************/

package eo.web.webview.CKW02701SF;

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.JCKStrConst;
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.JCKScreenConst;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.CKSV0059_CKSV0059OPDBMapper;
import eo.web.webview.mapping.CKSV0060_CKSV0060OPDBMapper;

/**
 * コンテンツ利用規約同意登録を行います。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
@SuppressWarnings("serial")
public class CKW02701SFLogic extends JCCWebBusinessLogic
{
	/** PMP連携用リターンコード(標準コンテンツサービス契約番号設定済みエラー) */
	private static final String PMP_ERR_CONTENTS_AGREEMENT = "97";

	/**
	 * 初期表示処理<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_CKSV0059);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_CKSV0059OP);
		
		// 条件格納用マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		// 処理結果格納用マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// マッピングクラス
		CKSV0059_CKSV0059OPDBMapper mapper = new CKSV0059_CKSV0059OPDBMapper();
		
		// 上りマッピング
		mapper.setCKSV005901SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		// ANK-3194-00-00 MOD START
//		mapper.setCKSV005902SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_5);
		mapper.setCKSV005902SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		// ANK-3194-00-00 MOD END
		
		// サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// 下りマッピング
		mapper.getCKSV005901SC(paramBean, outputMap);
		mapper.getCKSV005902SC(paramBean, outputMap);
		
		// 次画面情報セット
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_ID_CKW02701);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_NAME_CKW02701);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		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 
	{
		// コンテンツ同意登録確認と予約取消確認のメッセージを表示する
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKK0370__I, new String[]{"コンテンツ利用規約同意登録"});
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE620__I);
	
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// 次画面情報のセット
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_ID_CKW02702);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_NAME_CKW02702);
		
		// 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 = executeContentsAgreement();
		
		if (result)
		{
			// 共有フォームBeanのアクセスクラスを取得
			X31SDataBeanAccess commonBean = super.getCommonInfoBean();
			
			// 次画面情報のセット
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_ID_CKW02703);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_NAME_CKW02703);
		}
		
		// 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, JCKScreenConst.SCREEN_ID_CKW02701);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_NAME_CKW02701);
		
		// 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 executeContentsAgreement() 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_CKSV0060);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_CKSV0060OP);
		
		// 条件格納用マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		
		// 処理結果格納用マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// マッピングクラス
		CKSV0060_CKSV0060OPDBMapper mapper = new CKSV0060_CKSV0060OPDBMapper();
		
		// 上りマッピング
		mapper.setCKSV006001CC(paramBean, inputMap);
		mapper.setCKSV006001SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setCKSV006003CC(paramBean, inputMap);
		
		// サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// サービス実行結果の取得
		HashMap<String, Object> CKSV006002CCResult = (HashMap<String, Object>)outputMap.get("CKSV006002CC");
		
		// お客様情報本登録CCのリターンコードを取得
		String returnCd = (String)CKSV006002CCResult.get("return_cd");
		
		if(JCKStrConst.PMP_NORMAL_END.equals(returnCd))
		{
			// 完了メッセージ表示
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, new String[]{"コンテンツ利用規約同意登録"});
			
			return true;
		}
		else
		{
			// リターンコードをもとにメッセージ情報を設定
			returnCdToMessageInfo(returnCd);
			
			return false;
		}
	}
	
	/**
	 * リターンコードをもとにメッセージ情報を設定します<br>
	 * 
	 * @param returnCd リターンコード
	 */
	private void returnCdToMessageInfo(String returnCd)
	{
		// フリガナ氏名、生年月日、連絡用アドレス重複エラー
		if(JCKStrConst.PMP_ERR_MMB_DUP.equals(returnCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB7980__I);
		}
		// 拒否メールドメインチェックエラー
		else if(JCKStrConst.PMP_ERR_REJECT_DOMAIN.equals(returnCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4970_KW, new String[]{"拒否メールドメインに登録されている"});
		}
		// 回線契約状態チェックエラー（会員状態・ステータス）
		else if(JCKStrConst.PMP_ERR_STAT_KSN_KEI.equals(returnCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, new String[]{"登録", "回線"});
		}
		// 排他エラー
		else if(JCKStrConst.PMP_ERR_EXCLUSION.equals(returnCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0320_KW);
		}
		// 標準コンテンツサービス契約番号設定済みエラー
		else if(PMP_ERR_CONTENTS_AGREEMENT.equals(returnCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBC550_KW, new String[]{"コンテンツ利用規約同意"});
		}
		// その他(システムエラー)
		else
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0400_CE);
		}
	}
}
