/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JEKU0011C040TPMA
 *	ソースファイル名：JEKU0011C040TPMA.java
 *	作成者			：FJ)麻生
 *	日付			：2017年12月06日
 *＜機能概要＞
 *	流用元工事案件のサービスIF顧客独自処理部品
 *＜修正履歴＞
 *	バージョン	修正日		修正者			修正内容
 *	v31.00.00	2017/12/06	FJ)麻生			新規作成
 *	v31.00.01	2017/06/25	FJ)麻生			【IT1-2018-0000098】正常な設備流用時にチェックエラーが発生する
 *	v61.00.00	2022/11/10	 FJ)北川	 【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応(Step1対応)
 *	v71.00.11	2024/04/24	FJ)森下			【ANK-4468-11-00】eo光ネット「シンプルプラン」追加対応 仕変11
 ********************************************************************************/

package eo.ejb.cbs.mainproc;

import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.StatusCodes;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateMainHandler;

import eo.ejb.cbs.cbsmsg.EKU0011C040CBSMsg;
import eo.ejb.common.db.JKKejbMskmEquipRyuyoChk;

/**
 * <p>
 * 流用元工事案件のサービスIF顧客独自処理部品クラスです。
 * </p>
 * 
 * @author 945604
 */
public class JEKU0011C040TPMA implements TemplateMainHandler
{
	/** CBS層 ネット・電話設備流用有無 キー項目名 */
	private static final String CBS_NET_EQUIP_RYUYO_UM = "net_equip_ryuyo_um";

	/** CBS層 ネット・電話設備流用元工事案件番号 キー項目名 */
	private static final String CBS_NET_RYUYO_MOTO_KJAK_NO = "net_ryuyo_moto_kjak_no";

	/** CBS層 テレビ設備流用有無 キー項目名 */
	private static final String CBS_TV_EQUIP_RYUYO_UM = "tv_equip_ryuyo_um";

	/** CBS層 テレビ設備流用元工事案件番号 キー項目名 */
	private static final String CBS_TV_RYUYO_MOTO_KJAK_NO = "tv_ryuyo_moto_kjak_no";

	// ANK-4468-11-00 ADD START
	/** CBS層 乗換シンプルフラグ キー項目名 */
	private static final String CBS_NRKE_SIMPLE_FLG = "nrke_simple_flg";
	// ANK-4468-11-00 ADD END

	/** エラーフラグ */
	private static final String ERR_FLG_EA = "EA";

	/** エラーフラグ */
	private static final String ERR_FLG_EB = "EB";

	/** エラーフラグ */
	private static final String ERR_FLG_EC = "EC";
	
	// ANK-4315-00-00 ADD START
	/** エラーフラグ */
	private static final String ERR_FLG_ED = "ED";
	// ANK-4315-00-00 ADD END

	/** サービスコード（インターネットサービス） */
	private static final String SVC_CD_NET = "01";

	/** サービスコード（テレビサービス） */
	private static final String SVC_CD_TV = "03";

	/**
	 * <p>
	 * 流用元工事案件の設備流用チェックを行います。
	 * </p>
	 * 
	 * @param inCBSMsg
	 *            処理対象のメッセージキャリア
	 * @param inContext
	 *            Agentから渡されたAgentDispatchContext
	 */
	public void execCheckProc(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// ネット・電話設備流用有無が設定されている場合
		if (inCBSMsg.getString(CBS_NET_EQUIP_RYUYO_UM) != null)
		{
			// 必要な項目を保持したETMsgを作成する
			CAANMsg inETMsg = new CAANMsg();

			// ネット・電話設備流用有無
			inETMsg.setPrivate(JKKejbMskmEquipRyuyoChk.EQUIP_RYUYO_UM, inCBSMsg.getString(CBS_NET_EQUIP_RYUYO_UM));
			// ネット・電話設備流用元工事案件番号
			inETMsg.setPrivate(JKKejbMskmEquipRyuyoChk.RYUYO_MOTO_KJAK_NO, inCBSMsg.getString(CBS_NET_RYUYO_MOTO_KJAK_NO));
			// サービスコード
			inETMsg.setPrivate(JKKejbMskmEquipRyuyoChk.SVC_CD, SVC_CD_NET);
			// ANK-4468-11-00 ADD START
			// 乗換シンプルフラグ
			inETMsg.setPrivate(JKKejbMskmEquipRyuyoChk.NRKE_SIMPLE_FLG, inCBSMsg.getString(CBS_NRKE_SIMPLE_FLG));
			// ANK-4468-11-00 ADD END

			// 設備流用チェック処理の呼び出し
			new JKKejbMskmEquipRyuyoChk().chkMskm(inETMsg);

			// チェック結果にＮＧがある場合は関連制約エラーとする
			CAANMsg[] msgArray = inETMsg.getCAANMsgList(JKKejbMskmEquipRyuyoChk.class.getName());
			if (msgArray != null)
			{
				for (int i = 0; i < msgArray.length; i++)
				{
					String trgCd = msgArray[i].getString(JKKejbMskmEquipRyuyoChk.MSKM_TRG_CD);
					String rltCd = msgArray[i].getString(JKKejbMskmEquipRyuyoChk.MSKM_RLT_CD);
					if (JKKejbMskmEquipRyuyoChk.MSKM_RLT_NG.equals(rltCd))
					{
						if (JKKejbMskmEquipRyuyoChk.MSKMCHK_TRG_001.equals(trgCd))
						{
							// ネット・電話工事案件最新基本工事チェックエラー
							inCBSMsg.set(EKU0011C040CBSMsg.NET_RYUYO_MOTO_KJAK_NO_ERR, ERR_FLG_EA);
							inCBSMsg.set(JCMConstants.STATUS_INT_KEY, StatusCodes.RELATION_ERR);
						}
						else if (JKKejbMskmEquipRyuyoChk.MSKMCHK_TRG_002.equals(trgCd))
						{
							// ネット・電話流用元機器返品チェック（予約手続中）エラー
							inCBSMsg.set(EKU0011C040CBSMsg.NET_RYUYO_MOTO_KJAK_NO_ERR, ERR_FLG_EB);
							inCBSMsg.set(JCMConstants.STATUS_INT_KEY, StatusCodes.RELATION_ERR);
						}
						else if (JKKejbMskmEquipRyuyoChk.MSKMCHK_TRG_003.equals(trgCd))
						{
							// ネット・電話流用元機器返品チェックエラー
							inCBSMsg.set(EKU0011C040CBSMsg.NET_RYUYO_MOTO_KJAK_NO_ERR, ERR_FLG_EC);
							inCBSMsg.set(JCMConstants.STATUS_INT_KEY, StatusCodes.RELATION_ERR);
						}
						// ANK-4315-00-00 ADD START
						else if (JKKejbMskmEquipRyuyoChk.MSKMCHK_TRG_004.equals(trgCd))
						{
							// ネット・電話流用元親機器種別コードエラー
							inCBSMsg.set(EKU0011C040CBSMsg.NET_RYUYO_MOTO_KJAK_NO_ERR, ERR_FLG_ED);
							inCBSMsg.set(JCMConstants.STATUS_INT_KEY, StatusCodes.RELATION_ERR);
						}
						// ANK-4315-00-00 ADD END
					}
				}
			}
		}

		// テレビ設備流用有無が設定されている場合
		if (inCBSMsg.getString(CBS_TV_EQUIP_RYUYO_UM) != null)
		{
			// 必要な項目を保持したETMsgを作成する
			CAANMsg inETMsg = new CAANMsg();

			// テレビ設備流用有無
			inETMsg.setPrivate(JKKejbMskmEquipRyuyoChk.EQUIP_RYUYO_UM, inCBSMsg.getString(CBS_TV_EQUIP_RYUYO_UM));
			// テレビ設備流用元工事案件番号
			inETMsg.setPrivate(JKKejbMskmEquipRyuyoChk.RYUYO_MOTO_KJAK_NO, inCBSMsg.getString(CBS_TV_RYUYO_MOTO_KJAK_NO));
			// サービスコード
			inETMsg.setPrivate(JKKejbMskmEquipRyuyoChk.SVC_CD, SVC_CD_TV);

			// 設備流用チェック処理の呼び出し
			new JKKejbMskmEquipRyuyoChk().chkMskm(inETMsg);

			// チェック結果にＮＧがある場合は関連制約エラーとする
			CAANMsg[] msgArray = inETMsg.getCAANMsgList(JKKejbMskmEquipRyuyoChk.class.getName());
			if (msgArray != null)
			{
				for (int i = 0; i < msgArray.length; i++)
				{
					String trgCd = msgArray[i].getString(JKKejbMskmEquipRyuyoChk.MSKM_TRG_CD);
					String rltCd = msgArray[i].getString(JKKejbMskmEquipRyuyoChk.MSKM_RLT_CD);
					if (JKKejbMskmEquipRyuyoChk.MSKM_RLT_NG.equals(rltCd))
					{
						if (JKKejbMskmEquipRyuyoChk.MSKMCHK_TRG_001.equals(trgCd))
						{
							// テレビ工事案件最新基本工事チェックエラー
							inCBSMsg.set(EKU0011C040CBSMsg.TV_RYUYO_MOTO_KJAK_NO_ERR, ERR_FLG_EA);
							inCBSMsg.set(JCMConstants.STATUS_INT_KEY, StatusCodes.RELATION_ERR);
						}
						else if (JKKejbMskmEquipRyuyoChk.MSKMCHK_TRG_002.equals(trgCd))
						{
							// テレビ流用元機器返品チェック（予約手続中）エラー
							inCBSMsg.set(EKU0011C040CBSMsg.TV_RYUYO_MOTO_KJAK_NO_ERR, ERR_FLG_EB);
							inCBSMsg.set(JCMConstants.STATUS_INT_KEY, StatusCodes.RELATION_ERR);
						}
						else if (JKKejbMskmEquipRyuyoChk.MSKMCHK_TRG_003.equals(trgCd))
						{
							// テレビ流用元機器返品チェックエラー
			 				// IT1-2018-0000098 MOD START
//							inCBSMsg.set(EKU0011C040CBSMsg.NET_RYUYO_MOTO_KJAK_NO_ERR, ERR_FLG_EC);
							inCBSMsg.set(EKU0011C040CBSMsg.TV_RYUYO_MOTO_KJAK_NO_ERR, ERR_FLG_EC);
			 				// IT1-2018-0000098 MOD END
							inCBSMsg.set(JCMConstants.STATUS_INT_KEY, StatusCodes.RELATION_ERR);
						}
						//ANK-4315-00-00 ADD START
						else if (JKKejbMskmEquipRyuyoChk.MSKMCHK_TRG_004.equals(trgCd))
						{
						
						}
						//ANK-4315-00-00 ADD END
					}
				}
			}
		}
	}
}