package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;


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;


/**
 * 強制解約対象外データ登録サービスSCの実行判定を行うクラスです。<p>
 * <BR>
 * @author FJ
 */
public class JKKSV016701ReqChk extends AbstractCustomReqChk 
{

	
	/** 処理結果 */
	private static final String SYORI_RESULT = "SYORI_RESULT";
	/** 強制解約不可対象者リスト */
	private static final String FUKA_KAI_TAI_LST = "FUKA_KAI_TAI_LST";
	/** 解約不可理由 */
	private static final String FUKA_RESON = "FUKA_RESON";
	/** 解約不可理由(受付済) */
	private static final String FUKA_RESON_RTN_UKE = "02";
	/** 解約不可理由(eo光テレビ（KCN)) */
	private static final String FUKA_RESON_RTN_KCN = "03";
	/** 処理結果(eo光テレビ（KCN)) */
	private static final String SYORI_RESULT_FUKA = "1";
	/** 強制解約 リクエストキー　強制解約要求 */
	private static final String KKSV016701CC = "KKSV016701CC";	
	
	/**
	 * カスタム実行判定処理を実装するメソッド
	 * <br>
	 * @return 実行判定結果
	 * @param  irp  リクエストパラメータ
	 * @param  conditionvalue  判定値格納クラス
	 * @return Boolean 判定結果
	 * @exception ReqChkException
	 */
	@SuppressWarnings("unchecked")
	public boolean checkExecution(IRequestParameterReadOnly irp,
			IConditionValue conditionvalue) throws ReqChkException 
	{
		String syori_result = null;
		HashMap<String, Object> parentMap = null;
		boolean bNextFlg = false;
		
		try 
		{
			// CCマップから必要な情報を取り出す
			parentMap = (HashMap<String, Object>)irp.getData(KKSV016701CC);
			syori_result = (String)parentMap.get(SYORI_RESULT);
			//強制解約不可対象者リストを取得
			ArrayList lstKtl = (ArrayList)parentMap.get(FUKA_KAI_TAI_LST);
			Iterator itlKtl = lstKtl.iterator();
			HashMap<String, String> hasKtl = new HashMap<String, String>();
			while(itlKtl.hasNext())
			{
				hasKtl = (HashMap<String, String>)itlKtl.next();
				//強制解約不可理由が「受付済」「光テレビ（KCN)」のいずれかが1件でも存在するかチェック
				if(FUKA_RESON_RTN_UKE.equals(hasKtl.get(FUKA_RESON)) || FUKA_RESON_RTN_KCN.equals(hasKtl.get(FUKA_RESON)))
				{
					bNextFlg = true;
					break;
				}
				
			}

			
		}
		catch (RequestParameterException e) 
		{
			;
		}

		if(syori_result.equals(SYORI_RESULT_FUKA) && bNextFlg)
		{
			//まだSCコンポーネント未作成のため、必ずfalse
//			return true;
			return false;
		}
		else
		{
			return false;
		}
	}
}
