/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：FUW00122SFLogic
*   ソースファイル名：FUW00122SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年06月17日
*＜機能概要＞
*   申込完了画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/06/17   FJ）北島    新規作成
*   v4.00.00    2012/11/22   FJ）大塚    IT2-2012-0001790
*  v29.00.00    2016/11/07   FJ) 張本    ANK-2990-00-00_新電力対応Step2
*  v29.01       2017/02/07   FJ) 横山    【ANK-3094-00-00】 eo×Google×Netflix協業トライアル対応
*  v34.00       2017/09/20   FJ) 張本    【ANK-3210-00-00】電気単独対応
*  v41.00       2019/03/12   FJ) 美濃原  【ANK-3577-00-00】アンケートWeb化対応
*  v49.00       2020/06/18   FJ) 岡井    【ANK-3840-00-00】テレビリースサービス新規申込対応
*  v56.00       2021/12/06   FJ）美濃原  【ANK-4103-00-00】マンション光コンセントタイプのWeb受付対応
*
**********************************************************************/
package eo.web.webview.FUW00122SF;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

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.common.util.JFUCommonUtil;
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;

/**
 * 申込完了画面(FUW00122)のビューロジック
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class FUW00122SFLogic extends JCCWebBusinessLogic
{

	/** プロパティパス */
	private static final String QUERY_PATH = "DISPSETTING/SETTING[@screenId='FUW00122']/DISPTEXT[@groupid='SERVICE_NAME']";
	/** 属性名 */
	private static final String QUERY_ATTR_NAME = "id";

	/** タイプ名：ホームタイプ */
	private static final String NET_TIPE_HOME = "NET_TIPE_HOME";
	/** タイプ名：ホームタイプ */
	private static final String NET_TIPE_MANSHON = "NET_TIPE_MANSHON";
	/** タイプ名：ホームタイプ */
	private static final String NET_TIPE_MEZON = "NET_TIPE_MEZON";
	/** コース名：結合文字列(ネット) */
	private static final String NET_COURSE = "NET_COURSE_";
	/** コース名：結合文字列(ネット) 光配線 */
	private static final String NET_COURSE_CHG = "NET_COURSE_CHG_";
	/** コース名：結合文字列(電話) */
	private static final String TEL_COURSE = "TEL_";
	/** コース名：結合文字列(テレビ) */
	private static final String TV_COURSE = "TV_";
	/** コース名：結合文字列(テレビ) */
	private static final String MOBILE_COURSE = "MOBILE_";

	/** アプリケーションプロパティから共通暗号化キーを取得するキー (外部リンク（電気）用) */
	private static final String ELEC_MSKM_ENCRYPTION_KEY = "ELEC_MSKM_ENCRYPTION_KEY";
	/** アプリケーションプロパティから共通暗号化キーを取得するキー (外部リンク（定額サービス）用) */
	private static final String TEGAK_SVC_MSKM_ENCRYPTION_KEY = "TEGAK_SVC_MSKM_ENCRYPTION_KEY";

	/** ANK-3094-00-00 add start */
	/** プロパティパス (NetflixCP開始年月日) */
	private static final String NETFLIX_CP_STA_YMD_PATH = "DISPSETTING/SETTING[@screenId='FUW00122']/DISPTEXT[@id='NETFLIX_CP_STA_YMD']";
	/** プロパティパス (NetflixCP終了年月日) */
	private static final String NETFLIX_CP_END_YMD_PATH = "DISPSETTING/SETTING[@screenId='FUW00122']/DISPTEXT[@id='NETFLIX_CP_END_YMD']";
	/** アンケートバナー表示*/
	private static final String NETFLIX_CP_BANNER_DSP = "1";
	/** アンケートバナー非表示 */
	private static final String NETFLIX_CP_BANNER_NO_DSP = "0";
	/** ANK-3094-00-00 add end */

	/**
	 * サービスフォームBeanの初期化処理を行います。
	 * <br>
	 * @return true固定
	 * @exception Exception
	 */
	public boolean init() throws Exception
	{
		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		// サービスフォームBean取得
		X31SDataBeanAccess serviceInfoBean = getServiceFormBean();

		// ＷＥＢ新規情報取得
		X31SDataBeanAccess webNewInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.WEB_NEW_INFO);

		// 契約サービス情報取得
		X31SDataBeanAccess keiyakuSvcInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.KEIYAKU_SVC_INFO);

		// eo光ネット取得
		X31SDataBeanAccess eonetBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.EONET);

		// マンション情報取得
		X31SDataBeanAccess mansionBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.MANSION_INFO);

		// eo光電話取得
		X31SDataBeanAccess eotelBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.EOTEL);

		// eo光テレビ取得
		X31SDataBeanAccess eotvBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.EOTV);

		// eoモバイル取得
		X31SDataBeanAccess eomobileBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.EOMOBILE);

		// サービス名リスト
		X31SDataBeanAccessArray beanArray = serviceInfoBean.getDataBeanArray(FUW00122SFConst.SERVICE_LIST);

		// サービス名称取得
		Map<String, String> servicenameMap = JFUWebCommon.getDispItemsAsMap(QUERY_PATH, QUERY_ATTR_NAME);

		// 申込回線サービス
		String mskmKsnSvc = webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06, X31CWebConst.DATABEAN_GET_VALUE);
		// 申込マンションタイプ
		String mskmMnsType = webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_MNS_TYPE_06, X31CWebConst.DATABEAN_GET_VALUE);
		// 提供方式パターンコード
		String tkHoshikiPtnCd = mansionBean.sendMessageString(CommonInfoCFConst.TEIKYO_HOSHIKI_PTN_CD_16, X31CWebConst.DATABEAN_GET_VALUE);
		// マンション物件コード
		String mansionBukkenCd = mansionBean.sendMessageString(CommonInfoCFConst.MANSION_BUKKEN_CD_16, X31CWebConst.DATABEAN_GET_VALUE);

		// 選択サービス（ネット）が"1"(選択中)の場合
		if (!isNullBean(keiyakuSvcInfoBean)
				&& JFUStrConst.SELECT_SVC_NET_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_NET_10,
						X31CWebConst.DATABEAN_GET_VALUE)))
		{
			String serviceNameTypeKey = null;
			String serviceNameCoseKey = null;

			// eo光ネットタイプ：ホーム・マンション判定
			if (JFUStrConst.MSKM_KSN_SVC_HOME.equals(webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06,
					X31CWebConst.DATABEAN_GET_VALUE)))
			{

				if (!isNullBean(eonetBean))
				{

					serviceNameTypeKey = NET_TIPE_HOME;
					serviceNameCoseKey = NET_COURSE + eonetBean.sendMessageString(CommonInfoCFConst.NET_COURSE_11, X31CWebConst.DATABEAN_GET_VALUE);

				}

			}
			else if (JFUStrConst.MSKM_KSN_SVC_MANSION.equals(webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06,
					X31CWebConst.DATABEAN_GET_VALUE))
					&& JFUWebCommon.isTkHosikiChgSbtCd(mansionBean))
			{
				// 料金コースと画面表示コースが異なる
				serviceNameTypeKey = NET_TIPE_MANSHON;
				serviceNameCoseKey = NET_COURSE_CHG + JFUWebCommon.getMansionTonaiSpeedCd(mansionBean);
			}
			else if (JFUStrConst.MSKM_KSN_SVC_MANSION.equals(webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06,
					X31CWebConst.DATABEAN_GET_VALUE)))
			{
				// eo光ネットタイプ：マンション・メゾン判定
				if (!isNullBean(eonetBean)
						&& JFUStrConst.MSKM_MNS_TYPE_MANSION.equals(webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_MNS_TYPE_06,
								X31CWebConst.DATABEAN_GET_VALUE)))
				{
					serviceNameTypeKey = NET_TIPE_MANSHON;
					serviceNameCoseKey = NET_COURSE + eonetBean.sendMessageString(CommonInfoCFConst.NET_COURSE_11, X31CWebConst.DATABEAN_GET_VALUE);
				}
				else if (!isNullBean(eonetBean)
						&& JFUStrConst.MSKM_MNS_TYPE_MEZON.equals(webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_MNS_TYPE_06,
								X31CWebConst.DATABEAN_GET_VALUE)))
				{
					serviceNameTypeKey = NET_TIPE_MEZON;
					serviceNameCoseKey = NET_COURSE + eonetBean.sendMessageString(CommonInfoCFConst.NET_COURSE_11, X31CWebConst.DATABEAN_GET_VALUE);

				}

			}

			// サービス名・受付番号セット
			if (!isNullOrEmpty(serviceNameTypeKey) && !isNullOrEmpty(serviceNameCoseKey))
			{

				String serviceNameNet = null;

				if (!isNullOrEmpty((String)servicenameMap.get(serviceNameTypeKey)))
				{
					serviceNameNet = (String)servicenameMap.get(serviceNameTypeKey);
				}

				// 2013.7.9 VDSLコース名非表示対応
				if (JFUStrConst.MSKM_KSN_SVC_MANSION.equals(mskmKsnSvc) && JFUStrConst.MSKM_MNS_TYPE_MANSION.equals(mskmMnsType)
						&& (JFUStrConst.TK_HOSHIKI_PTN_VDSL.equals(tkHoshikiPtnCd) || JFUStrConst.TK_HOSHIKI_PTN_VDSLS.equals(tkHoshikiPtnCd)))
				{
					serviceNameCoseKey = JFUStrConst.EMPTY;
				}

				if (!isNullOrEmpty((String)servicenameMap.get(serviceNameCoseKey)))
				{
					serviceNameNet = serviceNameNet + (String)servicenameMap.get(serviceNameCoseKey);
				}

				// 受付番号取得
				String uketsuke = eonetBean.sendMessageString(CommonInfoCFConst.MSKMSHO_NO_11, X31CWebConst.DATABEAN_GET_VALUE);

				// サービス名・受付番号セット
				setService(beanArray, serviceNameNet, uketsuke);

			}

		}

		// 選択サービス（電話）が"1"(選択中)の場合
		if (!isNullBean(eotelBean)
				&& JFUStrConst.SELECT_SVC_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TEL_10,
						X31CWebConst.DATABEAN_GET_VALUE)))
		{
			String serviceNameKey = TEL_COURSE + webNewInfoBean.sendMessageString(CommonInfoCFConst.TEL_COURSE_06, X31CWebConst.DATABEAN_GET_VALUE);

			String serviceNameTel = (String)servicenameMap.get(serviceNameKey);

			// 受付番号取得
			String uketsuke = eotelBean.sendMessageString(CommonInfoCFConst.MSKMSHO_NO_12, X31CWebConst.DATABEAN_GET_VALUE);

			// サービス名・受付番号セット
			setService(beanArray, serviceNameTel, uketsuke);
		}

		// 選択サービス（テレビ）が"1"(選択中)の場合
		if (!isNullBean(eotvBean)
				&& JFUStrConst.SELECT_SVC_TV_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TV_10,
						X31CWebConst.DATABEAN_GET_VALUE)))
		{
			String serviceNameKey = TV_COURSE + eotvBean.sendMessageString(CommonInfoCFConst.TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE);

			String serviceNameTv = (String)servicenameMap.get(serviceNameKey);

			// 受付番号取得
			String uketsuke = eotvBean.sendMessageString(CommonInfoCFConst.MSKMSHO_NO_13, X31CWebConst.DATABEAN_GET_VALUE);

			// サービス名・受付番号セット
			setService(beanArray, serviceNameTv, uketsuke);
		}

		// モバイル判定
		if (!isNullBean(eomobileBean)
				&& !isNullOrEmpty(eomobileBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14, X31CWebConst.DATABEAN_GET_VALUE)))
		{

			if (!JFUStrConst.MOBILE_COURSE_NON.equals(eomobileBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14,
					X31CWebConst.DATABEAN_GET_VALUE)))
			{
				String serviceNameKey =
						MOBILE_COURSE + eomobileBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14, X31CWebConst.DATABEAN_GET_VALUE);
				// サービス名取得
				String serviceNameMobile = (String)servicenameMap.get(serviceNameKey);

				// 受付番号取得
				String uketsuke = eomobileBean.sendMessageString(CommonInfoCFConst.MSKMSHO_NO_14, X31CWebConst.DATABEAN_GET_VALUE);

				// サービス名・受付番号セット
				setService(beanArray, serviceNameMobile, uketsuke);

			}
		}

		// eo電気同時申込みの場合
		String eoelecDojiMskm = webNewInfoBean.sendMessageString(CommonInfoCFConst.EOELEC_DOJI_MSKM_ISHI_UM_06, X31CWebConst.DATABEAN_GET_VALUE);
		if (JFUStrConst.CD00002_1.equals(eoelecDojiMskm))
		{

			X31SDataBeanAccess bean = super.getServiceFormBean();

			X31SDataBeanAccess elseInfoBean = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.ELSE_INFO).getDataBean(0);

			X31SDataBeanAccess payWayInfoBean = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.PAYWAY_INFO).getDataBean(0);

			// 暗号化前の値
			// sysid
			String outlink_elec_sysid = webNewInfoBean.sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_GET_VALUE);
			// eoid
			String outlink_elec_eoid = webNewInfoBean.sendMessageString(CommonInfoCFConst.EOID_06, X31CWebConst.DATABEAN_GET_VALUE);
			// サービス契約番号（ネット）
			String outlink_elec_okid = eonetBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_11, X31CWebConst.DATABEAN_GET_VALUE);
			// サービス契約番号（電話）
			if (isNullOrEmpty(outlink_elec_okid))
			{
				outlink_elec_okid = eotelBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_12, X31CWebConst.DATABEAN_GET_VALUE);
			}
			// サービス契約番号（テレビ）
			if (isNullOrEmpty(outlink_elec_okid))
			{
				outlink_elec_okid = eotvBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_13, X31CWebConst.DATABEAN_GET_VALUE);
			}
			// 申込書番号
			String outlink_mskmsho_no = keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.MSKMSHO_NO_10, X31CWebConst.DATABEAN_GET_VALUE);
			// 取扱コード1-1
			String outlink_trat_cd_1_1 = elseInfoBean.sendMessageString(CommonInfoCFConst.ELEC_TRAT_CD_1_18, X31CWebConst.DATABEAN_GET_VALUE);
			// 取扱コード1-2
			String outlink_trat_cd_1_2 = payWayInfoBean.sendMessageString(CommonInfoCFConst.TRAT_CD_15, X31CWebConst.DATABEAN_GET_VALUE);
			// 取扱コード2-1
			String outlink_trat_cd_2_1 = elseInfoBean.sendMessageString(CommonInfoCFConst.ELEC_TRAT_CD_2_18, X31CWebConst.DATABEAN_GET_VALUE);
			// 共通暗号化キーをAPLConstから取得
			String outlink_elec_cck = JCCWebCommon.getApplicationConst(ELEC_MSKM_ENCRYPTION_KEY);
	
			// 外部リンク用パラメータ暗号化処理
			// 暗号化用ランダムキー取得
			String randomKey = JFUCommonUtil.createRondomKey();
			// 外部リンク（電気）用SYSID (共有フォームBean.ＷＥＢ新規情報.ｓｙｓＩＤをランダムキーにて暗号化した値)
			String criptElecSysid = JFUCommonUtil.encrypt(randomKey, outlink_elec_sysid);
			bean.sendMessageString(FUW00122SFConst.OUTLINK_ELEC_SYSID, X31CWebConst.DATABEAN_SET_VALUE, criptElecSysid);
			// 外部リンク（電気）用eoID (共有フォームBean.ＷＥＢ新規情報.ｅｏＩＤをランダムキーにて暗号化した値)
			if (!JFUWebCommon.isNull(outlink_elec_eoid))
			{
				String criptElecEoid = JFUCommonUtil.encrypt(randomKey, outlink_elec_eoid);
				bean.sendMessageString(FUW00122SFConst.OUTLINK_ELEC_EOID, X31CWebConst.DATABEAN_SET_VALUE, criptElecEoid);
			}
			// 外部リンク（電気）用サービス契約番号 (サービス契約ネットリスト.サービス契約ネットリスト.サービス契約番号をランダムキーにて暗号化した値)
			String criptElecOkid = JFUCommonUtil.encrypt(randomKey, outlink_elec_okid);
			bean.sendMessageString(FUW00122SFConst.OUTLINK_ELEC_OKID, X31CWebConst.DATABEAN_SET_VALUE, criptElecOkid);
			// 外部リンク（電気）用申込書番号
			String criptElecMskmshoNo = JFUCommonUtil.encrypt(randomKey, outlink_mskmsho_no);
			bean.sendMessageString(FUW00122SFConst.OUTLINK_ELEC_MSKMSHO_NO, X31CWebConst.DATABEAN_SET_VALUE, criptElecMskmshoNo);
			// 外部リンク（電気）用暗号キー（ランダムキーを共通暗号化キーで暗号化した値）
			String criptOutlinkElecCk =  JFUCommonUtil.encryptBeforeDecryptKey(outlink_elec_cck, randomKey);
			bean.sendMessageString(FUW00122SFConst.OUTLINK_ELEC_CK, X31CWebConst.DATABEAN_SET_VALUE, criptOutlinkElecCk);
			// 外部リンク（電気）用取扱コード1-1
			String criptTratCd_1_1 = JFUCommonUtil.encrypt(randomKey, outlink_trat_cd_1_1);
			bean.sendMessageString(FUW00122SFConst.OUTLINK_TRAT_CD_1_1, X31CWebConst.DATABEAN_SET_VALUE, criptTratCd_1_1);
			// 外部リンク（電気）用取扱コード1-2
			if (!JFUWebCommon.isNull(outlink_trat_cd_1_2))
			{
				String criptTratCd_1_2 = JFUCommonUtil.encrypt(randomKey, outlink_trat_cd_1_2);
				bean.sendMessageString(FUW00122SFConst.OUTLINK_TRAT_CD_1_2, X31CWebConst.DATABEAN_SET_VALUE, criptTratCd_1_2);
			}
			// 外部リンク（電気）用取扱コード2-1
			if (!JFUWebCommon.isNull(outlink_trat_cd_2_1))
			{
				String criptTratCd_2_1 = JFUCommonUtil.encrypt(randomKey, outlink_trat_cd_2_1);
				bean.sendMessageString(FUW00122SFConst.OUTLINK_TRAT_CD_2_1, X31CWebConst.DATABEAN_SET_VALUE, criptTratCd_2_1);
			}
			// 外部リンク（電気）申込形態
			String criptMskmFormCd = JFUCommonUtil.encrypt(randomKey, JFUStrConst.CD00591_01);
			bean.sendMessageString(FUW00122SFConst.OUTLINK_MSKM_FORM_CD, X31CWebConst.DATABEAN_SET_VALUE, criptMskmFormCd);
		}

		// 定額サービス申込有の場合
		String tegakSvcMskmUm = webNewInfoBean.sendMessageString(CommonInfoCFConst.TEGAK_SVC_MSKM_UM_06, X31CWebConst.DATABEAN_GET_VALUE);
		if (JFUStrConst.CD00002_1.equals(tegakSvcMskmUm))
		{
			X31SDataBeanAccess bean = super.getServiceFormBean();
			X31SDataBeanAccess elseInfoBean = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.ELSE_INFO).getDataBean(0);
			X31SDataBeanAccess payWayInfoBean = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.PAYWAY_INFO).getDataBean(0);

			// ●暗号化前の値
			// SYSID + YYYYMMDDHHMMSS
			String outlink_tegak_svc_sysid = webNewInfoBean.sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_GET_VALUE);
			if (!JFUWebCommon.isNull(outlink_tegak_svc_sysid))
			{
				outlink_tegak_svc_sysid = outlink_tegak_svc_sysid + JFUWebCommon.getOpeDateTime(this, null);
			}
			// EOID + YYYYMMDDHHMMSS
			String outlink_tegak_svc_eoid = webNewInfoBean.sendMessageString(CommonInfoCFConst.EOID_06, X31CWebConst.DATABEAN_GET_VALUE);
			if (!JFUWebCommon.isNull(outlink_tegak_svc_eoid))
			{
				outlink_tegak_svc_eoid = outlink_tegak_svc_eoid + JFUWebCommon.getOpeDateTime(this, null);
			}
			// サービス契約番号（ネット）
			String outlink_tegak_svc_okid = eonetBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_11, X31CWebConst.DATABEAN_GET_VALUE);
			// サービス契約番号（電話）
			if (isNullOrEmpty(outlink_tegak_svc_okid))
			{
				outlink_tegak_svc_okid = eotelBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_12, X31CWebConst.DATABEAN_GET_VALUE);
			}
			// サービス契約番号（テレビ）
			if (isNullOrEmpty(outlink_tegak_svc_okid))
			{
				outlink_tegak_svc_okid = eotvBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_13, X31CWebConst.DATABEAN_GET_VALUE);
			}
			// 申込書番号
			String outlink_tegak_svc_mskmsho_no = keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.MSKMSHO_NO_10, X31CWebConst.DATABEAN_GET_VALUE);
			// 取扱コード1-1
			String outlink_tegak_svc_trat_cd_1_1 = elseInfoBean.sendMessageString(CommonInfoCFConst.ELEC_TRAT_CD_1_18, X31CWebConst.DATABEAN_GET_VALUE);
			// 取扱コード1-2
			String outlink_tegak_svc_trat_cd_1_2 = payWayInfoBean.sendMessageString(CommonInfoCFConst.TRAT_CD_15, X31CWebConst.DATABEAN_GET_VALUE);
			// 取扱コード2-1
			String outlink_tegak_svc_trat_cd_2_1 = elseInfoBean.sendMessageString(CommonInfoCFConst.ELEC_TRAT_CD_2_18, X31CWebConst.DATABEAN_GET_VALUE);

			// 定額サービスコース
			String outlink_tegak_svc_crs = webNewInfoBean.sendMessageString(CommonInfoCFConst.TEGAK_SVC_COURSE_06, X31CWebConst.DATABEAN_GET_VALUE);
			List<String> outlink_tegak_svc_crs_list = new ArrayList<String>();
			if (outlink_tegak_svc_crs.contains(JFUStrConst.COMMA))
			{
				// カンマで分割して格納
				outlink_tegak_svc_crs_list = Arrays.asList(outlink_tegak_svc_crs.split(JFUStrConst.COMMA));
			}
			else
			{
				// そのまま格納
				outlink_tegak_svc_crs_list = Arrays.asList(outlink_tegak_svc_crs);
			}

			// 共通暗号化キーをAPLConstから取得
			String outlink_tegak_svc_ck = JCCWebCommon.getApplicationConst(TEGAK_SVC_MSKM_ENCRYPTION_KEY);

			// ●外部リンク用パラメータ暗号化処理
			// 暗号化用ランダムキー取得
			String randomKey = JFUCommonUtil.createRondomKey();
			// 外部リンク（定額サービス）用SYSID (共有フォームBean.ＷＥＢ新規情報.ｓｙｓＩＤをランダムキーにて暗号化した値)
			String encSysid = JFUCommonUtil.encrypt(randomKey, outlink_tegak_svc_sysid);
			bean.sendMessageString(FUW00122SFConst.OUTLINK_TEGAK_SYSID, X31CWebConst.DATABEAN_SET_VALUE, encSysid);
			// 外部リンク（定額サービス）用eoID (共有フォームBean.ＷＥＢ新規情報.ｅｏＩＤをランダムキーにて暗号化した値)
			if (!JFUWebCommon.isNull(outlink_tegak_svc_eoid))
			{
				String encEoid = JFUCommonUtil.encrypt(randomKey, outlink_tegak_svc_eoid);
				bean.sendMessageString(FUW00122SFConst.OUTLINK_TEGAK_EOID, X31CWebConst.DATABEAN_SET_VALUE, encEoid);
			}
			// 外部リンク（定額サービス）用サービス契約番号 (サービス契約ネットリスト.サービス契約ネットリスト.サービス契約番号をランダムキーにて暗号化した値)
			String encOkid = JFUCommonUtil.encrypt(randomKey, outlink_tegak_svc_okid);
			bean.sendMessageString(FUW00122SFConst.OUTLINK_TEGAK_OKID, X31CWebConst.DATABEAN_SET_VALUE, encOkid);
			// 外部リンク（定額サービス）用申込書番号
			String encMskmshoNo = JFUCommonUtil.encrypt(randomKey, outlink_tegak_svc_mskmsho_no);
			bean.sendMessageString(FUW00122SFConst.OUTLINK_TEGAK_MSKMSHO_NO, X31CWebConst.DATABEAN_SET_VALUE, encMskmshoNo);
			// 外部リンク（定額サービス）用暗号キー（ランダムキーを共通暗号化キーで暗号化した値）
			String encCk =  JFUCommonUtil.encryptBeforeDecryptKey(outlink_tegak_svc_ck, randomKey);
			bean.sendMessageString(FUW00122SFConst.OUTLINK_TEGAK_CK, X31CWebConst.DATABEAN_SET_VALUE, encCk);
			// 外部リンク（定額サービス）用取扱コード1-1
			String encTratCd_1_1 = JFUCommonUtil.encrypt(randomKey, outlink_tegak_svc_trat_cd_1_1);
			bean.sendMessageString(FUW00122SFConst.OUTLINK_TEGAK_TRAT_CD_1_1, X31CWebConst.DATABEAN_SET_VALUE, encTratCd_1_1);
			// 外部リンク（定額サービス）用取扱コード1-2
			if (!JFUWebCommon.isNull(outlink_tegak_svc_trat_cd_1_2))
			{
				String encTratCd_1_2 = JFUCommonUtil.encrypt(randomKey, outlink_tegak_svc_trat_cd_1_2);
				bean.sendMessageString(FUW00122SFConst.OUTLINK_TEGAK_TRAT_CD_1_2, X31CWebConst.DATABEAN_SET_VALUE, encTratCd_1_2);
			}
			// 外部リンク（定額サービス）用取扱コード2-1
			if (!JFUWebCommon.isNull(outlink_tegak_svc_trat_cd_2_1))
			{
				String encTratCd_2_1 = JFUCommonUtil.encrypt(randomKey, outlink_tegak_svc_trat_cd_2_1);
				bean.sendMessageString(FUW00122SFConst.OUTLINK_TEGAK_TRAT_CD_2_1, X31CWebConst.DATABEAN_SET_VALUE, encTratCd_2_1);
			}
			// 外部リンク（定額サービス）用申込形態
			String encMskmFormCd = JFUCommonUtil.encrypt(randomKey, JFUStrConst.CD00591_01);
			bean.sendMessageString(FUW00122SFConst.OUTLINK_TEGAK_MSKM_FORM_CD, X31CWebConst.DATABEAN_SET_VALUE, encMskmFormCd);

			// 外部リンク（定額サービス）用契約情報
			X31SDataBeanAccessArray tegakSvcKeiList = bean.getDataBeanArray(FUW00122SFConst.OUTLINK_TEGAK_KEI_LIST);
			tegakSvcKeiList.clearArray();

			for (int i = 0; i < outlink_tegak_svc_crs_list.size(); i++)
			{
				X31SDataBeanAccess tegakSvcKeiBean = tegakSvcKeiList.addDataBean();

				String[] tegakSvcKei = outlink_tegak_svc_crs_list.get(i).split(JFUStrConst.SLASH);

				String encKeiSbtCd = JFUCommonUtil.encrypt(randomKey, tegakSvcKei[0]);
				String encKikiSbtCd = JFUStrConst.EMPTY;

				if (tegakSvcKei.length == 2)
				{
					// 機器種別コードは任意項目
					encKikiSbtCd = JFUCommonUtil.encrypt(randomKey, tegakSvcKei[1]);
				}

				tegakSvcKeiBean.sendMessageString(FUW00122SFConst.KEI_SBT_CD_02, X31CWebConst.DATABEAN_SET_VALUE, encKeiSbtCd);
				tegakSvcKeiBean.sendMessageString(FUW00122SFConst.KIKI_SBT_CD_02, X31CWebConst.DATABEAN_SET_VALUE, encKikiSbtCd);
			}
		}

		/** ANK-3094-00-00 add start */
		// 運用日付を取得
		String opeDate = JFUWebCommon.getOpeDate(this, null);
		// netflixキャンペーン表示期間取得
		String cpStaYmd = JFUWebCommon.getDispItem(NETFLIX_CP_STA_YMD_PATH);
		String cpEndYmd = JFUWebCommon.getDispItem(NETFLIX_CP_END_YMD_PATH);

		// 初期値：非表示を設定
		serviceInfoBean.sendMessageString(FUW00122SFConst.ENQUETE_BANNER_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, NETFLIX_CP_BANNER_NO_DSP);

		// netflixキャンペーン表示期間内の場合
		if ((JFUWebCommon.subtractDay(opeDate, cpStaYmd) >= 0) && (JFUWebCommon.subtractDay(cpEndYmd, opeDate) >= 0))
		{
			// 選択サービス（ネット）が"1"(選択中)の場合
			if (!isNullBean(keiyakuSvcInfoBean)
					&& JFUStrConst.SELECT_SVC_NET_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_NET_10,
							X31CWebConst.DATABEAN_GET_VALUE)))
			{
				serviceInfoBean.sendMessageString(FUW00122SFConst.ENQUETE_BANNER_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, NETFLIX_CP_BANNER_DSP);
			}
		}
		/** ANK-3094-00-00 add end */
		// アンケートｗｅｂＵＲＬ（アンケートに回答するボタンのURL編集を行う）
		String uketukeNo = keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.MSKMSHO_NO_10, X31CWebConst.DATABEAN_GET_VALUE);
		String enqUlr = JFUWebCommon.getEnqueteWebUrl(JFUScreenConst.SCREEN_ID_FUW00122, mansionBukkenCd, uketukeNo);
		serviceInfoBean.sendMessageString(FUW00122SFConst.ENQ_WEB_URL, X31CWebConst.DATABEAN_SET_VALUE, enqUlr);

		// 申込受付実績登録部品実行
		JFUWebCommon.executeWebMskmUkJskAdd(this);

		return true;

	}

	// IT2-2012-1790 2012/11/22 Otsuka 「続けてモバイルを申し込む」削除

	/**
	 * 申込サービス名と受付番号を設定する。
	 * <br>
	 * @param beanArray   データbean
	 * @param serviceName 申込サービス名
	 * @param uketsuke    受付番号
	 * @throws Exception
	 */
	private void setService(X31SDataBeanAccessArray beanArray, String serviceName, String uketsuke) throws Exception
	{
		// サービス名リスト
		X31SDataBeanAccess subbean = beanArray.addDataBean();

		// 申込サービス名と受付番号を設定する。
		subbean.sendMessageString(FUW00122SFConst.SERVICE_01, X31CWebConst.DATABEAN_SET_VALUE, serviceName);
		subbean.sendMessageString(FUW00122SFConst.UKETSUKE_01, X31CWebConst.DATABEAN_SET_VALUE, uketsuke);
	}

	/**
	 * Null又は空文字かどうかを判定する。 <BR>
	 * 
	 * @param value
	 * @return （true:null、または空文字、false:null、または空文字以外）
	 */
	private boolean isNullOrEmpty(String value)
	{
		return null == value || "".equals(value) || "null".equals(value);
	}

	/**
	 * Beanがnullかどうかを判定する。 <BR>
	 * 
	 * @param value
	 * @return （true:null、false:null以外）
	 */
	private boolean isNullBean(X31SDataBeanAccess value)
	{
		return null == value;
	}

}
