/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：ZDW01201SFLogic
 *	ソースファイル名：ZDW01201SFLogic.java
 *	作成者			：富士通
 *	日付			：2012年06月12日
 *＜機能概要＞
 *	申込書イメージ呼出ビューロジック
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	ｖ4.00.00
 *	ｖ36.00.00	2018/03/02	FJ)麻生		ANK-3362-00-00_申込書による申込時の申込断面データ作成
 *	ｖ36.00.01	2018/03/22	FJ)柳		ANK-3362-00-00_申込書による申込時の申込断面データ作成
 ********************************************************************************/
package eo.web.webview.ZDW01201SF;

import java.util.EventObject;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CID;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x33.X33SException;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JZDStrConst;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KKW14301SF.KKW14301SFConst;
import eo.web.webview.common.JCRWebCommon;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.common.JZDScreenConst;
import eo.web.webview.common.JZDWebCommon;
import eo.web.webview.mapping.ZDSV0001_ZDSV0001OPDBMapper;

/**
 * 申込書イメージ呼出ビューロジック.<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class ZDW01201SFLogic extends JCCWebBusinessLogic
{

	/** サブ画面表示フラグ（""：表示しない）*/
	private static final String SUB_WINDOW_OPEN_FLG_NOT_OPEN = "";

	/** サブ画面表示フラグ（"1"：共通（イメージ）呼出）*/
	private static final String SUB_WINDOW_OPEN_FLG_OPEN_IMAGE = "1";
	
	/** サブ画面表示フラグ（"2"：WEB申込断面呼出）*/
	private static final String SUB_WINDOW_OPEN_FLG_OPEN_MKDMN = "2";

	/**
	 * 親クラスX31BWebBusinessLogicのreceiveMessageWebを
	 * オーバーライドして自動生成されたメソッドです。
	 * @param arg0 (I) イベント情報
	 * @param arg1 (I) WebFWでは使用しません
	 * @param arg2 (I) WebFWでは使用しません
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws X33SException X33SException
	 */
	@Override
	protected boolean receiveMessageWeb(X31CID arg0, Object arg1,
			EventObject arg2) throws X33SException
	{
		return false;
	}

	/**
	 * 初期表示処理<br>
	 * <br>
	 * WEB申込断面コメント登録画面の初期表示を行います。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean init() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// (a)サービスフォームBeanの項目をクリアする。
		clearBean();

		// (b)イメージシステム呼出用URLを取得する。
		// 不備確認ＵＲＬ
		String hbiCfmUrl = JZDWebCommon.getApplicationConst(JZDStrConst.PROP_KEY_HBI_CFM_URL);
		bean.sendMessageString(ZDW01201SFConst.HBI_CFM_URL, X31CWebConst.DATABEAN_SET_VALUE, hbiCfmUrl);

		// 不備対応ＵＲＬ
		String hbiTaioUrl = JZDWebCommon.getApplicationConst(JZDStrConst.PROP_KEY_HBI_TAIO_URL);
		bean.sendMessageString(ZDW01201SFConst.HBI_TAIO_URL, X31CWebConst.DATABEAN_SET_VALUE, hbiTaioUrl);

		// 申込書参照ＵＲＬ
		String mskmshoSanshoUrl = JZDWebCommon.getApplicationConst(JZDStrConst.PROP_KEY_MSKMSHO_SANSHO_URL);
		bean.sendMessageString(ZDW01201SFConst.MSKMSHO_SANSHO_URL, X31CWebConst.DATABEAN_SET_VALUE, mskmshoSanshoUrl);

		// 共通(イメージ)システムのシステムID
		String outSysCd = JZDWebCommon.getApplicationConst(JZDStrConst.PROP_KEY_SIMS_IMAGE_SYS_CD);
		bean.sendMessageString(ZDW01201SFConst.OUT_SYS_CD, X31CWebConst.DATABEAN_SET_VALUE, outSysCd);

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし
		
		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JZDScreenConst.SCREEN_ID_ZDW01201);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JZDScreenConst.SCREEN_NAME_ZDW01201);

		return true;

	}

	/**
	 * 不備確認ボタン押下処理<br>
	 * <br>
	 * 申込断面データが存在するかを判定し、不備確認画面を呼び出すか、
	 * WEB申込断面データ参照画面を呼び出すかの判定を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean hbiCfm() throws Exception
	{
		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// (a)イメージシステム呼出用URL設定処理（setImageSystemUrl()）を呼び出す。
		setImageSystemUrl(ZDW01201SFConst.HBI_CFM_URL);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JZDScreenConst.SCREEN_ID_ZDW01201);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JZDScreenConst.SCREEN_NAME_ZDW01201);

		return true;

	}

	/**
	 * 不備対応ボタン押下処理<br>
	 * <br>
	 * 申込断面データが存在するかを判定し、不備対応画面を呼び出すか、
	 * WEB申込断面データ参照画面を呼び出すかの判定を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean hbiTaio() throws Exception
	{
		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// (a)イメージシステム呼出用URL設定処理（setImageSystemUrl()）を呼び出す。
		setImageSystemUrl(ZDW01201SFConst.HBI_TAIO_URL);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JZDScreenConst.SCREEN_ID_ZDW01201);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JZDScreenConst.SCREEN_NAME_ZDW01201);

		return true;

	}

	/**
	 * 参照ボタン押下処理<br>
	 * <br>
	 * 申込断面データが存在するかを判定し、申込書参照画面を呼び出すか、
	 * WEB申込断面データ参照画面を呼び出すかの判定を行う。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean sansho() throws Exception
	{
		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// (a)イメージシステム呼出用URL設定処理（setImageSystemUrl()）を呼び出す。
		setImageSystemUrl(ZDW01201SFConst.MSKMSHO_SANSHO_URL);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JZDScreenConst.SCREEN_ID_ZDW01201);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JZDScreenConst.SCREEN_NAME_ZDW01201);

		return true;

	}

	/**
	 * サブ画面表示処理<br>
	 * <br>
	 * WEB申込断面データ参照画面をサブ画面で表示する。
	 * ※不備確認、不備対応、申込書参照画面を呼び出す場合は、JavaScriptで
	 * 　処理が完結するため、当処理は呼び出されない。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean openSubWindow() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// 子画面に渡す情報用HashMap
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// (a)次画面への引継情報(dataMap)を作成する。
		// 申込書番号
		dataMap.put(KKW14301SFConst.MSKMSHO_NO, bean.sendMessageString(ZDW01201SFConst.MSKMSHO_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// (b)画面情報設定部品（JZDWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
		JZDWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW14301, dataMap);
		
		// (c)戻り先画面ID設定（JZDWebCommon.setScreenId)を使用し、次画面への引継情報を設定する。
		JCRWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW14301, JZDScreenConst.SCREEN_ID_ZDW01201);
		
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_ID_KKW14301);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW14301);

		return true;

	}

	/**
	 * イメージシステム呼出用URL作成処理<br>
	 * <br>
	 * 申込断面が存在するかの判定を行い、申込断面が存在する場合、WEB申込断面データ参照を、
	 * 存在しない場合、イメージシステムを起動するように設定する。
	 * 
	 * @param baseUrlItemId
	 */
	private void setImageSystemUrl(String baseUrlItemId)
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1)サービス呼出処理
		// (a) 申込書イメージ呼出サービスの呼び出しを行う。
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean, commoninfoBean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "ZDSV0001");

		// マッピングクラスの定義
		ZDSV0001_ZDSV0001OPDBMapper mapper = new ZDSV0001_ZDSV0001OPDBMapper();
		mapper.setZMSV000101SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setZMSV000102SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// ANK-3362-00-00 ADD START
		mapper.setZDSV000103SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// ANK-3362-00-00 ADD END

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// (2) サービス処理結果の設定
		mapper.getZMSV000101SC(paramBean, outputMap);
		mapper.getZMSV000102SC(paramBean, outputMap);
		// ANK-3362-00-00 ADD START
		mapper.getZDSV000103SC(paramBean, outputMap);
		// ANK-3362-00-00 ADD END

		// (3) イメージシステム呼出用URL作成
		// サブ画面表示ＵＲＬ
		String subWindowUrl = "";
		// ANK-3362-00-00 MOD START
//		// ANK-3362-00-00 MOD START
////		// (a) DataBean.検索エラーフラグが"1"（検索エラーフラグ(0件)）の場合、(b)、(c)の処理を行いイメージシステム呼出用URLを作成する。
////		if ("1".equals(bean.sendMessageString(ZDW01201SFConst.SEARCH_ERR_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
//		// (a) DataBean.申込形態コードが"05"(書面)の場合、(b)、(c)の処理を行いイメージシステム呼出用URLを作成する。
//		if (JKKStrConst.CD00591_05.equals(bean.sendMessageString(ZDW01201SFConst.MSKM_FORM_CD, X31CWebConst.DATABEAN_GET_VALUE)))
//		// ANK-3362-00-00 MOD END
		// (a) DataBean.申込形態コードが"05"(書面) または DataBean.検索エラーフラグが"1"（検索エラーフラグ(0件)）の場合、
		// (b)、(c)の処理を行いイメージシステム呼出用URLを作成する。
		if (JKKStrConst.CD00591_05.equals(bean.sendMessageString(ZDW01201SFConst.MSKM_FORM_CD, X31CWebConst.DATABEAN_GET_VALUE)) ||
				"1".equals(bean.sendMessageString(ZDW01201SFConst.SEARCH_ERR_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
		// ANK-3362-00-00 MOD END
		{
			// (b) 引数.イメージシステム呼出用ベースＵＲＬ項目名(英名)を使用し、イメージシステム呼出用のベースＵＲＬを取得する。
			// (c) (b)で取得したＵＲＬに、申込書番号、ワンタイムパスワード値を設定する。
			subWindowUrl = String.format(bean.sendMessageString(baseUrlItemId, X31CWebConst.DATABEAN_GET_VALUE)
					, bean.sendMessageString(ZDW01201SFConst.MSKMSHO_NO, X31CWebConst.DATABEAN_GET_VALUE)
					, bean.sendMessageString(ZDW01201SFConst.ONE_TIME_PWD, X31CWebConst.DATABEAN_GET_VALUE));
		}

		// (4)サービスフォームBeanの設定
		// ANK-3362-00-00 MOD START
////		if ("1".equals(bean.sendMessageString(ZDW01201SFConst.SEARCH_ERR_FLG
////				, X31CWebConst.DATABEAN_GET_VALUE)))
//		if (JKKStrConst.CD00591_05.equals(bean.sendMessageString(ZDW01201SFConst.MSKM_FORM_CD, X31CWebConst.DATABEAN_GET_VALUE)))
		if (JKKStrConst.CD00591_05.equals(bean.sendMessageString(ZDW01201SFConst.MSKM_FORM_CD, X31CWebConst.DATABEAN_GET_VALUE)) ||
				"1".equals(bean.sendMessageString(ZDW01201SFConst.SEARCH_ERR_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
		// ANK-3362-00-00 MOD END
		{
			bean.sendMessageString(ZDW01201SFConst.SUB_WINDOW_URL
					, X31CWebConst.DATABEAN_SET_VALUE, subWindowUrl);
			bean.sendMessageString(ZDW01201SFConst.SUB_WINDOW_OPEN_FLG
					, X31CWebConst.DATABEAN_SET_VALUE, SUB_WINDOW_OPEN_FLG_OPEN_IMAGE);
		}
		else
		{
			bean.sendMessageString(ZDW01201SFConst.SUB_WINDOW_URL, X31CWebConst.DATABEAN_SET_VALUE, "");
			bean.sendMessageString(ZDW01201SFConst.SUB_WINDOW_OPEN_FLG
					, X31CWebConst.DATABEAN_SET_VALUE, SUB_WINDOW_OPEN_FLG_OPEN_MKDMN);
		}
	}

	/**
	 * サービスフォームBeanのクリア処理<br>
	 * <br>
	 * サービスフォームBeanの値をクリアします。
	 * 
	 */
	private void clearBean()
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// サービスフォームBeanの項目をクリアする。
		bean.sendMessage(ZDW01201SFConst.MSKMSHO_NO, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(ZDW01201SFConst.HBI_CFM_URL, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(ZDW01201SFConst.HBI_TAIO_URL, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(ZDW01201SFConst.MSKMSHO_SANSHO_URL, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(ZDW01201SFConst.SUB_WINDOW_URL, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessageString(ZDW01201SFConst.SUB_WINDOW_OPEN_FLG
				, X31CWebConst.DATABEAN_SET_VALUE, SUB_WINDOW_OPEN_FLG_NOT_OPEN);
		bean.sendMessage(ZDW01201SFConst.OUT_SYS_CD, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(ZDW01201SFConst.ONE_TIME_PWD, X31CWebConst.DATABEAN_CLEAR);
		bean.sendMessage(ZDW01201SFConst.SEARCH_ERR_FLG, X31CWebConst.DATABEAN_CLEAR);

	}

}
