/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：eoID会員種別変更承諾画面
*   ソースファイル名：FUW00128SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年06月30日
*＜機能概要＞
*   eoID会員種別変更承諾画面処理用部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/06/30   FJ）岡      新規作成
*   v4.00.00    2012/10/30   FJ）齋藤   【IT1-2012-0001845】オープン、ファミリー会員の申込改善要望取り下げに伴うフロント改修対応
*   v5.00.00    2013/03/11   FJ) 大村    白ロム引継ぎ対応：戻るボタンの遷移先をeoID会員種別変更承諾画面に変更
*
**********************************************************************/
package eo.web.webview.FUW00128SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.web.x00.JCCBusinessException;
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 FUW00128SFLogic extends JCCWebBusinessLogic
{

	/** 遷移パターン（エリア検索） */
	private static final String RED_TRANSFER_PTN_1 = "1";
	
	/** スペース */
	private static final String SPASE = "";

	// 白ロム引継ぎ対応：戻るボタンの遷移先をeoID会員種別変更承諾画面に変更 >>>
	/** 実行モード（EOIDをお持ちの方はこちら） */
	public static final String EXECUTE_METHOD_EOID  = "EXECUTE_METHOD_EOID";
	// 白ロム引継ぎ対応：戻るボタンの遷移先をeoID会員種別変更承諾画面に変更 <<<E

	/** ゼロ */
	private static final String ZERO = "0";

	/**
	 * 初期表示処理
	 * サービスフォームBeanの初期化処理を行います。
	 * <br>
	 * @author 富士通
	 * @return true固定
	 * @throws Exception 
	 */
	public boolean init() throws Exception
	{

		// デバッグ用ログ出力
		DEBUG_LOG.info("----- init Start -----");
		// サービスフォームBean宣言
		X31SDataBeanAccess serviceInfoBean = getServiceFormBean();
		// 共有フォームBean宣言
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// ●共有フォームBeanよりWEB新規情報を取得する。
		X31SDataBeanAccess frontCommonInfoBeanA = getX31SDataBeanAccess(commonInfoBean, CommonInfoCFConst.WEB_NEW_INFO);

		// （共有フォームBean）会員種別取得
		// ●契約者情報
		X31SDataBeanAccess kei_infoR = getX31SDataBeanAccessInPath(frontCommonInfoBeanA, CommonInfoCFConst.KEIYAKUSHA_INFO);
		String kiinSbtCd = kei_infoR.sendMessageString(CommonInfoCFConst.KIIN_SBT_09, X31CWebConst.DATABEAN_GET_VALUE);

		// プロパティより会員種別情報取得
		Map map = JFUWebCommon.getDispItemsAsMap("DISPSETTING/SETTING[@screenId='FUW00128']/DISPTEXT[@groupid='kiin_sbt']", "id");

		// 会員種別（名称）取得
		String kaiinSbt = "";
		if (map.isEmpty() == false)
		{
			// 障害No.68対応 START
			/*
			for (int cnt = 1; cnt <= map.size(); cnt++)
			{
				// 共有フォームBeanの会員種別コードとプロパティの会員種別コードが同じとき、会員種別名を取得
				if (kiinSbtCd.equals(Integer.toString(cnt)))
				{
					kaiinSbt = map.get(Integer.toString(cnt)).toString();
					break;
				}
			}*/
			
			// 会員種別名を取得
			if (map.containsKey(kiinSbtCd)) {
				kaiinSbt = (String) map.get(kiinSbtCd);
			}
			// 障害No.68対応 END
			
			// （サービスフォームBean）会員種別（名称）設定
			serviceInfoBean.sendMessageString(FUW00128SFConst.KAIIN_SBT, X31CWebConst.DATABEAN_SET_VALUE, kaiinSbt);

		}
		else
		{
			DEBUG_LOG.info("★会員種別が取得できませんでした");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// （共有フォームBean）画面遷移モード設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_SET_VALUE, ZERO);
		// （共有フォームBean）遷移先画面ID設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00128);
		// （共有フォームBean）遷移先画面名設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00128);
		
		// 申込受付実績登録部品実行
		JFUWebCommon.executeWebMskmUkJskAdd(this);
		
		DEBUG_LOG.info("----- init  End  -----");

		return true;
	}

	/**
	 * 次へボタン押下処理
	 * @author 富士通
	 * @return true固定
	 * @throws Exception 
	 */
	public boolean next() throws Exception
	{

		// デバッグ用ログ出力
		DEBUG_LOG.info("----- next Start -----");
		// 共有フォームBean宣言
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// ●共有フォームBeanよりWEB新規情報を取得する。
		X31SDataBeanAccess frontCommonInfoBeanA = getX31SDataBeanAccess(commonInfoBean, CommonInfoCFConst.WEB_NEW_INFO);

		// （共有フォームBean）eoモバイル情報：ｅｏモバイル同意済フラグ取得
		X31SDataBeanAccess mobile_info = getX31SDataBeanAccessInPath(frontCommonInfoBeanA, CommonInfoCFConst.EOMOBILE);
		String mobileDoiFlg = mobile_info.sendMessageString(CommonInfoCFConst.MOBILE_DOI_FLG_14, X31CWebConst.DATABEAN_GET_VALUE);

		// （共有フォームBean）ＷＥＢ新規情報：申込回線サービス取得
		String mskmKsnSvc = frontCommonInfoBeanA.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06, X31CWebConst.DATABEAN_GET_VALUE);

		// ANK-1467-00-00_UQWiMAX白ロム申込における画面容量制限への対応
		// ＷＥＢ新規情報取得
		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);

		//ＷｉＭＡＸＲＯＭ取得
		String redWimaxrom = redirectInfoBean.sendMessageString(CommonInfoCFConst.RED_WIMAXROM_17, X31CWebConst.DATABEAN_GET_VALUE);

		String nextScreenId = "";
		String nextScreenName = "";

		// 共有フォームBean.申込回線サービスが"3"(モバイル単独)、かつ、
		// 共有フォームBean.eoモバイル.eoモバイル同意済フラグが"1"(同意済)でない場合
		if (JFUStrConst.MSKM_KSN_SVC_MOBILE.equals(mskmKsnSvc) &&
				!JFUStrConst.MOBILE_DOI_FLG_DOI.equals(mobileDoiFlg))
		{
			// ANK-1467-00-00_UQWiMAX白ロム申込における画面容量制限への対応
			if(JFUStrConst.WIMAXROM_WHITE.equals(redWimaxrom))
			{
				// 遷移先画面ID「FUW00161」を設定
				nextScreenId = JFUScreenConst.SCREEN_ID_FUW00161;
				// 遷移先画面名「eoモバイルWiMAX申込」を設定
				nextScreenName = JFUScreenConst.SCREEN_NAME_FUW00161;
			}
			else
			{
				// 遷移先画面ID「FUW00123」を設定
				nextScreenId = JFUScreenConst.SCREEN_ID_FUW00123;
				// 遷移先画面名「eoモバイル入力」を設定
				nextScreenName = JFUScreenConst.SCREEN_NAME_FUW00123;
			}
		}
		// 上記以外
		else
		{
			// 遷移先画面ID「FUW00110」を設定
			nextScreenId = JFUScreenConst.SCREEN_ID_FUW00110;
			// 遷移先画面名「ご契約者情報入力画面」を設定
			nextScreenName = JFUScreenConst.SCREEN_NAME_FUW00110;
		}

		// （共有フォームBean）画面遷移モード設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_SET_VALUE, ZERO);
		// （共有フォームBean）遷移先画面ID設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		// （共有フォームBean）遷移先画面名設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, nextScreenName);

		DEBUG_LOG.info("----- next  End  -----");

		return true;
	}

	// 白ロム引継対応 >>>
	/** 画面遷移モード（通常遷移） */
	private static final String SCREEN_MODE_NORMAL = "0";
	// 白ロム引継対応 <<<E

	// 白ロム引継対応 >>>
	/**
	 * 戻るボタン押下時
	 * 
	 * @return true
	 * @throws Exception
	 */
	public boolean back() throws Exception
	{

		// 共有フォームBeanのアクセッサーを取得します。
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ＷＥＢ新規情報
		X31SDataBeanAccessArray web_new_info = commoninfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		if (web_new_info.getCount() == 0)
		{
			web_new_info.addDataBean();
		}
		X31SDataBeanAccess web_new_infobean = web_new_info.getDataBean(0);

		// 復元用Map
		HashMap<String, Object> rtrnMap = new HashMap<String, Object>();
		// 提供条件同意 ...EOIDをお持ちの方はこちらで遷移した旨をセット
		rtrnMap.put(JFUScreenConst.SCREEN_ID_FUW00127, EXECUTE_METHOD_EOID);
		// 画面情報の設定
		JCCWebCommon.setScreenInfo(this, JFUScreenConst.SCREEN_ID_FUW00127, rtrnMap);
		// 【PT強化-No.803】FUW00127での「戻る」ボタン表示不備対応 MOD END

		// 遷移情報を設定します。
		web_new_infobean.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_SET_VALUE, SCREEN_MODE_NORMAL);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00127);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00127);

		return true;
	}
	// 白ロム引継対応 <<<E

	/**
	 * 指定した階層のデータBeanリストから0番目のデータBeanを取得する。 <BR>
	 * 
	 * @param bean
	 * @param componentIDPath
	 * @return X31SDataBeanAccess
	 */
	private X31SDataBeanAccess getX31SDataBeanAccessInPath(X31SDataBeanAccess bean, String componentIDPath)
	{

		X31SDataBeanAccess subBean = bean;
		String[] componentIDArray = componentIDPath.split("/");
		int componentIDCount = componentIDArray.length;
		for (int i = 0; i < componentIDCount; i++)
		{
			if (!"".equals(componentIDArray[i]))
			{
				subBean = getX31SDataBeanAccess(subBean, componentIDArray[i]);
			}
		}
		return subBean;
	}

	/**
	 * データBeanリストから0番目のデータBeanを取得する。 <BR>
	 * 
	 * @param bean
	 * @param componentID
	 * @return X31SDataBeanAccess
	 */
	private X31SDataBeanAccess getX31SDataBeanAccess(X31SDataBeanAccess bean, String componentID)
	{
		X31SDataBeanAccessArray subBeanArray = bean.getDataBeanArray(componentID);
		X31SDataBeanAccess subBean = subBeanArray.getDataBean(0);
		if (subBean == null)
		{
			subBeanArray.addDataBean();
			subBean = subBeanArray.getDataBean(0);
		}
		return subBean;
	}
}
