/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKSV007901ReqChk
*	ソースファイル名：JKKSV007901ReqChk.java
*	作成者			：富士通
*	日付			：2012年03月30日
*＜機能概要＞
*	機器送付先最新情報一覧照会サービスの実行判定部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00		2012/03/30	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.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.constant.JKKStrConst;

/**
 * BPから呼び出すサービスIFの
 * 単項目チェック・単関連チェックを実施する。
 * <BR>
 * @author 富士通
 */
public class JKKSV007901ReqChk extends AbstractCustomReqChk
{

	/** 作業マップ名 */
	private static final String MSKM_SVC_KEI_UCWK_WORK = "JKKGetMskmSvcKeiUcwkListCCWork";
	/** 利用場所情報マップ名 */
	private static final String USE_PLACE_MAP = "KKSV007907CC";
	
	/**
	 * 実行判定クラス。
     * <BR>
     * @param irp リクエストパラメータ
     * @param conditionvalue 判定条件
	 * @return boolean
	 * @throws ReqChkException
	 */
	@SuppressWarnings("unchecked")
	public boolean checkExecution(IRequestParameterReadOnly irp, IConditionValue conditionvalue) throws ReqChkException
	{
		
		try
		{
			Map workMap = null;
			workMap = irp.getMappingWorkArea();
			if (null == workMap)
			{
				return false;
			}

			// 申込サービス契約内訳一覧照会ＣＣの作業領域のマップを取得
			HashMap mskmSvcKeiUcwkWorkMap = (HashMap)workMap.get(MSKM_SVC_KEI_UCWK_WORK);
			if (null == mskmSvcKeiUcwkWorkMap)
			{
				return false;
			}

			// 申込明細明細リストを取得
			ArrayList<HashMap> mskmDtlList = (ArrayList<HashMap>)mskmSvcKeiUcwkWorkMap.get("mskm_dtl_list");
			if (null == mskmDtlList)
			{
				return false;
			}

			// 利用場所情報照会マップ
			HashMap inUepcMap = (HashMap<String, Object>)irp.getData(USE_PLACE_MAP);
			if (null == inUepcMap)
			{
				return false;
			}

			String prcGrpCd = "";
			boolean isTrnTg = false;
			// 申込明細のサービス契約リストからサービス契約：eo光ネット、eo光テレビ、eo光電話を検索
			for (HashMap mskmDtlMap : mskmDtlList)
			{
				ArrayList<HashMap> svcKeiList = (ArrayList<HashMap>)mskmDtlMap.get("svc_kei_list");
				for (HashMap svcKeiMap : svcKeiList)
				{
					// eo光ネット または eo光電話 または eo光テレビ の場合に実行する
					prcGrpCd = (String)svcKeiMap.get("prc_grp_cd");
					isTrnTg = JKKStrConst.CD00133_02.equals(prcGrpCd)   ||	// 料金グループコード：eo光ネットホームタイプ
								JKKStrConst.CD00133_03.equals(prcGrpCd) ||	// 料金グループコード：eo光ネットメゾンタイプ
								JKKStrConst.CD00133_04.equals(prcGrpCd) ||	// 料金グループコード：eo光ネットマンションタイプ
								JKKStrConst.CD00133_10.equals(prcGrpCd) ||	// 料金グループコード：eo光電話
								JKKStrConst.CD00133_11.equals(prcGrpCd) ||	// 料金グループコード：eo光テレビ(K-CAT)
								JKKStrConst.CD00133_12.equals(prcGrpCd) ||	// 料金グループコード：eo光テレビ(KCN)
								JKKStrConst.CD00133_13.equals(prcGrpCd);	// 料金グループコード：eo光テレビ(再送信)
					if (isTrnTg)
					{
						return true;
					}
				}
			}
			
		}
		catch (RequestParameterException e)
		{
			e.printStackTrace();
		}
		
		return false;
	}
}
