/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹構築
*	モジュール名	：FUSV0014_FUSV0014OPDBMapper
*	ソースファイル名：FUSV0014_FUSV0014OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年07月01日
*＜機能概要＞
*	BP（ご契約者情報入力(追加)チェック）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/01	FJ		新規作成
 *  v54.00      2021/08/20	FJ)新谷    【ANK-4096-00-00】宅調宅工同時実施のための聞取り強化対応
**********************************************************************/
package eo.web.webview.mapping;

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.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW00110SF.FUW00110SFConst;

/**
 * DataBean-BPマッピングをします。
 * <p>
 * <BR>
 * @author 富士通
 */
public class FUSV0014_FUSV0014OPDBMapper
{

	/** 個人メールアドレス p_email */
	public static final String P_EMAIL = "個人メールアドレス";
	/** 法人メールアドレス e_email */
	public static final String E_EMAIL = "法人メールアドレス";

	/** 個人メールアドレスリスト */
	public static final String P_EMAIL_LIST = "個人メールアドレスリスト";
	/** 法人メールアドレスリスト */
	public static final String E_EMAIL_LIST = "法人メールアドレスリスト";
	/** メールアドレスリスト 選択値 */
	public static final String EMAIL_LIST_SELECTED = "選択値";
	/** メールアドレスリスト 項目実値 */
	public static final String EMAIL_LIST_ITEMS = "項目実値";

	/** 契約者タイプコード CD00036 */
	public static final String KEI_SBT = "契約種別";

	/* ■ SC */
	/** マップキー SYSID */
	private static final String MAPKEY_SYSID = "sysid";
	/** マップキー 申込連絡先メールアドレス */
	private static final String MAPKEY_MSKM_RRKS_MLAD = "mskm_rrks_mlad";

	/** マップキー 申込番号 */
	private static final String MAPKEY_MSKM_NO = "mskm_no";

	/** マップキー 申込年月日 */
	private static final String MAPKEY_MSKM_YMD = "mskm_ymd";

	/** マップキー 申込明細登録 */
	private static final String MAPKEY_FUSV001401SC = "FUSV001401SC";

	/** マップキー 利用中のネット回線 */	
	private static final String USE_NET_KSN = "use_net_ksn";

	/** マップキー 利用中の機器の設置場所変更予定 */	
	private static final String KIKI_PLACE_CHG = "kiki_place_chg";

	/** マップキー 宅内調査と工事の同日実施 */	
	private static final String TKC_KOJI_SAME = "tkc_koji_same";

	/** マップキー 早期開通早期連絡希望有無 */	
	private static final String TSYRN_EARLY_OPEN_EARLY_RRK_KBUN_SCREEN = "tsyrn_early_open_early_rrk_kbum_screen";

	/* ■ その他 */
	/** マップキー 機能コード */
	private static final String MAPKEY_FUNC_CODE = "func_code";

	/**
	 * コンストラクタ
	 */
	public FUSV0014_FUSV0014OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ご契約者情報入力,bean　[1]：共有フォームBEAN
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap 結果マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV001401SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		// WEB新規情報
		X31SDataBeanAccessArray arr = bean[1].getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		if (arr.getCount() == 0)
		{
			arr.addDataBean();
		}
		X31SDataBeanAccess bn = arr.getDataBean(0);

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// ---------------------------------------------------------------------
		// 共通情報のマッピング
		parentMap.put(MAPKEY_FUNC_CODE, func_code);
		// 共有フォームBean.ＳＹＳＩＤ→sysid
		parentMap.put(MAPKEY_SYSID, bn.sendMessageString(CommonInfoCFConst.SYSID_06, X31CWebConst.DATABEAN_GET_VALUE));
		parentMap.put(MAPKEY_MSKM_NO, "");
		parentMap.put(MAPKEY_MSKM_YMD, "");
		// ---------------------------------------------------------------------
		// (法人/個人)メールアドレス → 申込明細登録マップ.申込連絡先メールアドレス
		String eMail = "";
		int selectedIndex = -1;
		X31SDataBeanAccess mailListBean = null;
		X31SDataBeanAccessArray beanArray = null;

		if (JFUStrConst.KEI_SBT_HOJINCD.compareTo(bean[0].sendMessageString(KEI_SBT, X31CWebConst.DATABEAN_GET_VALUE)) == 0)
		{
			// 法人の場合
			beanArray = bean[0].getDataBeanArray(E_EMAIL_LIST);
			mailListBean = beanArray.getDataBean(0);

			int count = (Integer)mailListBean.sendMessage(FUW00110SFConst.TRUE_VALUE_01, X31CWebConst.DATABEAN_GET_COUNT);
			if (count > 1)
			{
				// プルダウン選択インデックスから実際のメールアドレスを取得する
				// 注：追加時は最低１件リストがあります（>選択してください）
				selectedIndex = (mailListBean.sendMessageLong(EMAIL_LIST_SELECTED, X31CWebConst.DATABEAN_GET_VALUE, 0)).intValue();

				eMail = mailListBean.sendMessageString(EMAIL_LIST_ITEMS, X31CWebConst.DATABEAN_GET_VALUE, selectedIndex);
			}
			else
			{
				// テキストボックスがある
				eMail = bean[0].sendMessageString(FUW00110SFConst.E_EMAIL, X31CWebConst.DATABEAN_GET_VALUE);
			}
		}
		else if (JFUStrConst.KEI_SBT_KOJINCD.compareTo(bean[0].sendMessageString(KEI_SBT, X31CWebConst.DATABEAN_GET_VALUE)) == 0)
		{
			// 個人の場合
			// プルダウン選択インデックスから実際のメールアドレスを取得する
			beanArray = bean[0].getDataBeanArray(P_EMAIL_LIST);
			mailListBean = beanArray.getDataBean(0);

			int count = (Integer)mailListBean.sendMessage(FUW00110SFConst.TRUE_VALUE_01, X31CWebConst.DATABEAN_GET_COUNT);
			if (count > 1)
			{
				// プルダウン選択インデックスから実際のメールアドレスを取得する
				// 注：追加時は最低１件リストがあります（>選択してください）
				selectedIndex = (mailListBean.sendMessageLong(EMAIL_LIST_SELECTED, X31CWebConst.DATABEAN_GET_VALUE, 0)).intValue();

				eMail = mailListBean.sendMessageString(EMAIL_LIST_ITEMS, X31CWebConst.DATABEAN_GET_VALUE, selectedIndex);
			}
			else
			{
				// テキストボックスがある
				eMail = bean[0].sendMessageString(FUW00110SFConst.P_EMAIL, X31CWebConst.DATABEAN_GET_VALUE);
			}
		}
		else
		{
			// 個人でも法人でも無い（異常値）
		}

		parentMap.put(MAPKEY_MSKM_RRKS_MLAD, eMail);

		// 利用回線・機器情報
		X31SDataBeanAccessArray useKaisenKikiInfoArr = bn.getDataBeanArray(CommonInfoCFConst.USE_KAISEN_KIKI_INFO);
		if (useKaisenKikiInfoArr.getCount() == 0)
		{
			useKaisenKikiInfoArr.addDataBean();
		}
		X31SDataBeanAccess useKaisenKikiInfo = useKaisenKikiInfoArr.getDataBean(0);

		// 利用中のネット回線
		parentMap.put(USE_NET_KSN, useKaisenKikiInfo.sendMessageString(CommonInfoCFConst.USE_NET_KSN_68, X31CWebConst.DATABEAN_GET_VALUE));
		// 利用中の機器の設置場所変更予定
		parentMap.put(KIKI_PLACE_CHG, useKaisenKikiInfo.sendMessageString(CommonInfoCFConst.KIKI_PLACE_CHG_68, X31CWebConst.DATABEAN_GET_VALUE));
		// 宅内調査と工事の同日実施
		parentMap.put(TKC_KOJI_SAME, useKaisenKikiInfo.sendMessageString(CommonInfoCFConst.TKC_KOJI_SAME_68, X31CWebConst.DATABEAN_GET_VALUE));
		// 早期開通早期連絡希望有無
		parentMap.put(TSYRN_EARLY_OPEN_EARLY_RRK_KBUN_SCREEN, JFUStrConst.EMPTY);

		// ---------------------------------------------------------------------
		outputMap.put(MAPKEY_FUSV001401SC, parentMap);

		return outputMap;
	}
}