/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム共通（共通（マスタ））
*   モジュール名    ：ZMW02201SFLogic
*   ソースファイル名：ZMW02201SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年06月29日
*＜機能概要＞
*   電話番号詳細のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v2.00	    2011/06/29   FJ）日野    新規作成
*   v72.0.0     2024/03/22   FJ）竹内    ANK-4494-00-00_【eo定期】 双方向番ポ対応
**********************************************************************/

package eo.web.webview.ZMW02201SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.ZMW01801SF.ZMW01801SFConst;
import eo.web.webview.ZMW01904SF.ZMW01904SFConst;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.common.JZMWebCommon;
import eo.web.webview.common.JZMWebConst;
import eo.web.webview.mapping.ZMSV0036_ZMSV0036OPDBMapper;

/**
 * 電話番号詳細のビューロジックです。
 * @author FJ
 *
 */
@SuppressWarnings("serial")
public class ZMW02201SFLogic extends JCCWebBusinessLogic
{
	
	/** メッセージ置換文字列　マスタ未存在  */
	private static final String[] MSG_VALUE_NOTFOUND = {"電話番号", "情報"};
	
	/**
	 * 初期表示処理を行います。<br>
	 * <br>
	 * @return boolean 処理結果
	 * @exception Exception 予期せぬエラー
	 */
	public boolean init() throws Exception
	{
		
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();
		
		if(JZMWebCommon.getScreenInfo(this) == null)
		{
			String screenId = JZMWebCommon.getScreenId(this);
			
			// 遷移先画面ID、名称の設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, screenId);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK);
			
			// 強制画面遷移
			setTransferPageId(screenId + JZMWebConst.PJP);
			return true;
		}
		
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess[] paramBean = {bean};
		
		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JZMWebConst.SV36);
		
		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		
		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		String telnoRsvNo = JZMWebCommon.getSendMessageString(bean, ZMW02201SFConst.TELNO_RSV_NO);
		String agingNo = JZMWebCommon.getSendMessageString(bean, ZMW02201SFConst.AGING_NO);
		
		// マッピングクラスのインスタンスを生成
		ZMSV0036_ZMSV0036OPDBMapper mapper = new ZMSV0036_ZMSV0036OPDBMapper();
		
		// マッピング処理（上り）
		mapper.setZMSV003601SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		
		if(!JZMWebConst.BLANK.equals(telnoRsvNo))
		{
			mapper.setZMSV003602SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		}
		else
		{
			
			// 電話番予約ステータスに"なし"を表示
			bean.sendMessageString(ZMW02201SFConst.TELNO_RSV_STAT_NM, X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK_NASI);
		}
		if(!JZMWebConst.BLANK.equals(agingNo))
		{
			mapper.setZMSV003603SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		}
		else
		{
			
			// エイジングステータスに"なし"を表示
			bean.sendMessageString(ZMW02201SFConst.AGING_STAT_NM, X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK_NASI);
		}
		
		// サービスの呼び出し
		invokeService(paramMap, dataMap, outputMap);
		
		// マッピングクラスの呼び出し
		mapper.getZMSV003601SC(paramBean, outputMap);
		if(dataMap.containsKey(JZMWebConst.SC3602))
		{
			mapper.getZMSV003602SC(paramBean, outputMap);
		}
		if(dataMap.containsKey(JZMWebConst.SC3603))
		{
			mapper.getZMSV003603SC(paramBean, outputMap);
		}
		
		// 検索エラーフラグの取得
		String telnoSearchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.SC3601, outputMap);
		
		if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(telnoSearchErrFlg))
		{
			
			// 検索結果が0件の場合、エラーメッセージを表示
			JZMWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0300_KW, MSG_VALUE_NOTFOUND);
			
			String screenId = JZMWebCommon.getScreenId(this);
			
			// 遷移先画面ID、名称の設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
					X31CWebConst.DATABEAN_SET_VALUE, screenId);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
					X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK);
			
			// 強制画面遷移
			setTransferPageId(screenId + JZMWebConst.PJP);
			
			return true;
		}
		
		if(dataMap.containsKey(JZMWebConst.SC3602))
		{
			
			// 検索エラーフラグの取得
			String telnoRsvSearchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.SC3602, outputMap);
			if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(telnoRsvSearchErrFlg))
			{
				
				// 電話番予約ステータスに"なし"を表示
				bean.sendMessageString(ZMW02201SFConst.TELNO_RSV_STAT_NM, X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK_NASI);
			}
		}
		
		if(dataMap.containsKey(JZMWebConst.SC3603))
		{
			
			// 検索エラーフラグの取得
			String agingSearchErrFlg = JZMWebCommon.getSearchErrFlg(JZMWebConst.SC3603, outputMap);
			if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(agingSearchErrFlg))
			{
				
				// エイジングステータスに"なし"を表示
				bean.sendMessageString(ZMW02201SFConst.AGING_STAT_NM, X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK_NASI);
			}
		}
		
		// 遷移先画面ID、名称を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW02201);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW02201);
		
		return true;
	}
	

	//【ANK-4494-00-00】双方向番ポ対応 ADD STRAT
	/**
	 * ENUM切替ボタン押下処理を行います。<br>
	 * 
	 * @return boolean 処理結果
	 * @exception Exception 予期せぬエラー
	 */
	public boolean enum_Switch() throws Exception
	{
		
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();
		
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 情報格納用HashMap
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// セッションに情報を格納する
		setTransData(bean, paramMap);
		JZMWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW02201, paramMap);
		
		// 引渡し情報格納用HashMap
		HashMap<String, Object> output = new HashMap<String, Object>();		
		
		JZMWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW01904, output);
		output.put(ZMW01904SFConst.TELNO, JZMWebCommon.getSendMessageString(bean, ZMW02201SFConst.TELNO));
		output.put(ZMW01904SFConst.AGING_NO, JZMWebCommon.getSendMessageString(bean, ZMW02201SFConst.AGING_NO));
		
		// 戻り先画面のIDをセット
		JZMWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW01904, JZMScreenConst.SCREEN_ID_ZMW02201);
		
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW01904);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW01904);
		
		return true;
	}
	//【ANK-4494-00-00】双方向番ポ対応 ADD END

	/**
	 * 戻るボタン押下処理を行います。<br>
	 * 
	 * @return boolean 処理結果
	 * @exception Exception 予期せぬエラー
	 */
	public boolean back() throws Exception
	{
		
		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();
		
		//【ANK-4494-00-00】双方向番ポ対応 MOD START
//		// 戻り先画面IDの取得
//		String screenId = JZMWebCommon.getScreenId(this);
		// 戻り先画面ID(電話番号情報一覧照会画面)の取得
		String screenId = JZMScreenConst.SCREEN_ID_ZMW01801;
		//【ANK-4494-00-00】双方向番ポ対応 MOD END
		
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, screenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMWebConst.BLANK);
		
		return true;
	}

	//【ANK-4494-00-00】双方向番ポ対応 ADD STRAT
	/**
	 * セッション情報に格納するハッシュマップを作成します。
	 * @param bean
	 * @param paramMap
	 */
	private void setTransData(X31SDataBeanAccess bean, HashMap<String, Object> paramMap)
	{
		// 電話番号
		putBeanValue(bean, paramMap, ZMW02201SFConst.TELNO);
		// 電話番号予約番号
		putBeanValue(bean, paramMap, ZMW02201SFConst.TELNO_RSV_NO);
		// 電話番号エージング番号
		putBeanValue(bean, paramMap, ZMW02201SFConst.AGING_NO);
	}
	
	/** 
	 * bean内の指定した項目をparamMapにputします。 
	 * @param bean DataBean
	 * @param paramMap
	 * @param key ハッシュマップのキー項目
	 * 
	 */
	private void putBeanValue(X31SDataBeanAccess bean, 
			HashMap<String, Object> paramMap,
			String key)
	{
		String value = JZMWebCommon.getSendMessageString(bean, key);
		paramMap.put(key, value);
	}
	//【ANK-4494-00-00】双方向番ポ対応 ADD END
}
