/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JCKejbCK0121SecProc
 *	ソースファイル名：JCKejbCK0121SecProc.java
 *	作成者			：富士通
 *	日付			：2011年10月13日
 *＜機能概要＞
 *	お客様グループ設定に対する副次処理を行う部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	ｖ1.00.00
 *  v5.00.00    2013/08/29  FJ)寺本     OM-2013-0001234
 *  v39.00.00	2018/08/24	FJ)杉本		【OM-2018-0000740】eoオンデマンド申込阻害
 ********************************************************************************/

package eo.ejb.common.db;

import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.ejb.cbm.entity.CK0121ETMsg;
import eo.ejb.cbm.entity.CK0121LE;
import eo.ejb.common.JCKModelCommon;
import java.util.HashMap;

/**
* <p>
* お客様グループ設定に対する副次処理を行う部品です。
* </p>
* @author 富士通
*/
public class JCKejbCK0121SecProc extends JCKejbCK0121DBABase
{
	
	/** お客様グループ設定ステータス(有効) **/
	private static final String CUST_GRP_SETTE_STAT_YUKO = "001";
	
	/** お客様グループ設定ステータス(無効) **/
	private static final String CUST_GRP_SETTE_STAT_MUKO = "002";
	
	/** 予約適用コード(予約確定) **/
	private static final String RSV_APLY_CD_KAKUTEI = "2";

	/** 無効フラグ(有効) **/
	private static final String MK_FLG_YUKO = "0";
	
	/**
	 * <p>
	 * お客様グループ設定のお客様回復を行います。
	 * </p>
	 * @param inCbsMsg CBSメッセージ
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param sysid 入力のSYSID
	 * @param cust_kaihk_ymd お客様回復年月日
	 */
	public void custKaihk(CAANMsg inCbsMsg, AgentDispatchContext inContext, String sysid, String cust_kaihk_ymd)
	{
//OM-2018-0000740 2018/08/24 DEL START
//		// お客様グループ設定の一覧照会を行う
//		CAANMsg inETMsg0121 = new CAANMsg(CK0121ETMsg.class.getName());
//		inETMsg0121.set(CK0121ETMsg.SYSID, sysid);
//		inETMsg0121.set(CK0121ETMsg.MK_FLG, MK_FLG_YUKO);
//
//		CK0121LE ck0121 = new CK0121LE();
//		CAANMsg[] otETMsg0121Intert = null;
//
//		try
//		{
//			otETMsg0121Intert = ck0121.findByCondition(inETMsg0121);
//		}
//		catch (CAANException e1)
//		{
//			throw new CAANRuntimeException(e1);
//		}
//
//		// お客様グループ設定が存在しない場合は終了
//		int listCnt = otETMsg0121Intert.length;
//		if (listCnt < 1)
//		{
//			return;
//		}
//
//		String retCustGrpSetteNo = null;
//		CAANMsg inETMsgForCurrent0121 = new CAANMsg(CK0121ETMsg.class.getName());
//		
//		// お客様グループ設定番号格納用マップ
//		HashMap<String, String> escapeMap = new HashMap<String, String>();
//
//		try
//		{
//			for (int j = 0; j < listCnt; j++)
//			{
//				retCustGrpSetteNo = otETMsg0121Intert[j].getString(CK0121ETMsg.CUST_GRP_SETTE_NO);
//				
//				if (escapeMap.containsKey(retCustGrpSetteNo))
//				{
//					// 既に検索済みの場合
//					continue;
//				}
//				// お客様グループ設定番号を格納します
//				escapeMap.put(retCustGrpSetteNo, retCustGrpSetteNo);
//				
//				// 一覧結果の割引サービス契約内訳番号でカレント検索を行います
//				inETMsgForCurrent0121.set(CK0121ETMsg.CUST_GRP_SETTE_NO, retCustGrpSetteNo);
//				inETMsgForCurrent0121.set(CK0121ETMsg.RSV_APLY_YMD, JCKModelCommon.getOpeDate(inCbsMsg));
//				CAANMsg retCurrentETMsg0121 = new JCKejbCK0121DBABase().findByCurrent(inETMsgForCurrent0121);
//
//				if (null == retCurrentETMsg0121)
//				{
//					// カレントレコードが存在しない場合
//					continue;
//				}
//
//				CAANMsg inETMsg0121Insert = null;
//
//				// お客様グループ設定のETメッセージに以下の値を設定し登録を行う。
//				inETMsg0121Insert = otETMsg0121Intert[j];
//				
//				// お客様グループ設定のお客様回復処理を行う。
//				//(カレントから変更するものだけここで設定)
//				inETMsg0121Insert.set(CK0121ETMsg.GENE_ADD_DTM, (String)JCKModelCommon.getTransferGeneAddDtm(inCbsMsg, inContext));
//				inETMsg0121Insert.set(CK0121ETMsg.CUST_GRP_SETTE_STAT, CUST_GRP_SETTE_STAT_YUKO);
//				inETMsg0121Insert.setNull(CK0121ETMsg.CUST_GRP_SETTE_MK_YMD);
//				inETMsg0121Insert.set(CK0121ETMsg.CUST_GRP_SETTE_KAIHK_YMD, cust_kaihk_ymd);
//				inETMsg0121Insert.set(CK0121ETMsg.RSV_APLY_YMD, cust_kaihk_ymd);
//				inETMsg0121Insert.set(CK0121ETMsg.RSV_APLY_CD, RSV_APLY_CD_KAKUTEI);
//				inETMsg0121Insert.set(CK0121ETMsg.ADD_DTM, inCbsMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
//				inETMsg0121Insert.set(CK0121ETMsg.ADD_OPEACNT, inCbsMsg.getString(JCMConstants.OPERATOR_ID_KEY));
//				inETMsg0121Insert.set(CK0121ETMsg.UPD_DTM, inCbsMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
//				inETMsg0121Insert.set(CK0121ETMsg.UPD_OPEACNT, inCbsMsg.getString(JCMConstants.OPERATOR_ID_KEY));
//				inETMsg0121Insert.set(CK0121ETMsg.MK_FLG, MK_FLG_YUKO);
//				inETMsg0121Insert.setNull(CK0121ETMsg.DEL_DTM);
//				inETMsg0121Insert.setNull(CK0121ETMsg.DEL_OPEACNT);
//						
//				create(inETMsg0121Insert);
//
//			}
//
//		}
//		catch (CAANException e1)
//		{
//			throw new CAANRuntimeException(e1);
//		}
//OM-2018-0000740 2018/08/24 DEL END
	}

	/**
	 * <p>
	 * お客様グループ設定のお客様退会を行います。
	 * </p>
	 * @param inCbsMsg CBSメッセージ
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param sysid 入力のSYSID
	 * @param cust_Taikai_ymd お客様退会年月日
	 * @param upd_date 運用日付
	 */
	public void custTaikai(CAANMsg inCbsMsg, AgentDispatchContext inContext, String sysid, String cust_Taikai_ymd, String upd_date)
	{
		// お客様グループ設定の一覧照会を行う
		CAANMsg inETMsg0121 = new CAANMsg(CK0121ETMsg.class.getName());
		inETMsg0121.set(CK0121ETMsg.SYSID, sysid);
		inETMsg0121.set(CK0121ETMsg.MK_FLG, MK_FLG_YUKO);

		CK0121LE ck0121 = new CK0121LE();
		CAANMsg[] otETMsg0121Intert = null;

		try
		{
			otETMsg0121Intert = ck0121.findByCondition(inETMsg0121);
		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}

		// お客様グループ設定が存在しない場合は終了
		int listCnt = otETMsg0121Intert.length;
		if (listCnt < 1)
		{
			return;
		}

		String retCustGrpSetteNo = null;
		CAANMsg inETMsgForCurrent0121 = new CAANMsg(CK0121ETMsg.class.getName());
		
		// お客様グループ設定番号格納用マップ
		HashMap<String, String> escapeMap = new HashMap<String, String>();

		try
		{
			for (int j = 0; j < listCnt; j++)
			{
				retCustGrpSetteNo = otETMsg0121Intert[j].getString(CK0121ETMsg.CUST_GRP_SETTE_NO);
				
				if (escapeMap.containsKey(retCustGrpSetteNo))
				{
					// 既に検索済みの場合
					continue;
				}
				// お客様グループ設定番号を格納します
				escapeMap.put(retCustGrpSetteNo, retCustGrpSetteNo);
				
				// 一覧結果の割引サービス契約内訳番号でカレント検索を行います
				inETMsgForCurrent0121.set(CK0121ETMsg.CUST_GRP_SETTE_NO, retCustGrpSetteNo);
				inETMsgForCurrent0121.set(CK0121ETMsg.RSV_APLY_YMD, JCKModelCommon.getOpeDate(inCbsMsg));
				CAANMsg retCurrentETMsg0121 = new JCKejbCK0121DBABase().findByCurrent(inETMsgForCurrent0121);

				if (null == retCurrentETMsg0121)
				{
					// カレントレコードが存在しない場合
					continue;
				}

				CAANMsg inETMsg0121Insert = null;

				// お客様グループ設定のETメッセージに以下の値を設定し登録を行う。
				inETMsg0121Insert = otETMsg0121Intert[j];
				
				// お客様グループ設定のお客様退会処理を行う。
				//(カレントから変更するものだけここで設定)
				inETMsg0121Insert.set(CK0121ETMsg.GENE_ADD_DTM, (String)JCKModelCommon.getTransferGeneAddDtm(inCbsMsg, inContext));
				inETMsg0121Insert.set(CK0121ETMsg.CUST_GRP_SETTE_STAT, CUST_GRP_SETTE_STAT_MUKO);
				inETMsg0121Insert.set(CK0121ETMsg.CUST_GRP_SETTE_MK_YMD, cust_Taikai_ymd);
				inETMsg0121Insert.set(CK0121ETMsg.RSV_APLY_YMD, upd_date);
				inETMsg0121Insert.set(CK0121ETMsg.RSV_APLY_CD, RSV_APLY_CD_KAKUTEI);
				inETMsg0121Insert.set(CK0121ETMsg.ADD_DTM, inCbsMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
				inETMsg0121Insert.set(CK0121ETMsg.ADD_OPEACNT, inCbsMsg.getString(JCMConstants.OPERATOR_ID_KEY));
				inETMsg0121Insert.set(CK0121ETMsg.UPD_DTM, inCbsMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
				inETMsg0121Insert.set(CK0121ETMsg.UPD_OPEACNT, inCbsMsg.getString(JCMConstants.OPERATOR_ID_KEY));
				inETMsg0121Insert.setNull(CK0121ETMsg.DEL_DTM);
				inETMsg0121Insert.setNull(CK0121ETMsg.DEL_OPEACNT);
				inETMsg0121Insert.set(CK0121ETMsg.MK_FLG, MK_FLG_YUKO);
						
				create(inETMsg0121Insert);
			}
		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}
	}
}
