/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：CR
*	モジュール名	：JCRCRSV0084ReqChk
*	ソースファイル名：JCRCRSV0084ReqChk.java
*	作成者			：FJ
*	日付			：2013年08月29日
*＜機能概要＞
*	問合せメイン専用タブ一覧照会（初期表示）実行判定部品クラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v6.00.00	2013/08/29	FJ)伊藤		新規作成
*	v10.00.00	2014/07/30	FJ)斉藤		ANK-2196-00-00 専用タブ対応
*   v13.00.00	2015/03/11  FJ)舘山		ANK-2403-00-00 テクニカルサポート問合せ対応　
*   v49.00.00	2020/03/27	FJ)西窪	  【ANK-3834-00-00】マルウェアブロッキング
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;

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.ejb.cbs.cbsmsg.EKK0351B002CBSMsg;

/**
 * BPから呼び出すサービスIFの
 * サービスIFの実行判定を実施する。
 * @author FJ
 */
public class JCRCRSV0084ReqChk extends AbstractCustomReqChk
{
	/**
	 * リクエスト画面ID_CRW03401_総合案内問合せ対応
	 */
	private static final String VIEWID_CRW034010PJP = "CRW034010PJP";

	/**
	 * リクエスト画面ID_CRW03402_テクニカルサポート問合せ対応
	 */
	private static final String VIEWID_CRW034020PJP = "CRW034020PJP";

	/**
	 * リクエスト画面ID_CRW03403_eoTVサポート問合せ対応
	 */
	private static final String VIEWID_CRW034030PJP = "CRW034030PJP";

	/**
	 * リクエスト画面ID_CRW03405_eoモバイルサポート問合せ対応
	 */
	private static final String VIEWID_CRW034050PJP = "CRW034050PJP";

	/**
	 * リクエスト画面ID_CRW03406_開通サポートセンター問合せ対応
	 */
	private static final String VIEWID_CRW034060PJP = "CRW034060PJP";

	/**
	 * リクエスト画面ID_CRW03407_総合営業センター問合せ対応
	 */
	private static final String VIEWID_CRW034070PJP = "CRW034070PJP";

	/**
	 * リクエスト画面ID_CRW03409_解約阻止問合せ対応
	 */
	private static final String VIEWID_CRW034090PJP = "CRW034090PJP";

	/**
	 * 呼出リスト_CRW03401_総合案内問合せ対応
	 */
	private static final Set<String> CRW03401 = new HashSet<String>();

	/**
	 * 呼出リスト_CRW03402_テクニカルサポート問合せ対応
	 */
	private static final Set<String> CRW03402 = new HashSet<String>();

	/**
	 * 呼出リスト_CRW03403_eoTVサポート問合せ対応
	 */
	private static final Set<String> CRW03403 = new HashSet<String>();

	/**
	 * 呼出リスト_CRW03405_eoモバイルサポート問合せ対応
	 */
	private static final Set<String> CRW03405 = new HashSet<String>();

	/**
	 * 呼出リスト_CRW03406_開通サポートセンター問合せ対応
	 */
	private static final Set<String> CRW03406 = new HashSet<String>();

	/**
	 * 呼出リスト_CRW03407_総合営業センター問合せ対応
	 */
	private static final Set<String> CRW03407 = new HashSet<String>();

	/**
	 * 呼出リスト_CRW03409_解約阻止問合せ対応
	 */
	private static final Set<String> CRW03409 = new HashSet<String>();

	// ▼▼▼ ANK-2403-00-00 START
	/**
	 * サービスコンポーネント_CRSV008422SC_オプションサービス契約一覧照会（サービス契約番号）
	 */
	private static final String CRSV008422SC = "CRSV008422SC";
	/**
	 * サービスコンポーネント_CRSV008423SC_オプションサービス契約<ISP>一意照会
	 */
	private static final String CRSV008423SC = "CRSV008423SC";
	// ▲▲▲ ANK-2403-00-00 END
	
	static {
		Collections.addAll(CRW03401
						, "CRSV008405SC"
						, "CRSV008406SC"
						, "CRSV008407SC"
						, "CRSV008408SC"
						, "CRSV008409SC"
						, "CRSV008410SC"
						, "CRSV008411SC"
						, "CRSV008412SC"
						, "KIKIINF1RCC");
		Collections.addAll(CRW03402
						, "CRSV008410SC"
						, "CRSV008415SC"
						, "CRSV008416SC"
						, "CRSV008417SC"
						// ▼▼▼ ANK-2403-00-00 START
						, "CRSV008420SC"
						, "CRSV008421SC"
						, CRSV008422SC
						, CRSV008423SC
						// ▲▲▲ ANK-2403-00-00 END
						// ANK-3834-00-00 ADD START	
						, "CRSV008424SC"
						// ANK-3834-00-00 ADD END
						, "KIKIINF1RCC");
		Collections.addAll(CRW03403
						, "CRSV008405SC"
						, "CRSV008406SC"
						, "CRSV008407SC"
						, "CRSV008409SC"
						, "CRSV008411SC"
						, "CRSV008412SC"
						, "KIKIINF1RCC");
		Collections.addAll(CRW03405
						, "CRSV008405SC"
						, "CRSV008406SC"
						, "CRSV008407SC"
						, "CRSV008408SC"
						, "CRSV008409SC"
						, "CRSV008411SC"
						, "CRSV008412SC"
						, "KIKIINF1RCC");
		Collections.addAll(CRW03406
						, "CRSV008405SC"
						, "CRSV008409SC"
						, "CRSV008410SC"
						, "KIKIINF1RCC");
		Collections.addAll(CRW03407
						, "CRSV008405SC"
						, "CRSV008406SC"
						, "CRSV008407SC"
						, "CRSV008408SC"
						, "CRSV008409SC"
						, "CRSV008410SC"
						, "CRSV008411SC"
						, "CRSV008412SC"
						, "KIKIINF1RCC");
		Collections.addAll(CRW03409
						, "CRSV008405SC"
						, "CRSV008408SC"
						, "CRSV008409SC"
						, "CRSV008410SC"
						, "CRSV008411SC"
						, "CRSV008412SC"
						, "KIKIINF1RCC");
	}

	/**
	 * サービスIFの実行判定を実施する。
	 * @param irp リクエストパラメータ
	 * @param conditionvalue 判定値格納クラス
	 * @return 判定結果
	 * @throws ReqChkException
	 */
	@SuppressWarnings("unchecked")
	public boolean checkExecution(IRequestParameterReadOnly irp, IConditionValue conditionvalue) throws ReqChkException
	{

		try
		{
			String svc = conditionvalue.get("value");
			String reqViewId = irp.getControlMapData("REQ_VIEWID").toString();

			if (VIEWID_CRW034010PJP.equals(reqViewId))
			{
				// 総合案内問合せ対応
				if (CRW03401.contains(svc))
				{
						return true;
				}
			}
			else if(VIEWID_CRW034020PJP.equals(reqViewId))
			{
				// テクニカルサポート問合せ対応
				if (CRW03402.contains(svc))
				{
					// ▼▼▼ ANK-2403-00-00 START
					if (CRSV008423SC.equals(svc))
					{
						HashMap targetMap22 = (HashMap)irp.getData(CRSV008422SC);
						ArrayList list22 = (ArrayList)targetMap22.get(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST);
						return list22.size() > 0;
						
					}
					// ▲▲▲ ANK-2403-00-00 END
					return true;
				}
			}
			else if(VIEWID_CRW034030PJP.equals(reqViewId))
			{
				// eoTVサポート問合せ対応
				if (CRW03403.contains(svc))
				{
						return true;
				}
			}
			else if(VIEWID_CRW034050PJP.equals(reqViewId))
			{
				// eoモバイルサポート問合せ対応
				if (CRW03405.contains(svc))
				{
						return true;
				}
			}
			else if(VIEWID_CRW034060PJP.equals(reqViewId))
			{
				// 開通サポートセンター問合せ対応
				if (CRW03406.contains(svc))
				{
						return true;
				}
			}
			else if(VIEWID_CRW034070PJP.equals(reqViewId))
			{
				// 総合営業センター問合せ対応
				if (CRW03407.contains(svc))
				{
						return true;
				}
			}
			else if(VIEWID_CRW034090PJP.equals(reqViewId))
			{
				// 解約阻止問合せ対応
				if (CRW03409.contains(svc))
				{
						return true;
				}
			}
		}
		catch (RequestParameterException e)
		{
			return false;
		}
		
		return false;
	}
}
