/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKTvSaisosinSnglChk
*	ソースファイル名：JKKTvSaisosinSnglChk.java
*	作成者			：富士通
*	日付			：2022年04月14日
*＜機能概要＞
*	料金コース情報照会の実行判定を定義するクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v59.00.00	2022/04/08	FJ)南		【ANK-4240-00-00】開通前マイページ関連業務改善（2022年6月下旬リリース）
**********************************************************************/
package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.ArrayList;
import java.util.HashMap;

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;

/**
 * 実行判定クラスです。
 * <BR>
 * @author 富士通
 */
public class JKKTvSaisosinSnglChk extends AbstractCustomReqChk
{
	/**
	 * 実行判定処理
     * <BR>
     * @param irp
     * @param conditionvalue
	 * @return boolean
	 * @throws ReqChkException
	 */
	@SuppressWarnings("unchecked")
	@Override
	public boolean checkExecution(IRequestParameterReadOnly irp, IConditionValue conditionvalue) throws ReqChkException
	{
		boolean blnFlg = false;
		
		try
		{
			HashMap<String, Object> parentMap = (HashMap)irp.getData(conditionvalue.get(""));
			
			if (parentMap == null)
			{
				return false;
			}
			ArrayList<Object> dataList = (ArrayList<Object>)parentMap.get("EKK0081B011CBSMsg1List");
			
			if (dataList != null && dataList.size() > 0)
			{
				for (int i = 0; i < dataList.size(); i++)
				{
					HashMap childMap = (HashMap)dataList.get(i);
					String svc_cd = (String)childMap.get("svc_cd");
					String svc_kei_stat = (String)childMap.get("svc_kei_stat");
					
					// ネットまたは電話サービスの場合
					if ((svc_cd != null) && ((JKKStrConst.CD00130_01).equals(svc_cd) || (JKKStrConst.CD00130_02).equals(svc_cd)))
					{
						// 受付済かつ解約済ではない場合
						if(svc_kei_stat != null && !(JKKStrConst.CD00037_UK_ZM).equals(svc_kei_stat) && !(JKKStrConst.CD00037_DSL_ZM).equals(svc_kei_stat))
						{
							// 実行判定結果をfalseとする
							return false;
						}
					}
					blnFlg = true;
				}
			}
		}
		catch (RequestParameterException e)
		{
			throw new ReqChkException(e.getMessage(), e);
		}
		return blnFlg;
	}
}