/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JKKejbKK3241SecProc
 *	ソースファイル名：JKKejbKK3241SecProc.java
 *	作成者			：富士通
 *	日付			：2020年06月01日
 *＜機能概要＞
 *	トビラフォンIDスキーマに対する副次処理を行う部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v50.00.00	2020/06/01	FJ)中原		【ANK-3754-00-00】トビラフォン対応
 *
 ********************************************************************************/

package eo.ejb.common.db;


import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.model.base.CAANFinderException;
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.KK3241ETMsg;
import eo.ejb.common.JKKModelCommon;


/**
* <p>
* トビラフォンIDに対する副次処理を行う部品です。
* </p>
* @author 富士通
*/
public class JKKejbKK3241SecProc extends JKKejbKK3241DBABase
{
	/** トビラフォンID **/
	private static final String TOBILAPH_ID = "tobilaph_id";



	/**
	 * <p>
	 * トビラフォンID利用開始処理を行います。
	 * </p>
	 * @param inCBSMsg CBSメッセージ
	 * @param inContext ディスパッチコンテキスト
	 */
	public String startTobilaphId(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		
		// 初期化
		String tobilaphId = "";
		CAANMsg outETMsg = null;
		CAANMsg inETMsg = new CAANMsg(KK3241ETMsg.class.getName());

		// 更新情報の設定
		inETMsg.set(KK3241ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		inETMsg.set(KK3241ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		
		// トビラフォンID排他制御呼出処理
		outETMsg = new JKKejbExclusiveProcKK3241().isExProcTobilaphId(inETMsg, inCBSMsg.getString(JCMConstants.FUNC_CODE_KEY));
		tobilaphId = outETMsg.getString(KK3241ETMsg.TOBILAPH_ID);
		// トビラフォンIDが取得できた場合
		if ( tobilaphId != null && !"".equals(tobilaphId) )
		{
			// トビラフォンID利用開始日更新処理の呼び出しを行う
			this.updStartTobilaphId(inCBSMsg, inContext, tobilaphId);
		}
		else
		{
			return null;
		}
		
		return tobilaphId;

	}
	
	/**
	* <p>
	* トビラフォンIDの利用開始日の更新処理をします。
	* </p>
	* @param inCBSMsg CBSメッセージ
	* @param inContext Agentから渡されたAgentDispatchContext
	* @param tobilaphId トビラフォンID
	*/
	private void updStartTobilaphId(CAANMsg inCBSMsg, AgentDispatchContext inContext, String tobilaphId)
	{
		// トビラフォンID 更新用CAANMsg生成
		CAANMsg updMsg = new CAANMsg(KK3241ETMsg.class.getName());

		// 更新用の項目設定
		updMsg.set(KK3241ETMsg.TOBILAPH_ID, tobilaphId);
		updMsg.set(KK3241ETMsg.USE_STAYMD, JKKModelCommon.getOpeDate(inCBSMsg)); 
		updMsg.set(KK3241ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		updMsg.set(KK3241ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));

		// 更新処理の実行
		try
		{
			update(updMsg);
		}
		catch (CAANFinderException cfe)
		{
			throw new CAANRuntimeException(cfe);
		}
	}

	/**
	* <p>
	* トビラフォンIDの利用終了日の更新処理をします。
	* </p>
	* @param inCBSMsg CBSメッセージ
	* @param inContext Agentから渡されたAgentDispatchContext
	* @param tobilaphId トビラフォンID
	*/
	public void endTobilaphId(CAANMsg inCBSMsg, AgentDispatchContext inContext, String tobilaphId)
	{
		// トビラフォンID 更新用CAANMsg生成
		CAANMsg updMsg = new CAANMsg(KK3241ETMsg.class.getName());

		// 更新用の項目設定
		updMsg.set(KK3241ETMsg.TOBILAPH_ID, tobilaphId);
		updMsg.set(KK3241ETMsg.USE_ENDYMD, JKKModelCommon.getOpeDate(inCBSMsg)); 
		updMsg.set(KK3241ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		updMsg.set(KK3241ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));

		// 更新処理の実行
		try
		{
			update(updMsg);
		}
		catch (CAANFinderException cfe)
		{
			throw new CAANRuntimeException(cfe);
		}
	}

}