/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JCKejbCK0011Edit
*	ソースファイル名：JCKejbCK0011Edit.java
*	作成者			：富士通
*	日付			：2012年10月26日
*＜機能概要＞
*	お客様の編集部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/10/26	FJ)			新規作成
*	v4.00.00	2013/03/17	FJ)沖田		OT-2013-0000308対応
*	v4.00.01	2013/03/19	FJ)沖田		OT-2013-0000308対応
*	v5.00.00	2013/08/01	FJ)沖田		IT2-2013-0000674対応
*
**********************************************************************/

package eo.ejb.common.edit;

import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.ejb.cbm.entity.CK0011ETMsg;
import eo.ejb.common.JCKModelCommon;
import eo.ejb.common.db.JCKejbCK0011DBABase;

/**
 * <p>
 * お客様の編集部品です
 * </p>
 * @author 富士通
 */
public class JCKejbCK0011Edit extends JCKejbCK0011DBABase
{
	/** 会員種別コード(非eo会員) */
	private static final String MEMB_SBT_CD_HI_EOMNB = "00";

	/** eoID変更項目コード(eoID) */
	private static final String EOID_CHG_KMK_CD_EOID = "10";

	/** eoID変更項目コード(eoパスワード) */
	private static final String EOID_CHG_KMK_CD_EOID_PWD = "11";
	
	/** eoID変更履歴コード(初期化) */
	private static final String EOID_CHG_RK_CD_SHKKA = "05";
	
	/**
	 * <p>
	 * 新しいJCKejbCK0011Editを作成します。
	 * </p>
	 */
	public JCKejbCK0011Edit()
	{
	}
	
	/**
	 * 非eo会員お客様回復年月日取得処理
	 * <p>
	 * 対象のお客様が"非eo会員"である場合のお客様回復年月日を取得する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param sysId SYSID
	 * @return 対象のお客様が"非eo会員"である場合、null
	 *          上記以外の場合、運用日付
	 */
	public String getHiEoMbrCustKaihkYmd(CAANMsg inCBSMsg, AgentDispatchContext inContext, Object sysId)
	{
		// 運用日付
		String opeData = JCKModelCommon.getOpeDate(inCBSMsg);

		// 引数チェック
		if (null == sysId)
		{
			return opeData;
		}

		// お客様のカレントレコードを取得
		CAANMsg inETMsg = new CAANMsg(CK0011ETMsg.class.getName());
		inETMsg.set(CK0011ETMsg.SYSID, sysId.toString());
		inETMsg.set(CK0011ETMsg.RSV_APLY_YMD, opeData);
		CAANMsg outETMsg = findByCurrent(inETMsg);

		// カレントレコードが取得できない場合、運用日付を返却
		if (null == outETMsg)
		{
			return opeData;
		}

		// カレントの会員種別コードが"非eo会員"の場合、nullを返却
		if (MEMB_SBT_CD_HI_EOMNB.equals(outETMsg.getString(CK0011ETMsg.MEMBER_SBT_CD)))
		{
			return null;
		}

		// 運用日付を返却
		return opeData;
	}
	

	/**
	 * eoID関連情報変更識別コード取得処理
	 * <p>
	 * 初期化種別コードによりeoID関連情報変更識別コードを取得する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param shkkaSbtCd 初期化種別コード
	 * @return 初期化種別コードが"1"または"2"である場合、「eoID変更項目コード」 + 「コード名称管理マスタ．eoID変更履歴コード」
	 *          上記以外の場合、null
	 */
	public String getEoidKnrnInfChgSkcd(CAANMsg inCBSMsg, AgentDispatchContext inContext, Object shkkaSbtCd) {

		// 引数チェック
		if (null == shkkaSbtCd || "".equals(shkkaSbtCd))
		{
			return null;
		}
		
		if ("1".equals(shkkaSbtCd)) 
		{
			//「eoID変更項目コード(eoID)」 + 「eoID変更履歴コード(初期化)」
			return EOID_CHG_KMK_CD_EOID + EOID_CHG_RK_CD_SHKKA;
		}
		else if ("2".equals(shkkaSbtCd))
		{
			//「eoID変更項目コード(eoIDパスワード)」 + 「eoID変更履歴コード(初期化)」
			return EOID_CHG_KMK_CD_EOID_PWD + EOID_CHG_RK_CD_SHKKA;
		}
		
		return null;
	}

	/**
	 * eoID関連情報変更年月日時分秒取得処理
	 * <p>
	 * 初期化種別コードによりeoID関連情報変更年月日時分秒を取得する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param shkkaSbtCd 初期化種別コード
	 * @return 初期化種別コードが"1"または"2"である場合、運用日付＋システム時間(YYYYMMDDHHMMSS_SSS)を返却
	 *          上記以外の場合、null
	 * @throws Exception 例外発生時
	 */
	public String getEoidKnrnInfChgDtm(CAANMsg inCBSMsg, AgentDispatchContext inContext, Object shkkaSbtCd) {

		// 引数チェック
		if (null == shkkaSbtCd || "".equals(shkkaSbtCd))
		{
			return null;
		}
		
		if ("1".equals(shkkaSbtCd) || "2".equals(shkkaSbtCd)) 
		{
			return JCKModelCommon.getOpeDateTimeStamp(inCBSMsg);
		}
		
		return null;
	}

	/**
	 * 初期eoID取得処理
	 * <p>
	 * 初期化種別コードが"1"の場合、カレントレコードの「初期eoID」を返却する。
	 * 初期化種別コード"1"以外の場合、カレントレコードの「eoID」を返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param sysid SYSID
	 * @param shkkaSbtCd 初期化種別コード
	 * @return 初期化種別コードが"1"の場合、「初期eoID」を返却。上記以外の場合、「eoID」を返却。
	 */
	public String getShkEoid(CAANMsg inCBSMsg, AgentDispatchContext inContext, Object sysid, Object shkkaSbtCd) {

		// お客様のカレントレコードを取得
		CAANMsg ck0011Msg =new JCKejbCK0011DBABase().getCK0011Current((String) sysid, JCKModelCommon.getOpeDate(inCBSMsg));
		
		if ("1".equals(shkkaSbtCd)) 
		{
			//「初期eoID」
			return ck0011Msg.getString(CK0011ETMsg.SHK_EOID);
		}
		//「eoID」
		return ck0011Msg.getString(CK0011ETMsg.EOID);
	}
	
}
