package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.HashMap;

import com.fujitsu.futurity.bp.custom.constant.KKSV0031_KKSV0031OP;
import com.fujitsu.futurity.bp.custom.constant.KKSV0031_KKSV0031OP_RECCHK;
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;

public class JKKSV003102ReqChk extends AbstractCustomReqChk {
	
	/** サービス契約ステータス（照査済） */
	private static final String SVC_KEI_STAT_020 = "020";
	/** サービス契約ステータス（締結済） */
	private static final String SVC_KEI_STAT_030 = "030";
	/** サービス契約ステータス（サービス提供中） */
	private static final String SVC_KEI_STAT_100 = "100";
	
	/**
	 * カスタム実行判定処理を実装するメソッド
	 */
	@SuppressWarnings("unchecked")
	public boolean checkExecution(IRequestParameterReadOnly irp,
			IConditionValue conditionvalue) throws ReqChkException {

		String svcKeiStat = null;
// v5.00 2013/05/30 TG1-2013-0000421 ADD START
		String svcKeiUcwkStat = null;
// v5.00 2013/05/30 TG1-2013-0000421 ADD END
		HashMap<String,Object> parentMap = null;
		
		try {
			// チェック条件項目マップから必要な情報を取り出す
			parentMap = (HashMap<String,Object>)irp.getData(KKSV0031_KKSV0031OP.RECCHK);
			svcKeiStat = (String)parentMap.get(KKSV0031_KKSV0031OP_RECCHK.SVC_KEI_STAT); // サービス契約ステータス
// v5.00 2013/05/30 TG1-2013-0000421 ADD START
			svcKeiUcwkStat = (String)parentMap.get(KKSV0031_KKSV0031OP_RECCHK.SVC_KEI_UCWK_STAT); // サービス契約内訳ステータス
// v5.00 2013/05/30 TG1-2013-0000421 ADD END
			
		} catch (RequestParameterException e) {
			
		}
		
		// 判定処理
// v5.00 2013/05/30 TG1-2013-0000421 ADD START
		// サービス契約ステータスが照査済、または締結済、またはサービス提供中かつ
		if((SVC_KEI_STAT_020.equals(svcKeiStat) || SVC_KEI_STAT_030.equals(svcKeiStat) || SVC_KEI_STAT_100.equals(svcKeiStat))
				// サービス契約内訳ステータスが照査済、または締結済、またはサービス提供中の場合
				&& (SVC_KEI_STAT_020.equals(svcKeiUcwkStat) || SVC_KEI_STAT_030.equals(svcKeiUcwkStat) || SVC_KEI_STAT_100.equals(svcKeiUcwkStat)))
		{
			return true;
		}
		else
		{
			return false;
		}
// v5.00 2013/05/30 TG1-2013-0000421 ADD END
// v5.00 2013/05/30 TG1-2013-0000421 DEL START
//		if("030".equals(svcKeiStat)) {
//			// 締結済み
//			return true;
//		} else if("100".equals(svcKeiStat)) {
//			// サービス提供中
//			return true;
//		} else {
//			return false;
//		}
// v5.00 2013/05/30 TG1-2013-0000421 DEL END
	}
}
