/**
 * 
 */
package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

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;


/**
 * KKSV0170 トーキ登録初期表示<br>
 * KKSV017002SC サービス契約一意照会SC<br>
 *<br>
 * お客様一意照会S-IFのお客様ステータスが“登録済”の場合のみ実行する。
 * 
 * @author 富士通
 * @since 2011-10-18
 */
public class JKKSV017002ReqChk extends AbstractCustomReqChk {

	/** お客様ステータス（登録済） */
	private static final String CUST_STAT_TOROKUZUMI = "010";
	
	/** 異動区分コード（住所変更・登録） */
	private static final String IDO_DIV_JUSHO_HENKO = "00019";
	
	/**
	 * サービス契約一意照会ＳＣ　実行判定メソッド
	 */
	@SuppressWarnings("unchecked")
	@Override
	public boolean checkExecution(IRequestParameterReadOnly arg0, IConditionValue arg1) throws ReqChkException
	{
		//SCマップから必要な情報を取り出す
		HashMap<String, Object> parentMap;
		try 
		{
			//異動区分の取得
			parentMap = (HashMap<String, Object>)arg0.getData("WORK");
			String ido_div = (String)parentMap.get("ido_div");

			// 異動区分が住所変更の場合はfalse
			if (null == ido_div || IDO_DIV_JUSHO_HENKO.equals(ido_div))
			{
				return false;
			}
			
			//お客様ステータスの取得
			parentMap = (HashMap<String, Object>)arg0.getData("KKSV017001SC");
//			String cust_stat = (String)parentMap.get("cust_stat");
			List list = ((List)parentMap.get("ECK0011A010CBSMsg1List"));
			String cust_stat = (String) ((Map)list.get(0)).get("cust_stat");
			
			//お客様ステータスが“登録済”なら実行ＯＫ
			if (cust_stat != null && CUST_STAT_TOROKUZUMI.equals(cust_stat))
			{
				return true;
			}
		}
		catch (RequestParameterException e) 
		{
			return false;
		}

		return false;
	}

}
