/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：TUW03602SFLogic
*	ソースファイル名：TUW03602SFLogic.java
*	作成者			：FJ
*	日付			：2024年02月28日
*＜機能概要＞
*	TUW03602のビューロジック
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v72.00.00	2024/02/28	FJ)謝		【ANK-4494-00-00】【eo定期】 双方向番ポ対応
*
**********************************************************************/
package eo.web.webview.TUW03602SF;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JTUStrConst;
import eo.common.util.JTUStringUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JTUScreenConst;
import eo.web.webview.common.JTUWebCommon;
import eo.web.webview.mapping.TUSV0105_TUSV0105OPDBMapper;


/**
 * TUW03602のビューロジック
 * @author FJ
 *
 */
public class TUW03602SFLogic extends JCCWebBusinessLogic
{
	/** ユースケースＩＤ */
	private static final String UCID_TUSV0105 = "TUSV0105";
	/** オペレーションＩＤ */
	private static final String OPID_TUSV0105OP = "TUSV0105OP";
	/** ＣＣタイトル */
	private static final String CC_TITLE_TUSV010501CC = "TUSV010501CC";
	/** "0"(初期表示) */
	private static final String EVENT_INIT = "0";
	/** "1"(処理済ボタン押下) */
	private static final String EVENT_SYRZM = "1";
	/** "2"(処理中（保留）ボタン押下) */
	private static final String EVENT_SYRCHU = "2";
	/** "3"(取消ボタン押下) */
	private static final String EVENT_CL = "3";
	/** "4"(戻るボタン押下) */
	private static final String EVENT_BACK = "4";
	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean actionInit() throws Exception
	{
		// (1) 引継情報の取得
		// 画面情報を取得し、サービスフォームBeanに設定
		JCCWebCommon.getScreenInfo(this);
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JTUScreenConst.SCREEN_NAME_TUW03602);
		
		// 初期表示処理
		execTUSV0105(EVENT_INIT);
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW03602, JTUScreenConst.SCREEN_NAME_TUW03602);
		
		return true;
	}
	
	/**
	 * 処理済処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean actionSyrzm() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 処理済ボタン押下処理
		boolean retErrFlg = execTUSV0105(EVENT_SYRZM);
		
		// エラーありの場合
		if (retErrFlg)
		{
			return true;
		}
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW03601, JTUScreenConst.SCREEN_NAME_TUW03601);
		
		return true;
	}
	
	/**
	 * 処理中（保留）処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean actionSyrchu() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 処理中（保留）ボタン押下処理
		boolean retErrFlg = execTUSV0105(EVENT_SYRCHU);
		
		// エラーありの場合
		if (retErrFlg)
		{
			return true;
		}
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW03601, JTUScreenConst.SCREEN_NAME_TUW03601);
		
		return true;
	}
	
	/**
	 * 取消処理
	 * @return boolean
	 * @throws Exceptions
	 */
	public boolean actionCl() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 取消ボタン押下処理
		boolean retErrFlg = execTUSV0105(EVENT_CL);
		
		// エラーありの場合
		if (retErrFlg)
		{
			return true;
		}
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW03601, JTUScreenConst.SCREEN_NAME_TUW03601);
		
		return true;
	}
	
	/**
	 * 戻る処理
	 * @return boolean
	 * @throws Exceptions
	 */
	public boolean actionBack() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// ステータス
		String status = serviceBean.sendMessageString(TUW03602SFConst.STATUS_CD, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 処理中の場合
		if (JTUStrConst.PORT_OUT_STAT_SYRCHU.equals(status))
		{
			// 戻るボタン押下処理
			boolean retErrFlg = execTUSV0105(EVENT_BACK);
			
			// エラーありの場合
			if (retErrFlg)
			{
				return true;
			}
		}
		
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUScreenConst.SCREEN_ID_TUW03601, JTUScreenConst.SCREEN_NAME_TUW03601);
		
		return true;
	}
	
	/**
	 * 他社読込済申請結果確認更新処理
	 * 
	 * @param event イベント
	 * @return boolean
	 * @throws Exception Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean execTUSV0105(String event) throws Exception
	{
		// エラーフラグ
		boolean retErrFlg = false;
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {serviceBean, commoninfoBean};
		
		// データBeanとBPをマッピングするインスタンスを生成
		TUSV0105_TUSV0105OPDBMapper mapper = new TUSV0105_TUSV0105OPDBMapper();
		
		// サービス検索条件格納用マップ
		HashMap<String, Map<String, String>> inputMap = new HashMap<String, Map<String, String>>();
		// サービス処理結果格納用マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// サービスIDをparamMapにセット
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, UCID_TUSV0105);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, OPID_TUSV0105OP);
		
		// サービスへのデータセット
		mapper.setTUSV010501CC_02(paramBean, inputMap, event);
		
		// サービス呼出処理
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			retErrFlg = true;
			
			return retErrFlg;
		}
		
		HashMap<String, Object> parentMap = (HashMap<String, Object>)outputMap.get(CC_TITLE_TUSV010501CC);
		
		if(parentMap != null)
		{
			// 初期表示の場合
			if (EVENT_INIT.equals(event))
			{
				// サービス処理結果の取得
				// 取得情報の下りマッピング
				mapper.getTUSV010501CC_02(paramBean, outputMap);
				
				// 関連チェック
				// ワーニングメッセージリスト
				ArrayList warnMsgList = (ArrayList)parentMap.get("warn_msg_list");
				
				if(warnMsgList != null && warnMsgList.size() > 0)
				{
					for (int i = 0; i < warnMsgList.size(); i++)
					{
						HashMap warnMsgMap = (HashMap)warnMsgList.get(i);
						
						// ワーニングメッセージＩＤ
						String warnMsgId = (String)warnMsgMap.get("warn_msg_id");
						// ワーニングメッセージ置換文字列
						String warnMsgReplaceMoji = (String)warnMsgMap.get("warn_msg_replace_moji");
						
						if (!JTUStringUtil.isNull(warnMsgReplaceMoji))
						{
							JCCWebCommon.setMessageInfo(this, warnMsgId, warnMsgReplaceMoji.split(JTUStrConst.CONMA));
						}
						else
						{
							JCCWebCommon.setMessageInfo(this, warnMsgId);
						}
					}
				}
			}
			// 処理済ボタン押下、処理中（保留）ボタン押下、取消ボタン押下の場合
			else if (EVENT_SYRZM.equals(event) || EVENT_SYRCHU.equals(event) || EVENT_CL.equals(event))
			{
				// 関連チェック
				// エラーメッセージＩＤ
				String errMsgId = (String)parentMap.get("err_msg_id");
				// エラーメッセージ置換文字列
				String errMsgReplaceMoji = (String)parentMap.get("err_msg_replace_moji");
				
				if (!JTUStringUtil.isNull(errMsgId))
				{
					if (!JTUStringUtil.isNull(errMsgReplaceMoji))
					{
						JCCWebCommon.setMessageInfo(this, errMsgId, errMsgReplaceMoji.split(JTUStrConst.CONMA));
					}
					else
					{
						JCCWebCommon.setMessageInfo(this, errMsgId);
					}
					retErrFlg = true;
				}
			}
		}
		
		return retErrFlg;
	}
}

