/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JECK0011C120TPMA
*	ソースファイル名：JECK0011C120TPMA.java
*	作成者			：富士通
*	日付			：2011年10月05日
*＜機能概要＞
*	会員種別変更時の副次処理を呼び出す部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/10/05	富士通		新規作成
*   v10.00.00	2014/10/04	FJ)星野		OM-2014-0003146
*   v33.00.00	2017/08/22	FJ)孫		ANK-3035-00-00 未来予約データ存在時のお客様スキーマの挙動
**********************************************************************/

package eo.ejb.cbs.mainproc;

import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateMainHandler;

import eo.ejb.cbs.cbsmsg.ECK0011C011CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011C120CBSMsg;
import eo.ejb.common.JCKModelCommon;
import eo.ejb.common.db.JCKejbCK0011SecProc;
import eo.ejb.common.db.JCKejbCK0011SubTypeCreate;
import eo.ejb.common.db.JKKejbIdoRsvDBAUtil;

/**
 * <p>
 * 会員種別変更の顧客独自処理部品クラスです。
 * </p>
 * @author 富士通
 */
public class JECK0011C120TPMA implements TemplateMainHandler
{

	/**
	 * <p>
	 * 会員種別変更の副次処理部品の呼び出しを行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	*/
	public void createSubTypeCK0011(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 開始ログ出力
		JSYejbLog.println(JSYejbLog.DEBUG, getClass(), "call:JECK0011C120TPMA.createSubTypeCK0011");

		// お客様サブタイプ登録処理の呼び出し
		JCKejbCK0011SubTypeCreate instance = new JCKejbCK0011SubTypeCreate(inCBSMsg);
		instance.setSysid(inCBSMsg.getString(ECK0011C120CBSMsg.SYSID));
		instance.setGeneAddDtm(inCBSMsg.getString(ECK0011C120CBSMsg.GENE_ADD_DTM));
		instance.createSubTypeCK0011();

		// 終了ログ出力
		JSYejbLog.println(JSYejbLog.DEBUG, getClass(), "end:JECK0011C120TPMA.createSubTypeCK0011");
	}
	
	// v10.00.00 OM-2014-0003146対応 20141004 ADD START
	/**
	 * <p>
	 * 会員種別変更予約取消処理
	 * @param svcKeiNo   サービス契約番号
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * </p>
	 */
	public void callCancelRsv(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 開始ログ出力
		JSYejbLog.println(JSYejbLog.DEBUG, getClass(), "call:JECK0011C120TPMA.callCancelRsv");
		
		// SYSID取得
		String sysid = inCBSMsg.getString(ECK0011C120CBSMsg.SYSID);
		// 運用日付取得
		String opeDate = JCKModelCommon.getOpeDate(inCBSMsg);
		
		
		// SYSIDでお客様_お客様予約取消
		JCKejbCK0011SecProc instanceCK0011 = new JCKejbCK0011SecProc();
		instanceCK0011.cancelCustRsv(inCBSMsg, inContext, sysid, opeDate);

		
		// SYSIDで異動予約_お客様予約取消
		JKKejbIdoRsvDBAUtil instanceIdoRsv = new JKKejbIdoRsvDBAUtil();
		CAANMsg[] targetMsgsOfCur = instanceIdoRsv.getCustRsvInIdoRsv(inCBSMsg, inContext, sysid, opeDate);

		// 対象レコードの更新
		for (CAANMsg targetMsgOfCur : targetMsgsOfCur)
		{
			instanceIdoRsv.cancelCustRsvInIdoRsv(inCBSMsg, inContext, targetMsgOfCur);
		}
		
		// 終了ログ出力
		JSYejbLog.println(JSYejbLog.DEBUG, getClass(), "end:JECK0011C120TPMA.callCancelRsv");
	}
	// v10.00.00 OM-2014-0003146対応 20141004 ADD END
	
	// ANK-3035-00-00 2017/08/24 ADD START
	/**
	 * <p>
	 * 会員種別更新の副次処理部品の呼び出しを行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	*/
	public void callUpdCustRsv(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		
		JCKejbCK0011SecProc instance = new JCKejbCK0011SecProc();
		String sysid = inCBSMsg.getString(ECK0011C011CBSMsg.SYSID);					// SYSID
		String rsvYmd = (String)JCKModelCommon.getOpeDate(inCBSMsg, inContext);	// 予約適用年月日
		
		// お客様予約更新処理の呼び出し
		instance.updateCustRsv(inCBSMsg, inContext, sysid, rsvYmd);
	}
	// ANK-3035-00-00 2017/08/24 ADD END
}
