/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：eoID有無確認
*   ソースファイル名：FUW00111SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年09月14日
*＜機能概要＞
*  eoID有無確認のビューロジッククラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/09/14   FJ)北島     新規作成
*   v4.00.00    2012/10/30   FJ)齋藤     【IT1-2012-0001845】オープン、ファミリー会員の申込改善要望取り下げに伴うフロント改修対応
*   v4.01.00	2012/11/22   FJ)大塚     【IT2-2012-0001790】
*   v4.02.00    2012/12/15   FJ)佐々木   【PT強化-No.803】FUW00127での「戻る」ボタン表示不備対応
*   v10.00      2014/08/18   FJ)岡井     【ANK-2218-00-00】フロントＳ画面遷移数削減対応(2)_確認画面対応
*   v15.00      2015/05/20   FJ)中西     【ANK-2480-00-00】新電力対応
*   v40.00      2019/02/04   FJ)岡井     【ANK-3531-00-00】【eoフロント】ログイン画面のiDA対応
**********************************************************************/
package eo.web.webview.FUW00111SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.util.HashMap;

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.JFUStrConst;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * eoID有無確認のビューロジッククラスです。<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class FUW00111SFLogic extends JCCWebBusinessLogic
{
	/** 実行モード（初めての方はこちら） */
	public static final String EXECUTE_METHOD_FIRST = "EXECUTE_METHOD_FIRST";
	/** 実行モード（EOIDをお持ちの方はこちら） */
	public static final String EXECUTE_METHOD_EOID  = "EXECUTE_METHOD_EOID";

	/** OSID：004 */
	private static final String OSID_004 = "OS004";

	/**
	 * 初期処理
	 * 
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean init() throws Exception
	{

		// 申込受付実績登録部品実行
		JFUWebCommon.executeWebMskmUkJskAdd(this);
		
		return true;
	}

	/**
	 * 初めての方はこちらボタン押下時処理
	 * 
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean first() throws Exception
	{

		DEBUG_LOG.info("----- first start -----");

		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();

		// ＷＥＢ新規情報取得
		X31SDataBeanAccessArray webNewInfo = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		X31SDataBeanAccess webNewInfoBean = webNewInfo.getDataBean(0);

		// リダイレクト情報取得
		X31SDataBeanAccessArray redirectInfo = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.REDIRECT_INFO);
		X31SDataBeanAccess redirectInfoBean = redirectInfo.getDataBean(0);

		// 契約者情報取得
		X31SDataBeanAccessArray keiyakushaInfo = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.KEIYAKUSHA_INFO);
		X31SDataBeanAccess keiyakushaInfoBean = keiyakushaInfo.getDataBean(0);

		// ｅｏモバイル情報取得
		X31SDataBeanAccessArray eoMobileInfo = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.EOMOBILE);
		X31SDataBeanAccess eoMobileInfoBean = eoMobileInfo.getDataBean(0);

		//申込回線サービス取得
		String mskmKsnSvc = webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06, X31CWebConst.DATABEAN_GET_VALUE);
		// ナビゲータパターン取得
		String navigatorPtn = redirectInfoBean.sendMessageString(CommonInfoCFConst.NAVIGATOR_PTN_17, X31CWebConst.DATABEAN_GET_VALUE);

		// 申込区分
		webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KBN_06, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.MSKM_KBN_NEW);
		// モバイルコース取得
		String mobileCourse = eoMobileInfoBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14, X31CWebConst.DATABEAN_GET_VALUE);

		// TODO 白ロム本格対応時に下記処理を削除すること
		// START
		//ＷｉＭＡＸＲＯＭ取得
		String redWimaxrom = redirectInfoBean.sendMessageString(CommonInfoCFConst.RED_WIMAXROM_17, X31CWebConst.DATABEAN_GET_VALUE);
		// END


		// 共有フォームBean.eoモバイル.モバイルコースが"1"(WiFi)の場合
		if (JFUStrConst.MOBILE_COURSE_WIFI.equals(mobileCourse))
		{
			// 遷移先の画面ID・画面名に"eoID取得依頼"画面を設定する。
			setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00112, JFUScreenConst.SCREEN_NAME_FUW00112);
		}
		// 共有フォームBean.リダイレクト情報.ナビゲータパターンが"1"(エリア検索)、かつ、
		// 共有フォームBean.申込回線サービスが"1"(ホームタイプ)の場合
		else if (JFUStrConst.NAVI_PTN_AREA.equals(navigatorPtn) &&
				JFUStrConst.MSKM_KSN_SVC_HOME.equals(mskmKsnSvc))
		{
			// 遷移先の画面ID・画面名に"エリア検索"画面を設定する。
			setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00101, JFUScreenConst.SCREEN_NAME_FUW00101);
		}
		// 共有フォームBean.リダイレクト情報.ナビゲータパターンが"5"(マンション検索)、かつ、
		// 共有フォームBean.申込回線サービスが"2"(マンションタイプ)、の場合
		else if (JFUStrConst.NAVI_PTN_MANSION.equals(navigatorPtn) &&
				JFUStrConst.MSKM_KSN_SVC_MANSION.equals(mskmKsnSvc))
		{
			// 遷移先の画面ID・画面名に"マンション検索1(府県)"画面を設定する。
			setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00131, JFUScreenConst.SCREEN_NAME_FUW00131);
		}
		// 共有フォームBean.申込回線サービスが"3"(モバイル単独)の場合
		else if (JFUStrConst.MSKM_KSN_SVC_MOBILE.equals(mskmKsnSvc))
		{
			// TODO 白ロム本格対応時に下記処理をコメント解除すること
//			// 遷移先の画面ID・画面名に"eoモバイル入力"画面を設定する。
//			setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00123, JFUScreenConst.SCREEN_NAME_FUW00123);

			// TODO 白ロム本格対応時に下記処理を削除すること
			// START
			//共有フォームBean.申込回線サービスが"3"(モバイル単独)の場合、
			if (JFUStrConst.WIMAXROM_WHITE.equals(redWimaxrom))
			{
				//かつWIMAXROMが"0"(白ロム)の場合、eoID取得依頼画面へ遷移する

				// ANK-1467-00-00_UQWiMAX白ロム申込における画面容量制限への対応
				// 遷移先の画面ID・画面名に"eoID取得依頼"画面を設定する。
				setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00161, JFUScreenConst.SCREEN_NAME_FUW00161);
			}
			else
			{
				//かつWIMAXROMが"0"(白ロム)以外の場合、eoモバイル入力画面へ遷移する

				// 遷移先の画面ID・画面名に"eoモバイル入力"画面を設定する。
				setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00123, JFUScreenConst.SCREEN_NAME_FUW00123);
			}
			// END
		}
		
		// ANK-2480-00-00_新電力対応 2015/05/21 add start
		// 上記以外の場合（共有フォームBean.申込回線サービスが"4"(eo電気追加)など）
		else 
		{
			// 遷移先の画面ID・画面名に"戸建て・マンション選択"画面を設定する。
			setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00147, JFUScreenConst.SCREEN_NAME_FUW00147);
		}
		// ANK-2480-00-00_新電力対応 2015/05/21 add end
		
		// 【PT強化-No.803】FUW00127での「戻る」ボタン表示不備対応 ADD START
		// 復元用Map
		HashMap<String, Object> rtrnMap = new HashMap<String, Object>();
		// 提供条件同意
		rtrnMap.put(JFUScreenConst.SCREEN_ID_FUW00127, EXECUTE_METHOD_FIRST);
		// 画面情報の設定
		JCCWebCommon.setScreenInfo(this, JFUScreenConst.SCREEN_ID_FUW00127, rtrnMap);
		// 【PT強化-No.803】FUW00127での「戻る」ボタン表示不備対応 ADD END

		DEBUG_LOG.info("----- first end -----");

		return true;
	}

	/**
	 * eoIDをお持ちの方はこちらボタン押下時処理
	 * 
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean eoid() throws Exception
	{
		DEBUG_LOG.info("----- eoid start -----");

		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();

		// 【PT強化-No.803】FUW00127での「戻る」ボタン表示不備対応 MOD START
//		// 復元用Map
//		HashMap rtrnMap = new HashMap();
//		// 提供条件同意
//		rtrnMap.put("", "");
//		// 画面情報の設定
//		JCCWebCommon.setScreenInfo(this, JFUScreenConst.SCREEN_ID_FUW00127, rtrnMap);

//		// 復元用Map
//		HashMap<String, Object> rtrnMap = new HashMap<String, Object>();
//		// 提供条件同意
//		rtrnMap.put(JFUScreenConst.SCREEN_ID_FUW00127, EXECUTE_METHOD_EOID);
//		// 画面情報の設定
//		JCCWebCommon.setScreenInfo(this, JFUScreenConst.SCREEN_ID_FUW00127, rtrnMap);
//		// 【PT強化-No.803】FUW00127での「戻る」ボタン表示不備対応 MOD END

//		// 遷移先の画面ID・画面名に"eoID認証"画面を設定する。
//		setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00127, JFUScreenConst.SCREEN_NAME_FUW00127);

		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, OSID_004);

		DEBUG_LOG.info("----- eoid end -----");

		return true;
	}

	/**
	 * 戻るボタン押下時処理
	 * 
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean back() throws Exception
	{

		DEBUG_LOG.info("----- back start -----");

		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();

		// ＷＥＢ新規情報取得
		X31SDataBeanAccessArray webNewInfo = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		X31SDataBeanAccess webNewInfoBean = webNewInfo.getDataBean(0);

		// リダイレクト情報取得
		X31SDataBeanAccessArray redirectInfo = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.REDIRECT_INFO);
		X31SDataBeanAccess redirectInfoBean = redirectInfo.getDataBean(0);

		// ｅｏモバイル情報取得
		X31SDataBeanAccessArray eoMobileInfo = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.EOMOBILE);
		X31SDataBeanAccess eoMobileInfoBean = eoMobileInfo.getDataBean(0);

		// ナビゲータパターン取得
		String navigatorPtn = redirectInfoBean.sendMessageString(CommonInfoCFConst.NAVIGATOR_PTN_17, X31CWebConst.DATABEAN_GET_VALUE);
		// モバイルコース取得
		String mobileCourse = eoMobileInfoBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14, X31CWebConst.DATABEAN_GET_VALUE);
		// ｅｏモバイル同意済フラグ取得
		String mobileDoiFlg = eoMobileInfoBean.sendMessageString(CommonInfoCFConst.MOBILE_DOI_FLG_14, X31CWebConst.DATABEAN_GET_VALUE);

		// 共有フォームBean,リダイレクト情報.ナビゲーションパターンが"2"(料金シミュレーション)の場合
		if (JFUStrConst.NAVI_PTN_SIML.equals(navigatorPtn))
		{
			// 遷移先の画面ID・画面名に"規約・約款確認"画面を設定する。
			setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00157, JFUScreenConst.SCREEN_NAME_FUW00157);
		}
		// 共有フォームBean.eoモバイル.モバイルコースが"1"(WiFi)、且つ、
		// 共有フォームBean.eoモバイル.eoモバイル同意済フラグが"1"(同意済)の場合
		else if (JFUStrConst.MOBILE_COURSE_WIFI.equals(mobileCourse) &&
				JFUStrConst.MOBILE_DOI_FLG_DOI.equals(mobileDoiFlg))
		{
			// 遷移先の画面ID・画面名に"eoモバイル入力"画面を設定する。
			setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00123, JFUScreenConst.SCREEN_NAME_FUW00123);
		}

		DEBUG_LOG.info("----- back end -----");

		return true;
	}

	/**
	 * 遷移先の画面ID・画面名を共有フォームBeanの項目に設定する。
	 * <br>
	 * @param screenId   画面ＩＤ
	 * @param screenName 画面名
	 * @throws Exception
	 */
	private void setScreenInfo(String screenId, String screenName) throws Exception
	{

		// 共有フォームBean取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, screenId);

		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, screenName);

	}

}