/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JZDExecOneTimePassReqChk
*	ソースファイル名：JZDExecOneTimePassReqChk.java
*	作成者			：FJ
*	日付			：2011年05月06日
*＜機能概要＞
*	ワンタイムパスワード登録サービスIFの実行判定クラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2012/06/13	FJ			新規作成
*	v36.00.00	2018/03/27	FJ)柳		【OM-2018-0000297】書面申込時ワンタイムパスワード登録不可対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.bp.x21.bpm.common.AbstractCustomReqChk;
import com.fujitsu.futurity.bp.x21.bpm.common.IConditionValue;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.reqchk.exception.ReqChkException;

import eo.common.constant.JCRStrConst;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JCRUtilCommon;

/**
 * BPから呼び出すワンタイムパスワード登録サービスIFの
 * 実行判定を実施する。
 * @author FJ
 */
public class JZDExecOneTimePassReqChk extends AbstractCustomReqChk
{

	/**
	 * ワンタイムパスワード登録サービスIFの実行判定を実施する。
	 * @param irp
	 * @param conditionvalue
	 * @return 判定結果
	 * @throws ReqChkException
	 */
	@Override
	public boolean checkExecution(IRequestParameterReadOnly irp,
			IConditionValue conditionvalue) throws ReqChkException
	{

		// 結果を詰めるマップを取得。
		HashMap<String, Object> dataMap = null;
		// OM-2018-0000297 ADD START
		HashMap<String, Object> ZDSV000103SCMap = null;
		HashMap<String, Object> mskmDtlMap = null;
		// OM-2018-0000297 ADD END

		/* 業務データ設定 */
		try
		{
			// (1) リクエストパラメータより、判定値格納クラスより、判定対象のマップIDのマップを取得する。
			dataMap = (HashMap<String, Object>) irp.getData(conditionvalue.get("value"));
			// OM-2018-0000297 ADD START
			ZDSV000103SCMap = (HashMap<String, Object>) irp.getData("ZDSV000103SC");
			ArrayList<HashMap<String, Object>> EKK0021B013CBSMsg1List = (ArrayList<HashMap<String, Object>>)ZDSV000103SCMap.get("EKK0021B013CBSMsg1List");
// OM-2018-0000297 MOD START
//			mskmDtlMap =  EKK0021B013CBSMsg1List.get(0);
			
			if (0 < EKK0021B013CBSMsg1List.size())
			{
				mskmDtlMap = EKK0021B013CBSMsg1List.get(0);
			}
// OM-2018-0000297 MOD END
			
			if (null == mskmDtlMap)
			{
				mskmDtlMap = new HashMap<String, Object>();
			}
			// OM-2018-0000297 ADD END
		}
		catch (RequestParameterException e)
		{
			e.printStackTrace();
			throw new ReqChkException(e.getMessage(), e);
		}

		// (2) (1)で取得したマップの、項目『申込形態コード』『検索エラーフラグ』を取得し、
		// 『申込形態コード』が"05"(書面)であるか『検索エラーフラグ』が"1"（検索エラーフラグ(0件)）であるかを判定する。
		// (a) 申込形態コードが"05"(書面) または 検索エラーフラグが"1"（検索エラーフラグ(0件)）の場合、trueを返却する。
// OM-2018-0000297 MOD START
//		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(dataMap.get("search_err_flg")))
		if (JKKStrConst.CD00591_05.equals(mskmDtlMap.get("mskm_form_cd")) ||
				JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(dataMap.get("search_err_flg")))
// OM-2018-0000297 MOD END
		{
			return true;
		}

		// (b) 上記以外の場合、falseを返却する。
		return false;
	}

}
