/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JTUejbTU0081KRCK
*	ソースファイル名：JTUejbTU0081KRCK.java
*	作成者			：FJ
*	日付			：2011年06月14日
*＜機能概要＞
*	電話帳申込制約部品クラス
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2011/06/14	FJ)楠神		新規作成
*	v5.00.00	2013/09/08	FJ)高橋		OM-2013-0001811
*
**********************************************************************/

package eo.ejb.common.entity;


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.common.constant.JTUStrConst;
import eo.ejb.cbm.entity.TU0081ETMsg;
import eo.ejb.cbm.entity.TU0081LE;
import eo.ejb.common.db.JTUejbTU0081DBABase;

/**
 * <p>
 * 電話帳申込制約部品クラスです。
 * </p>
 * @author FJ
 */
public class JTUejbTU0081KRCK
{

	/**
	 * コンストラクタです。
	 */
	private JTUejbTU0081KRCK()
	{
	}
	
	/**
	 * 電話帳申込送信実績取消対象データのチェックを行う部品。
	 * @param inMsg 
	 * @param inContext 
	 * @param dnwacho_mskm_no 電話帳申込番号
	 * @return データの存在有無
	 */
	public static boolean isSendJskClCheck001(CAANMsg inMsg, AgentDispatchContext inContext
			, Object dnwacho_mskm_no)
	{
		if(dnwacho_mskm_no == null)
		{
			return false;
		}
		
		JTUejbTU0081DBABase base = new JTUejbTU0081DBABase();
		
		// 検索条件の設定
		CAANMsg searchMsg = new CAANMsg(TU0081ETMsg.class.getName());
		searchMsg.set(TU0081ETMsg.DNWACHO_MSKM_NO, dnwacho_mskm_no);
		
		// チェック対象データの取得
		CAANMsg outMsg = base.findByCurrent(searchMsg);

		if (outMsg == null)
		{
			return false;
		}
		
		String gene_add_dtm = outMsg.getString(TU0081ETMsg.GENE_ADD_DTM);
		
		// 検索条件の設定
		searchMsg = new CAANMsg(TU0081ETMsg.class.getName());
		searchMsg.set(TU0081ETMsg.SVC_KEI_UCWK_NO, outMsg.getString(TU0081ETMsg.SVC_KEI_UCWK_NO));
		searchMsg.set(TU0081ETMsg.HJIN_EO_YKAE_SVKEI_NO, outMsg.getString(TU0081ETMsg.HJIN_EO_YKAE_SVKEI_NO));
		searchMsg.set(TU0081ETMsg.MK_FLG, JTUStrConst.MK_FLG_YK);
		
		// 法人の場合は電話帳申込番号を条件に加える
		if(JTUStrConst.HOJIN.equals(outMsg.getString(TU0081ETMsg.HOJIN_KOJIN_CD)))
		{
			searchMsg.set(TU0081ETMsg.DNWACHO_MSKM_NO, outMsg.getString(TU0081ETMsg.DNWACHO_MSKM_NO));
		}

		// 同一サービスの一覧を取得
		CAANMsg[] outMsgList = null;
		try
		{
			outMsgList = new TU0081LE().findByCondition(searchMsg);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}
		if(outMsgList == null || outMsgList.length == 0)
		{
			return false;
		}
		
		// 送信実績対象データを取得
		CAANMsg trgtMsg = null;
		for(CAANMsg msg : outMsgList)
		{
			if(trgtMsg == null 
					|| msg.getString(TU0081ETMsg.GENE_ADD_DTM).compareTo(trgtMsg.getString(TU0081ETMsg.GENE_ADD_DTM)) > 0)
			{
				trgtMsg = msg;
			}
		}
		
		// 送信実績対象データがチェック対象と同一であれば True
		if(dnwacho_mskm_no.equals(trgtMsg.getString(TU0081ETMsg.DNWACHO_MSKM_NO)) 
				&& gene_add_dtm.equals(trgtMsg.getString(TU0081ETMsg.GENE_ADD_DTM)))
		{
			return true;
		}
		
		return false;
		
	}

}
