/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUGetAuthTwoStepInfoCC
*   ソースファイル名：JFUGetAuthTwoStepInfoCC.java
*   作成者          ：富士通
*   日付            ：2021年08月31日
*＜機能概要＞
*   2段階認証設定取得コモンコンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v54.00      2021/08/31   FJ)西川   新規作成【ANK-4132-00-00】高リスク情報表示Web画面の2段階認証チェック機能追加
***********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;

import eo.ejb.cbs.cbsmsg.ECKA9010002CBSMsg;
import eo.ejb.cbs.cbsmsg.ECKA9010002CBSMsg1List;
import eo.ejb.common.JCCModelCommon;

/**
 * 2段階認証設定取得コモンコンポーネント部品
 * <br>
 * @author 富士通
 */
public class JFUGetAuthTwoStepInfoCC extends JFUBaseCC
{

	/* ■□ AXM会員情報更新依頼（検索）SC ■□ */
	/** テンプレートID(AXM会員情報更新依頼（検索）) */
	private static final String TEMPLATE_ID_CUST_INFO = "ECKA9010002";
	/** テンプレートID(AXM会員情報更新依頼（検索）明細) */
	private static final String TEMPLATE_ID_CUST_INFO_DETAIL = ECKA9010002CBSMsg.ECKA9010002CBSMSG1LIST;
	/** IN項目リスト(AXM会員情報更新依頼（検索）) */
	private static final List<String> IN_COLUMN_LIST_SVC_KEI = Arrays.asList(ECKA9010002CBSMsg.KEY_SYSID);
	/** 関連チェックエラー項目(AXM会員情報更新依頼（検索）) */
	private static final String ERROR_COLUMN_SYSID = ECKA9010002CBSMsg.KEY_SYSID_ERR;
	/** SC実行結果取得キー(AXM会員情報更新依頼（検索）) */
	private static final String TEMP_TEMPLATE_KEY = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_CUST_INFO + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/** AxMへの通信モード(テスト) */
	private static final String AXM_REQUEST_TEST_MODE_ON = "ON";

	/* ■□ IN項目 ■□ */
	/** 機能コード */
	private static final String FUNC_CODE = "func_code";
	/** KEY_SYSID */
	private static final String KEY_SYSID = "key_sysid";

	/**
	 * 2段階認証設定取得実行処理<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite executeGetAuthTwoStepInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// 上りマッピング
		setInMapECKA9010002(param, fixedText);

		// ●AXM会員情報更新依頼（検索）
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_CUST_INFO, TEMPLATE_ID_CUST_INFO_DETAIL, IN_COLUMN_LIST_SVC_KEI, ERROR_COLUMN_SYSID);

		// 認証レベル
		String authenticationLevel = getTemplateListValue((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY, TEMPLATE_ID_CUST_INFO_DETAIL, ECKA9010002CBSMsg1List.AUTHENTICATION_LEVEL, 0);
		String sysid = getTemplateListValue((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY, TEMPLATE_ID_CUST_INFO_DETAIL, ECKA9010002CBSMsg1List.SYSID, 0);
		String kiinShubt = getTemplateListValue((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY, TEMPLATE_ID_CUST_INFO_DETAIL, ECKA9010002CBSMsg1List.KIIN_SHUBT, 0);
		String turkFlg = getTemplateListValue((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY, TEMPLATE_ID_CUST_INFO_DETAIL, ECKA9010002CBSMsg1List.TURK_FLG, 0);
		String ispRyuTisFlg = getTemplateListValue((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY, TEMPLATE_ID_CUST_INFO_DETAIL, ECKA9010002CBSMsg1List.ISP_RYU_TIS_FLG, 0);
		String jyoutai = getTemplateListValue((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY, TEMPLATE_ID_CUST_INFO_DETAIL, ECKA9010002CBSMsg1List.JYOUTAI, 0);
		String kiinTokutei = getTemplateListValue((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY, TEMPLATE_ID_CUST_INFO_DETAIL, ECKA9010002CBSMsg1List.KIIN_TOKUTEI, 0);
		String onetimekeySestination = getTemplateListValue((HashMap)param.getData(fixedText), TEMP_TEMPLATE_KEY, TEMPLATE_ID_CUST_INFO_DETAIL, ECKA9010002CBSMsg1List.ONETIMEKEY_DESTINATION, 0);

		if (AXM_REQUEST_TEST_MODE_ON.equals(JCCModelCommon.getApplicationConst("LCS_IDA_WEB_API_TEST_MODE")))
		{
			// テストモード時は、画面表示に必要な最低限のパラメータ値を返却する。

			// 認証レベル
			authenticationLevel = "2";
			// ユーザデータ取得
			HashMap inMap = (HashMap)param.getData(fixedText);
			sysid = (String)inMap.get(KEY_SYSID);
		}

		// 結果マップ
		HashMap<String, String> resultMap = new HashMap<String, String>();
		resultMap.put(ECKA9010002CBSMsg1List.AUTHENTICATION_LEVEL, authenticationLevel);
		resultMap.put(ECKA9010002CBSMsg1List.SYSID, sysid);
		resultMap.put(ECKA9010002CBSMsg1List.KIIN_SHUBT, kiinShubt);
		resultMap.put(ECKA9010002CBSMsg1List.TURK_FLG, turkFlg);
		resultMap.put(ECKA9010002CBSMsg1List.ISP_RYU_TIS_FLG, ispRyuTisFlg);
		resultMap.put(ECKA9010002CBSMsg1List.JYOUTAI, jyoutai);
		resultMap.put(ECKA9010002CBSMsg1List.KIIN_TOKUTEI, kiinTokutei);
		resultMap.put(ECKA9010002CBSMsg1List.ONETIMEKEY_DESTINATION, onetimekeySestination);

		param.removeData(fixedText);
		param.setData("FUSV034901CC", resultMap);
		return param;
	}

	/**
	 * 上りマッピング項目設定(AXM会員情報更新依頼（検索）)
	 * 
	 * <br>
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @param fixedText
	 *            サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapECKA9010002(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// 機能コード設定
		setFuncCode(param, fixedText, (String)inMap.get(FUNC_CODE));
		// IN項目:ＫＥＹ＿ＳＹＳＩＤ
		inMap.put(ECKA9010002CBSMsg.KEY_SYSID, inMap.get(KEY_SYSID));
	}

	@Override
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}
}
