/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKejbEKK2641C010TKCK
*	ソースファイル名：JKKejbEKK2641C010TKCK.java
*	作成者			：FJ
*	日付			：2012年10月16日
*＜機能概要＞
*	KDDI他事業者割引契約状況照会更新制約部品の単関連部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2012/10/16	FJ)楠神		新規作成
*
**********************************************************************/

package eo.ejb.common.itemrelation;

import java.io.UnsupportedEncodingException;

import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.common.constant.JKKStrConst;
import eo.ejb.cbs.cbsmsg.EKK2641C010CBSMsg;

/**
 * <p>
 * KDDI他事業者割引契約状況照会更新の単関連部品です。
 * </p>
 * @author FJ
 */
public class JKKejbEKK2641C010TKCK extends JKKejbTKCKBase
{

	/**
	 * <p>
	 * バイト数チェックを行なう。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param chkBytes チェックするバイト数
	 * @param chkKey チェックする項目のキー
	 * @return 指定されたバイト数以下の場合はtrue。
	 */
	public boolean isBytesCheck(CAANMsg inMsg, AgentDispatchContext inContext, Object chkBytes, Object chkKey)
	{
		
		if(chkBytes == null || chkKey == null)
		{
			return false;
		}
		
		int chkbyte = Integer.parseInt((String)chkBytes);
		String value = inMsg.getString((String)chkKey);
		
		try {

			if(value.getBytes("Shift-JIS").length > chkbyte)
			{
				return false;
			}

		} catch (UnsupportedEncodingException e) {
		}
		
		return true;
	}

	/**
	 * <p>
	 * auスマートバリューNG理由と契約サービスの組合せのチェックを行なう。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return 組み合わせが正しい場合はtrue。
	 */
	public boolean isNGRsnCheck(CAANMsg inMsg, AgentDispatchContext inContext)
	{
		
		String stat = inMsg.getString(EKK2641C010CBSMsg.KDDI_TJGWR_KJKS_STAT_CD);
		String ngrsn = inMsg.getString(EKK2641C010CBSMsg.KDDI_TJGWR_NG_RSN_CD);
		String keiservice_NET = inMsg.getString(EKK2641C010CBSMsg.EOHNT_KEI_JOKYO_CD);
		String keiservice_TEL = inMsg.getString(EKK2641C010CBSMsg.EOHTL_KEI_JOKYO_CD);
		if(stat == null)
		{
			return false;
		}
		
		if(!JKKStrConst.KDDI_STAT_UK_FIN.equals(stat) && !JKKStrConst.KDDI_STAT_ANKN_FIN.equals(stat))
		{
			return true;
		}
		
		if(ngrsn == null || keiservice_NET == null ||keiservice_TEL == null )
		{
			return false;
		}
		
		//auスマートバリューNG理由：1（氏名相違）、2（住所相違）、4（集合住宅）
		if(JKKStrConst.KDDI_NG_RSN_CD_NAME.equals(ngrsn) 
				|| JKKStrConst.KDDI_NG_RSN_CD_AD.equals(ngrsn) 
				|| JKKStrConst.KDDI_NG_RSN_CD_APART.equals(ngrsn))
		{
			//ｅｏ光ネット契約状況コード：1（成約）、9（契約中）
			//かつｅｏ光電話契約状況コード：1（成約）、2（成約_ＳＶ対象外）、9（契約中）
			if((JKKStrConst.KDDI_KEI_JOKYO_CD_SEIYAKU.equals(keiservice_NET)
					|| JKKStrConst.KDDI_KEI_JOKYO_CD_KEIYAKU.equals(keiservice_NET))
					&& (JKKStrConst.KDDI_KEI_JOKYO_CD_SEIYAKU.equals(keiservice_TEL)
							|| JKKStrConst.KDDI_KEI_JOKYO_CD_SEIYAKU_NOSV.equals(keiservice_TEL)
							|| JKKStrConst.KDDI_KEI_JOKYO_CD_KEIYAKU.equals(keiservice_TEL)))
			{
				return true;
			}
		}
		//auスマートバリューNG理由：3（契約サービス不足）
		else if (JKKStrConst.KDDI_NG_RSN_CD_NOSV.equals(ngrsn))
		{
			//ｅｏ光ネット契約状況コード：0（申込まれず）、2（成約_ＳＶ対象外）
			//かつｅｏ光電話契約状況コード：0（申込まれず）、1（成約）、2（成約_ＳＶ対象外）、9（契約中）
			if((JKKStrConst.KDDI_KEI_JOKYO_CD_NONE.equals(keiservice_NET)
					|| JKKStrConst.KDDI_KEI_JOKYO_CD_SEIYAKU_NOSV.equals(keiservice_NET))
					&& (JKKStrConst.KDDI_KEI_JOKYO_CD_NONE.equals(keiservice_TEL)
							|| JKKStrConst.KDDI_KEI_JOKYO_CD_SEIYAKU.equals(keiservice_TEL)
							|| JKKStrConst.KDDI_KEI_JOKYO_CD_SEIYAKU_NOSV.equals(keiservice_TEL)
							|| JKKStrConst.KDDI_KEI_JOKYO_CD_KEIYAKU.equals(keiservice_TEL)))
			{
				return true;
			}
			//ｅｏ光ネット契約状況コード：1（成約）、9（契約中）
			//かつｅｏ光電話契約状況コード：0（申込まれず）、2（成約_ＳＶ対象外）
			if((JKKStrConst.KDDI_KEI_JOKYO_CD_SEIYAKU.equals(keiservice_NET)
					|| JKKStrConst.KDDI_KEI_JOKYO_CD_KEIYAKU.equals(keiservice_NET))
					&& (JKKStrConst.KDDI_KEI_JOKYO_CD_NONE.equals(keiservice_TEL)
							|| JKKStrConst.KDDI_KEI_JOKYO_CD_SEIYAKU_NOSV.equals(keiservice_TEL)))
			{
				return true;
			}
		}
		//上記以外はfalse
		return false;
	}

	/**
	 * <p>
	 * KOPT契約受注活動結果コードと契約サービスの組合せのチェックを行なう。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return 組み合わせが正しい場合はtrue。
	 */
	public boolean isResultCheck(CAANMsg inMsg, AgentDispatchContext inContext)
	{
		
		String stat = inMsg.getString(EKK2641C010CBSMsg.KDDI_TJGWR_KJKS_STAT_CD);
		String rslt = inMsg.getString(EKK2641C010CBSMsg.KOPT_KEI_JCHUKDO_RSLT_CD);
		String keiservice_NET = inMsg.getString(EKK2641C010CBSMsg.EOHNT_KEI_JOKYO_CD);
		String keiservice_TEL = inMsg.getString(EKK2641C010CBSMsg.EOHTL_KEI_JOKYO_CD);
		String keiservice_TV = inMsg.getString(EKK2641C010CBSMsg.EOHTV_KEI_JOKYO_CD);
		if(stat == null)
		{
			return false;
		}
		
		if(!JKKStrConst.KDDI_STAT_UK_FIN.equals(stat) && !JKKStrConst.KDDI_STAT_ANKN_FIN.equals(stat))
		{
			return true;
		}
		
		if(!JKKStrConst.KDDI_JCHUKDO_RSLT_KZN_NEW.equals(rslt))
		{
			return true;
		}
		
		if(JKKStrConst.KDDI_KEI_JOKYO_CD_KEIYAKU.equals(keiservice_NET)
				|| JKKStrConst.KDDI_KEI_JOKYO_CD_KEIYAKU.equals(keiservice_TEL)
				|| JKKStrConst.KDDI_KEI_JOKYO_CD_KEIYAKU.equals(keiservice_TV))
		{
			return true;
		}
		
		return false;
	}

}
