/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKSV019404ReqChk
*	作成者			：FJ
*	日付			：2011年09月25日
*＜機能概要＞
*	「サービス契約更新＿回復」サービス，KKSV019404SC実行判定クラス
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/25	FJ			新規作成
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.KKSV0194_KKSV0194OP;
import com.fujitsu.futurity.bp.custom.constant.KKSV0194_KKSV0194OP_WORK;
import com.fujitsu.futurity.bp.custom.constant.KKSV0194_KKSV0194OP_WORK_ECK0011A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0194_KKSV0194OP_WORK_EKK0081A010CBSMsg1List;
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;


/**
 * KKSV0194 サービス契約更新＿回復<br>
 * KKSV019404SC 申込内容承認登録SC<br>
 * 登録更新処理判定をします<br>
 * お客様ステータスとサービス契約ステータスが問題ない場合に当ＳＣを実行可能とします。
 * 
 * @author 富士通
 * @since 2011-09-25
 */
public class JKKSV019404ReqChk extends AbstractCustomReqChk {

	/**
	 * 申込内容承認登録ＳＣ　実行判定メソッド
	 */
	@SuppressWarnings("unchecked")
	@Override
	public boolean checkExecution(IRequestParameterReadOnly arg0, IConditionValue arg1) throws ReqChkException
	{
		boolean ret = false;

		try 
		{
			String cust_stat = null;		//お客様ステータス
			String svc_kei_stat = null;		//サービス契約ステータス

			//作業項目リストのマップ
			Map workAreaMap = (Map)arg0.getMappingWorkArea();
			HashMap<String, Object> workMap = (HashMap<String, Object>)workAreaMap.get(KKSV0194_KKSV0194OP.WORK);
			if (workMap != null && workMap.containsKey(KKSV0194_KKSV0194OP_WORK.ECK0011A010CBSMSG1LIST))
			{
				//明細の ArrayList を取得
				ArrayList<HashMap<String, Object>> childList = (ArrayList<HashMap<String, Object>>)workMap.get(KKSV0194_KKSV0194OP_WORK.ECK0011A010CBSMSG1LIST);
				//照会結果は必ず１件（のハズ）
				HashMap<String, Object> childMap = (HashMap<String, Object>)childList.get(0);
				if (childMap != null)
				{
					//お客様ステータスを取得
					cust_stat = (String)childMap.get(KKSV0194_KKSV0194OP_WORK_ECK0011A010CBSMsg1List.CUST_STAT);
				}
			}

			if (workMap != null && workMap.containsKey(KKSV0194_KKSV0194OP_WORK.EKK0081A010CBSMSG1LIST))
			{
				//明細の ArrayList を取得
				ArrayList<HashMap<String, Object>> childList = (ArrayList<HashMap<String, Object>>)workMap.get(KKSV0194_KKSV0194OP_WORK.EKK0081A010CBSMSG1LIST);
				//照会結果は必ず１件（のハズ）
				HashMap<String, Object> childMap = (HashMap<String, Object>)childList.get(0);
				if (childMap != null)
				{
					//サービス契約ステータスを取得
					svc_kei_stat = (String)childMap.get(KKSV0194_KKSV0194OP_WORK_EKK0081A010CBSMsg1List.SVC_KEI_STAT);
				}
			}

			//実行判定
			if (cust_stat != null && ("010".equals(cust_stat) || "100".equals(cust_stat)) &&		//登録済or受付済？
				svc_kei_stat != null && 							//解約済
				("910".equals(svc_kei_stat))
				)
			{
				ret = true;		//OK
			}
		}
		catch (RequestParameterException e) 
		{
			/*NOP*/ ;
		}

		return ret;
	}

}
