package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.HashMap;

import com.fujitsu.futurity.bp.custom.constant.KKSV0010_KKSV0010OP;
import com.fujitsu.futurity.bp.custom.constant.KKSV0010_KKSV0010OP_KKSV001009SC;
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;

import eo.common.util.JPCDateChecker;

public class JKKSV001009ReqChk extends AbstractCustomReqChk {
	
	/**
	 * カスタム実行判定処理を実装するメソッド
	 */
	@SuppressWarnings("unchecked")
	public boolean checkExecution(IRequestParameterReadOnly irp,
			IConditionValue conditionvalue) throws ReqChkException {

		// 運用年月日
		String unyo_ymd = null;
		
		// サービス開始年月日（オプションサービス契約）
		String op_svc_kei_svc_staymd = null;
		HashMap<String, Object> parentMap = null;
		
		try {
			// サービス契約一意照会マップの取得
			parentMap = (HashMap<String, Object>)irp.getData(KKSV0010_KKSV0010OP.KKSV001001SC);
			// 運用年月日 ← サービス契約一意照会マップ.ＫＥＹ＿予約適用年月日
			unyo_ymd = (String)parentMap.get("key_rsv_aply_ymd");

			// オプションサービス契約＜サポート＞開始マップの取得
			parentMap = (HashMap<String, Object>)irp.getData(KKSV0010_KKSV0010OP.KKSV001008SC);
			// 利用開始日 ← 利用開始日
			op_svc_kei_svc_staymd = (String)parentMap.get("svc_staymd_chk");
		}
		catch (RequestParameterException e) {

			return false;
		}

		try {
			// 進捗登録マップの取得
			parentMap = (HashMap<String, Object>)irp.getData(KKSV0010_KKSV0010OP.KKSV001009SC);
			// IT1-2013-0000167 2013/01/28 MOD START
			// 利用開始日が設定されていれば編集を行う
			// 画面投入の利用開始日と運用日付が同じ
			if (!("").equals(op_svc_kei_svc_staymd))
			{
				if (JPCDateChecker.isEqualDate(op_svc_kei_svc_staymd, unyo_ymd))
				{
					// 進捗登録.進捗ステータス（オプション設定完了）
					parentMap.put(KKSV0010_KKSV0010OP_KKSV001009SC.PRG_STAT, "5102");
				}
				else
				{
					// 進捗登録.進捗ステータス（オプション情報申請中）
					parentMap.put(KKSV0010_KKSV0010OP_KKSV001009SC.PRG_STAT, "5101");
				}
			}
			else
			{
				// 進捗登録.進捗ステータス（オプション情報申請中）
				parentMap.put(KKSV0010_KKSV0010OP_KKSV001009SC.PRG_STAT, "5101");
			}
			// IT1-2013-0000167 2013/01/28 MOD END
			return true;
		}
		catch (RequestParameterException e) {

			return false;
		}
	}
}
