/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JSCejbSC0011KRCK
*	ソースファイル名：JSCejbSC0011KRCK.java
*	作成者			：富士通
*	日付			：2011年08月25日
*＜機能概要＞
*	オーダマスタ制約部品クラス
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*
**********************************************************************/

package eo.ejb.common.entity;

import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.common.constant.JSCStrConstant;
import eo.ejb.cbm.entity.SC0011ETMsg; //オーダ				
import eo.ejb.cbm.entity.SC0021ETMsg;
import eo.ejb.cbm.entity.SC0031ETMsg;
import eo.ejb.cbm.entity.SC0041ETMsg; //サービスオーダ 		
import eo.ejb.cbm.entity.SC0051ETMsg; //電話サービスオーダ	

import eo.ejb.common.JPCModelCommon;
import eo.ejb.common.db.JSCejbSC0011DBABase;
import eo.ejb.common.EventIDList;

/**
 * <p>
 * オーダマスタ制約部品クラスです。
 * </p>
 * @author 富士通
 */
public class JSCejbSC0011KRCK
{

	/**
	 * コンストラクタです。
	 */
	private JSCejbSC0011KRCK()
	{
	}

	/**
	 * オーダマスタの存在チェックを行う部品。
	 * 
	 * @param inMsg 
	 * @param inContext 
	 * @return データの存在有無
	 */
	public static boolean isExistsOrder(CAANMsg inMsg, AgentDispatchContext inContext)
	{
		JSCejbSC0011DBABase base = new JSCejbSC0011DBABase();

		//運用日付の取得
		int opeDate = Integer.parseInt((String)JPCModelCommon.getOpeDate(inMsg, inContext, null));

		// 検索条件を作成
		CAANMsg inETMsgR = new CAANMsg(SC0011ETMsg.class.getName());
		if((inMsg.getString(SC0011ETMsg.EVENTID).equals(EventIDList.SC0041D001))
		  ||(inMsg.getString(SC0011ETMsg.EVENTID).equals(EventIDList.ISC0041D001))){
			//サービスオーダ
			inETMsgR.set(SC0011ETMsg.ORDER_SBT_CD, JSCStrConstant.ORDER_SBT_CD_NET);
			inETMsgR.set(SC0011ETMsg.SVC_ORDER_CD, inMsg.getString(SC0041ETMsg.SVC_ORDER_CD));
			inETMsgR.set(SC0011ETMsg.YOKYU_SBT_CD, inMsg.getString(SC0041ETMsg.YOKYU_SBT_CD));
		} else if((inMsg.getString(SC0011ETMsg.EVENTID).equals(EventIDList.SC0051D001))
		  ||(inMsg.getString(SC0011ETMsg.EVENTID).equals(EventIDList.ISC0051D001))){
			//電話サービスオーダ
			//緊急通報の場合
			if(JSCStrConstant.TEL_SERVICE_ORD_EMERG.equals(inMsg.getString(SC0051ETMsg.TEL_SVC_ORDER_CD)))
			{
				inETMsgR.set(SC0011ETMsg.ORDER_SBT_CD, JSCStrConstant.ORDER_SBT_CD_EMERG);
			}
			else
			{
				inETMsgR.set(SC0011ETMsg.ORDER_SBT_CD, JSCStrConstant.ORDER_SBT_CD_TEL);
			}
			inETMsgR.set(SC0011ETMsg.SVC_ORDER_CD, inMsg.getString(SC0051ETMsg.TEL_SVC_ORDER_CD));
			inETMsgR.set(SC0011ETMsg.YOKYU_SBT_CD, inMsg.getString(SC0051ETMsg.YOKYU_SBT_CD));
		} else if((inMsg.getString(SC0011ETMsg.EVENTID).equals(EventIDList.SC0031D001))
				  ||(inMsg.getString(SC0011ETMsg.EVENTID).equals(EventIDList.ISC0031D001))){
			//モバイルオーダ
			String odrSbt = JSCStrConstant.ORDER_SBT_CD_MOBILE;
			//if(JSCStrConstant.MOBILE_ODER_CD_SPOT.equals(inMsg.getString(SC0031ETMsg.MOBILE_ORDER_CD))){
			//	//SPOTの場合はNETに置換
			//	odrSbt = JSCStrConstant.ORDER_SBT_CD_NET;
			//}
			inETMsgR.set(SC0011ETMsg.ORDER_SBT_CD, odrSbt);
			inETMsgR.set(SC0011ETMsg.SVC_ORDER_CD, inMsg.getString(SC0031ETMsg.MOBILE_ORDER_CD));
			inETMsgR.set(SC0011ETMsg.YOKYU_SBT_CD, inMsg.getString(SC0031ETMsg.YOKYU_SBT_CD));
		} else if((inMsg.getString(SC0011ETMsg.EVENTID).equals(EventIDList.SC0021D002))
				  ||(inMsg.getString(SC0011ETMsg.EVENTID).equals(EventIDList.ISC0021D001))){
			//電話用VLANオーダ
			inETMsgR.set(SC0011ETMsg.ORDER_SBT_CD, JSCStrConstant.ORDER_SBT_CD_VLAN);
			inETMsgR.set(SC0011ETMsg.SVC_ORDER_CD, inMsg.getString(SC0021ETMsg.VLAN_ORDER_CD));
			inETMsgR.set(SC0011ETMsg.YOKYU_SBT_CD, inMsg.getString(SC0021ETMsg.YOKYU_SBT_CD));
		} else {
			return false;
		}
			
		// オーダマスタのプライマリ検索を行う
		CAANMsg retSC0011Msg = base.findByPrimaryKey(inETMsgR);

		// 検索結果が0件だった場合はtrueを返却
		if (retSC0011Msg == null)
		{
			return false;
		}

		int strDate = Integer.parseInt(retSC0011Msg.getString(SC0011ETMsg.ORDER_TSTAYMD));
		int endDate = Integer.parseInt(retSC0011Msg.getString(SC0011ETMsg.ORDER_TENDYMD));

		// 運用日付が検索結果の適用日付の範囲外だった場合
		if (!((opeDate >= strDate) && (opeDate <= endDate))){
			return false;
		}
		
		return true;
	}
}
