package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.HashMap;

import com.fujitsu.futurity.bp.custom.common.JCCBPCommon;
import com.fujitsu.futurity.bp.custom.constant.KKSV0031_KKSV0031OP;
import com.fujitsu.futurity.bp.custom.constant.KKSV0031_KKSV0031OP_KKSV003107SC;
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;

import eo.common.util.JPCDateChecker;

public class JKKSV003107ReqChk extends AbstractCustomReqChk {

	/**
	 * カスタム実行判定処理を実装するメソッド
	 */
	@SuppressWarnings("unchecked")
	public boolean checkExecution(IRequestParameterReadOnly irp,
			IConditionValue conditionvalue) throws ReqChkException {

		String use_staymd = null;
		HashMap<String,Object> parentMap = null;
		
		try {
			// チェック条件項目マップから必要な情報を取り出す
			parentMap = (HashMap<String,Object>)irp.getData(KKSV0031_KKSV0031OP.RECCHK);
			use_staymd = (String)parentMap.get(KKSV0031_KKSV0031OP_RECCHK.USE_STAYMD); // 利用開始日（画面投入）

			// 利用開始日（画面投入）と運用日付を比較
			boolean flg = JPCDateChecker.isEqualDate(use_staymd,  JCCBPCommon.getOpeDate(null));
			
			// 進捗登録マップの取得
			parentMap = (HashMap<String, Object>)irp.getData(KKSV0031_KKSV0031OP.KKSV003107SC);
			if (flg) {
				// 進捗登録.進捗ステータス（オプション設定完了）
				parentMap.put(KKSV0031_KKSV0031OP_KKSV003107SC.PRG_STAT, "5102");
			}
			else
			{
				// 進捗登録.進捗ステータス（オプション情報申請中）
				parentMap.put(KKSV0031_KKSV0031OP_KKSV003107SC.PRG_STAT, "5101");
			}

			return true;
			
		} catch (RequestParameterException e) {
			
			return false;
		}
	}
}
