/**
 * 
 */
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;


/**
 * KKSV0023 固定グローバルＩＰアドレス情報登録<br>
 * KKSV002303SC 固定ＩＰアドレス変更<br>
 * <br>
 * サービス契約ステータスとお客様ステータスがＯＫの場合に当ＳＣを実行可能とします。
 * 
 * @author 富士通
 * @since 2011-08-10
 */
public class JKKSV002303ReqChk extends AbstractCustomReqChk {

	/**
	 * 固定ＩＰアドレス変更ＳＣ　実行判定メソッド
	 */
	@SuppressWarnings("unchecked")
	@Override
	public boolean checkExecution(IRequestParameterReadOnly arg0, IConditionValue arg1) throws ReqChkException
	{
		boolean ret = false;

		try 
		{
			String svc_kei_stat = null;		//サービス契約ステータス
			HashMap<String, Object> kksv002301Map = (HashMap<String, Object>)arg0.getData("KKSV002301SC");
			if (kksv002301Map != null && kksv002301Map.containsKey("EKK0081A010CBSMsg1List"))
			{
				//明細の ArrayList を取得
				ArrayList<HashMap<String, Object>> childList = (ArrayList<HashMap<String, Object>>)kksv002301Map.get("EKK0081A010CBSMsg1List");
				//照会結果は必ず１件（のハズ）
				HashMap<String, Object> childMap = (HashMap<String, Object>)childList.get(0);
				if (childMap != null)
				{
					//サービス契約ステータスを取得
					svc_kei_stat = (String)childMap.get("svc_kei_stat");
				}
			}

			String cust_stat = null;		//お客様ステータス
			HashMap<String, Object> kksv002302Map = (HashMap<String, Object>)arg0.getData("KKSV002302SC");
			if (kksv002302Map != null && kksv002302Map.containsKey("ECK0011A010CBSMsg1List"))
			{
				//明細の ArrayList を取得
				ArrayList<HashMap<String, Object>> childList = (ArrayList<HashMap<String, Object>>)kksv002302Map.get("ECK0011A010CBSMsg1List");
				//照会結果は必ず１件（のハズ）
				HashMap<String, Object> childMap = (HashMap<String, Object>)childList.get(0);
				if (childMap != null)
				{
					//お客様ステータスを取得
					cust_stat = (String)childMap.get("cust_stat");
				}
			}

			//実行判定
			if (cust_stat != null && 
				("010".equals(cust_stat) || "100".equals(cust_stat)) &&		//登録済or受付済？
				svc_kei_stat != null && 							//照査済or締結済orサービス提供中？
				("020".equals(svc_kei_stat) || "030".equals(svc_kei_stat) || "100".equals(svc_kei_stat))
				)
			{
				ret = true;		//OK
			}
		}
		catch (RequestParameterException e) 
		{
			/*NOP*/ ;
		}

		return ret;
	}

}
