/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JTUejbBmpKojiInfo
*	ソースファイル名：JTUejbBmpKojiInfo.java
*	作成者			：FJ
*	日付			：2011年06月13日
*＜機能概要＞
*	電話系手続採番部品クラス
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v3.00.00	2011/06/14	FJ)楠神		新規作成
*	v3.00.00	2012/03/17	FJ)楠神		ANK-0045-00-00
*	v3.00.00	2012/03/17	FJ)楠神		ANK-0045-01-00
*	v3.00.00	2012/03/17	FJ)楠神		ANK-0079-01-00
*	v4.00.00	2012/05/30	FJ)宮本		ANK-0079-01-00
*	v4.01.00	2012/07/20	FJ)北村		
*	v5.00.00	2013/02/11	FJ)楠神		ANK-1450-00-00
*	v5.00.01	2013/08/30	FJ)阪口		OM-2013-0001300
*	v5.00.02	2013/09/02	FJ)高橋		OM-2013-0001434
*	v5.00.03	2013/09/24	FJ)高橋		OM-2013-0002529
*	v59.00.00	2022/05/09	FJ)三原		OM-2021-0001122_番ポ工事詳細の利用場所の表示不正
*	v72.00.00	2024/04/26	FJ)黒田		ANK-4494-00-00_【eo定期】 双方向番ポ対応
*	v72.00.01	2024/06/19	FJ)謝		ANK-4494-00-00_【eo定期】 双方向番ポ対応
*	v75.00.00	2025/05/21	FJ)金		ANK-4685-00-00_【eo】双方向番ポSTEP3
*
**********************************************************************/

package eo.ejb.common.edit;

import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.common.constant.JTUStrConst;
import eo.ejb.cbm.entity.TU0011ETMsg;
import eo.ejb.cbm.entity.TU0011LE;
import eo.ejb.cbm.entity.ZM0321ETMsg;
import eo.ejb.common.JTUModelCommon;
import eo.ejb.common.db.JTUejbZM0321SecProc;

/**
 * <p>
 * 番ポ工事情報取得部品クラスです。
 * </p>
 * @author FJ
 */
public class JTUejbBmpKojiInfo
{

	/**
	 * コンストラクタです。
	 */
	private JTUejbBmpKojiInfo()
	{
	}

	/**
	 * <p>
	 * 番ポ工事希望時間帯コードの取得を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param arg1 番ポ工事希望日時
	 * @return 取得した番ポ工事希望時間帯コード
	 */
	public static Object getBmpKjKiboTimeCd(CAANMsg inMsg, AgentDispatchContext inContext, Object arg1)
	{
		// 時間帯コード取得処理
		return getTimeCd(arg1);
	}

	/**
	 * <p>
	 * 番ポ工事ステータス（内容変更時）の取得を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param arg1 番ポ申込書タイプコード
	 * @param arg2 番ポ工事希望日時
	 * @param arg3 設置場所郵便番号
	 * @param arg4 設置場所都道府県名
	 * @param arg5 設置場所市区町村名
	 * @param arg6 移転元通信事業者拠点コード
	 * @param arg7 番ポ工事ステータス
	 * @param arg8 工事実施方法
	 * @return 取得した番ポ工事ステータス
	 */
	public static Object getBmpKojiStatUpdate(CAANMsg inMsg, AgentDispatchContext inContext, 
// ANK-4494-00-00 2024/4/26 MOD START
//			Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7)
			Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, Object arg8)
// ANK-4494-00-00 2024/4/26 MOD END
	{

		String bmpKojiStat = (String)arg7;
		// 変更前番ポ工事ステータスが、工事希望日未入力、他事業者確認要、他事業者依頼待ち、NTT申請待ち以外の場合は番ポ工事ステータスは更新しない
		if(!JTUStrConst.KOJI_KIBO_MI.equals(bmpKojiStat) && !JTUStrConst.TAJGS_CFM_NECESSARY.equals(bmpKojiStat) && 
				!JTUStrConst.TAJGS_REQ_STAY.equals(bmpKojiStat) && !JTUStrConst.NTT_SHIN_STAY.equals(bmpKojiStat))
		{
			return bmpKojiStat;
		}
		
		// 番ポ工事希望日時が設定なしの場合、工事希望日未入力
		if(isNullorBlank(arg2))
		{
			return JTUStrConst.KOJI_KIBO_MI;
		}
		
// ANK-4494-00-00 2024/4/26 MOD START
//		// "0" or nullの場合、NTT申請待ち
//		if (isNullorBlank(arg1) || JTUStrConst.CONF_ZUMI.equals((String)arg1))
//		{
//			return JTUStrConst.NTT_SHIN_STAY;
//		}
//
//		// "1"の場合、他事業者依頼待ち
//		if (JTUStrConst.CONF_MI.equals((String)arg1))
//		{
//			// 設置場所郵便番号、設置場所都道府県名、設置場所市区町村名、移転元通信事業者拠点コードのいずれかが未設定の場合、他事業者確認用
//			if(isNullorBlank(arg3) || isNullorBlank(arg4) || isNullorBlank(arg5) || isNullorBlank(arg6))
//			{
//				return JTUStrConst.TAJGS_CFM_NECESSARY;
//			}
//			// すべて設定済の場合、他事業者依頼待ち
//			else
//			{
//				return JTUStrConst.TAJGS_REQ_STAY;
//			}
//		}
//		
//		return null;
		// 番ポ申込書タイプコードが3:廃止 以外の場合
		if(!JTUStrConst.BMP_REQ_NAIYO_HAISHI.equals(arg1)) {
			// 設置場所郵便番号、設置場所都道府県名、設置場所市区町村名、移転元通信事業者拠点コード、工事実施方法のいずれかが未設定の場合、他事業者確認要
			if(isNullorBlank(arg3) || isNullorBlank(arg4) || isNullorBlank(arg5) || isNullorBlank(arg6) || isNullorBlank(arg8))
			{
				return JTUStrConst.TAJGS_CFM_NECESSARY;
			}
			// すべて設定済の場合、他事業者申請待ち
			else
			{
				return JTUStrConst.NTT_SHIN_STAY;
			}
		} else {
			// 設置場所郵便番号、設置場所都道府県名、設置場所市区町村名のいずれかが未設定の場合、他事業者確認要
			if(isNullorBlank(arg3) || isNullorBlank(arg4) || isNullorBlank(arg5))
			{
				return JTUStrConst.TAJGS_CFM_NECESSARY;
			}
			// すべて設定済の場合、他事業者申請待ち
			else
			{
				return JTUStrConst.NTT_SHIN_STAY;
			}
		}
// ANK-4494-00-00 2024/4/26 MOD END
	}

	/**
	 * <p>
	 * 番ポ工事ステータス（登録時）の取得を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param arg1 番ポ申込書タイプコード
	 * @param arg2 番ポ工事希望日時
	 * @param arg3 設置場所郵便番号
	 * @param arg4 設置場所都道府県名
	 * @param arg5 設置場所市区町村名
	 * @param arg6 移転元通信事業者拠点コード
	 * @param arg7 工事実施方法
	 * @return 取得した番ポ工事ステータス
	 */
	public static Object getBmpKojiStatInsert(CAANMsg inMsg, AgentDispatchContext inContext, 
// ANK-4494-00-00 2024/4/26 MOD START 
//			Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6)
			Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7)
// ANK-4494-00-00 2024/4/26 MOD END
	{

// ANK-4494-00-00 2024/4/26 MOD START
//		// "0" or nullの場合
//		if (isNullorBlank(arg1) || JTUStrConst.CONF_ZUMI.equals((String)arg1))
//		{
//			// 番ポ工事希望日時が設定なしの場合、工事希望日未入力
//			if(isNullorBlank(arg2))
//			{
//				return JTUStrConst.KOJI_KIBO_MI;
//			}
//			// 番ポ工事希望日時が設定ありの場合、NTT申請待ち
//			else
//			{
//				return JTUStrConst.NTT_SHIN_STAY;
//			}
//		}
//
//		// "1"の場合
//		if (JTUStrConst.CONF_MI.equals((String)arg1))
//		{
//			// 番ポ工事希望日時が設定なしの場合、工事希望日未入力
//			if(isNullorBlank(arg2))
//			{
//				return JTUStrConst.KOJI_KIBO_MI;
//			}
//			// 番ポ工事希望日時が設定ありの場合、他事業者依頼待ち
//			else
//			{
//				// 設置場所郵便番号、設置場所都道府県名、設置場所市区町村名、移転元通信事業者拠点コードのいずれかが未設定の場合、他事業者確認用
//				if(isNullorBlank(arg3) || isNullorBlank(arg4) || isNullorBlank(arg5) || isNullorBlank(arg6))
//				{
//					return JTUStrConst.TAJGS_CFM_NECESSARY;
//				}
//				// すべて設定済の場合、他事業者依頼待ち
//				else
//				{
//					return JTUStrConst.TAJGS_REQ_STAY;
//				}
//			}
//		}
//		
//		return null;
		// 番ポ工事希望日時が設定なしの場合、工事希望日未入力
		if(isNullorBlank(arg2))
		{
			return JTUStrConst.KOJI_KIBO_MI;
		}
		// 番ポ工事希望日時が設定ありの場合
		// 番ポ申込書タイプコードが3:廃止 以外の場合
		if(!JTUStrConst.BMP_REQ_NAIYO_HAISHI.equals(arg1)) {
			// 設置場所郵便番号、設置場所都道府県名、設置場所市区町村名、移転元通信事業者拠点コード、工事実施方法のいずれかが未設定の場合、他事業者確認要
			if(isNullorBlank(arg3) || isNullorBlank(arg4) || isNullorBlank(arg5) || isNullorBlank(arg6) || isNullorBlank(arg7))
			{
				return JTUStrConst.TAJGS_CFM_NECESSARY;
			}
			// すべて設定済の場合、他事業者申請待ち
			else
			{
				return JTUStrConst.NTT_SHIN_STAY;
			}
		} else {
			// 設置場所郵便番号、設置場所都道府県名、設置場所市区町村名のいずれかが未設定の場合、他事業者確認要
			if(isNullorBlank(arg3) || isNullorBlank(arg4) || isNullorBlank(arg5))
			{
				return JTUStrConst.TAJGS_CFM_NECESSARY;
			}
			// すべて設定済の場合、他事業者申請待ち
			else
			{
				return JTUStrConst.NTT_SHIN_STAY;
			}
		}
// ANK-4494-00-00 2024/4/26 MOD END
	}

	/**
	 * <p>
	 * 同番移転有無フラグの取得を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param arg1 休止票送付先コード
	 * @return 取得した同番移転有無フラグ
	 */
	public static String getDobanitenUm(CAANMsg inMsg, AgentDispatchContext inContext, Object arg1)
	{
		
		if(JTUModelCommon.isNull(arg1))
		{
			return null;
		}
		
		if(JTUStrConst.PAUSE_HYO_SOHUS_CD_KAKI.equals(arg1))
		{
			return JTUStrConst.DOBANITEN_UM_Y;
		}
		else if(JTUStrConst.PAUSE_HYO_SOHUS_CD_SET.equals(arg1))
		{
			return JTUStrConst.DOBANITEN_UM_N;
		}
		else
		{
			return null;
		}
	}
	
	/**
	 * <p>
	 * 休止票送付先コードの取得を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param arg1 電話加入権取扱コード
	 * @param arg2 同番移転有無
	 * @return 取得した休止票送付先コード
	 */
// ANK-4685-00-00 MOD START
//	public static String getPauseHyoSofusCd(CAANMsg inMsg, AgentDispatchContext inContext, Object arg1)
	public static String getPauseHyoSofusCd(CAANMsg inMsg, AgentDispatchContext inContext, Object arg1, Object arg2)
// ANK-4685-00-00 MOD END
	{
		
		if(JTUModelCommon.isNull(arg1))
		{
			return null;
		}
		
// ANK-4494-00-00 2024/4/26 MOD START
//		if(JTUStrConst.DOBANITEN_UM_Y.equals(arg1))
//		{
//			return JTUStrConst.PAUSE_HYO_SOHUS_CD_KAKI;
//		}
//		else if(JTUStrConst.DOBANITEN_UM_N.equals(arg1))
//		{
//			return JTUStrConst.PAUSE_HYO_SOHUS_CD_SET;
//		}
// ANK-4685-00-00 MOD START
//		if(JTUStrConst.TEL_KNKN_USE_PAUSE.equals(arg1))
//		{
//			return JTUStrConst.PAUSE_HYO_SOHUS_CD_SET;
//		}
		if(JTUModelCommon.isNull(arg2))
		{
			return null;
		}
		// 電話加入権取扱コードが"1"（加入権有（休止））の場合
		if(JTUStrConst.TEL_KNKN_USE_PAUSE.equals(arg1))
		{
			// 同番移転有無="1"（有）の場合
			if(JTUStrConst.DOBANITEN_UM_Y.equals(arg2))
			{
				// "3"（その他）
				return JTUStrConst.PAUSE_HYO_SOHUS_CD_KAKI;
			}
			// 同番移転有無="0"（無）の場合
			else if(JTUStrConst.DOBANITEN_UM_N.equals(arg2))
			{
				// "1"（設置場所と同じ）
				return JTUStrConst.PAUSE_HYO_SOHUS_CD_SET;
			}
			// 以外の場合、未設定
			else
			{
				return "";
			}
		}
// ANK-4685-00-00 MOD END
// ANK-4494-00-00 2024/4/26 MOD END
		else
		{
			return null;
		}
	}
	
	/**
	 * <p>
	 * 申込事業者申込年月日時分の取得を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param arg1 連携送信年月日時分秒(NTT連携送信年月日時分秒/他事業者連携送信年月日時分秒)
	 * @return 申込事業者申込年月日時分
	 */
	public static String getMskmjigMskmYMDHM(CAANMsg inMsg, AgentDispatchContext inContext, Object arg1)
	{
		
		if(JTUModelCommon.isNull(arg1))
		{
			return null;
		}
		
		String dtm = (String)arg1;
		return dtm.substring(0, 12);
	}
	
	/**
	 * <p>
	 * 番ポ工事調査依頼年月日の取得を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param arg1 他事業者連携送信年月日時分秒
	 * @return 番ポ工事調査依頼年月日
	 */
	public static String getBmpKojiChosaReqYMD(CAANMsg inMsg, AgentDispatchContext inContext, Object arg1)
	{
		
		if(JTUModelCommon.isNull(arg1))
		{
			return null;
		}
		
		String dtm = (String)arg1;
		return dtm.substring(0, 8);
	}
	
	/**
	 * <p>
	 * 番ポ工事確定時間帯コードの取得を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param arg1 番ポ工事確定日時
	 * @return 取得した番ポ工事確定時間帯コード
	 */
	public static Object getBmpKjFixTimeCd(CAANMsg inMsg, AgentDispatchContext inContext, Object arg1)
	{
		// 時間帯コード取得処理
		return getTimeCd(arg1);
	}
	
	/**
	 * <p>
	 * オブジェクトのNULL、空白チェックを行います。
	 * </p>
	 * @param input チェック対象のオブジェクト
	 * @return true:nullまたは空白の場合　false:左記以外
	 */
	protected static boolean isNullorBlank(Object input)
	{
		// nullの場合、true
		if (input == null)
		{
			return true;
		}

		// 空白の場合、true
		if ("".equals((String)input))
		{
			return true;
		}

		return false;
	}
	
	/**
	 * <p>
	 * 時間帯コード取得処理
	 * </p>
	 * @param arg1 年月日時
	 * @return 取得した時間帯コード
	 */
	protected static String getTimeCd(Object arg1)
	{
		// パラメータnullチェック
		if (isNullorBlank(arg1))
		{
			return JTUStrConst.TIME_CD_MI;
		}

		String hour = (String)arg1;
		if(hour.length() != 10)
		{
			return JTUStrConst.TIME_CD_MI;
		}
		
		
		int tmp = Integer.valueOf(hour.substring(8, 10));
		
		
		if(tmp >= 0 && tmp <= 11)
		{
			return JTUStrConst.TIME_CD_AM;
		}
		else if(tmp >= 12 && tmp <= 23)
		{
			return JTUStrConst.TIME_CD_PM;
		}

		return JTUStrConst.TIME_CD_MI;
	}
	
	/**
	 * <p>
	 * 移転元通信事業者コードクリア処理
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param arg1 移転元通信事業者コード
	 * @param arg2 移転元通信事業者拠点コード
	 * @return 取得した移転元通信事業者コード
	 */
	public static Object getItnmTsjgsCd(CAANMsg inMsg, AgentDispatchContext inContext, Object arg1, Object arg2)
	{
		// パラメータnullチェック
		if(isNullorBlank(arg1))
		{
			return null;
		}
		
// ANK-4494-00-00 DEL START
//		if(JTUStrConst.TSJGS_CD_NTT.equals(arg1)
//				&& isNullorBlank(arg2))
//		{
//			return null;
//		}
// ANK-4494-00-00 DEL END
		
		return arg1.toString();

	}
	
	/**
	 * <p>
	 * 番ポ工事のPK検索結果を返します
	 * </p>
	 * @param bmpKojiNo 番ポ工事番号
	 * @param geneAddDtm 世代登録年月日時分秒
	 * @return 番ポ工事のPK検索結果
	 */
	public static CAANMsg tuU0011FindByPrimaryKey(String bmpKojiNo, String geneAddDtm)
	{
		CAANMsg msgTU0011 = new CAANMsg(TU0011ETMsg.class.getName());
		
		msgTU0011.set(TU0011ETMsg.BMP_KOJI_NO, bmpKojiNo);
		msgTU0011.set(TU0011ETMsg.GENE_ADD_DTM, geneAddDtm);
		
		// 番ポ工事をプライマリーキー検索
		msgTU0011 = new TU0011LE().findByPrimaryKey(msgTU0011);
		
		// プライマリーキー検索で結果が取得できなかった場合
		if(null == msgTU0011)
		{
			return null;
		}
		// プライマリーキー検索で結果が取得できた場合
		else
		{
			return msgTU0011;
		}
	}

	// OM-2021-0001122 ADD START
	/**
	 * メッセージを業務パラメタから取得する。（同番移転中について）
	 * @throws CAANException
	 * @return メッセージ
	 * 
	 */
	public static String getMsgDobaniten()
	{
		
		//業務パラメタ副次処理部品
		JTUejbZM0321SecProc zm0321secproc = new JTUejbZM0321SecProc();
		
		CAANMsg msg = new CAANMsg(ZM0321ETMsg.class.getName());
		
		msg.set(ZM0321ETMsg.WORK_PARAM_ID, JTUStrConst.WORK_PARAM_ID_BMP_KOJI_MSG001);
		
		try {
			msg = zm0321secproc.findByPrimaryKey(msg, true);
		} catch (CAANException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
		
		if(msg == null)
		{
			return "";
		}
		
		String rslt = msg.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);
		
		if(rslt == null)
		{
			return "";
		}
		
		return rslt;
	}
	// OM-2021-0001122 ADD END

// ANK-4494-00-00 2024/4/26 ADD START
	/**
	 * <p>
	 * 自動廃止了承済番号数の初期値を取得を行います。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param arg1 番ポ申込書タイプコード
	 * @return 取得した自動廃止了承済番号数
	 */
	public static String getAutoHaishiRyshzmNoNum(CAANMsg inMsg, AgentDispatchContext inContext, Object arg1)
	{
		
		if(JTUModelCommon.isNull(arg1))
		{
			return null;
		}
		
		if(JTUStrConst.BMP_REQ_NAIYO_HAISHI.equals(arg1))
		{
			return null;
		}
		else
		{
			return "0";
		}
	}
// ANK-4494-00-00 2024/4/26 ADD END

}
