/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹構築
 *	モジュール名	：FUSV0181_FUSV0181OPDBMapper
 *	ソースファイル名：FUSV0181_FUSV0181OPDBMapper.java
 *	作成者			：FJ
 *	日付			：2012年09月10日
 *＜機能概要＞
 *	BP（アンケート番号一覧照会（初期表示））へのＤ−Ｂマッピングクラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v4.00.00	2011/07/03	FJ		新規作成
 *	v7.00.00	2013/12/09	FJ)川瀬	【ANK-1578-00-00】多機能ルーター(機器追加)
 *	v38.00.00	2018/07/04	FJ)大島	【ANK-3436-00-00】eo光×eo電気×mineoセット割対応
 *
 **********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
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.FUW00116SF.FUW00116SFConst;
import eo.web.webview.FUW00928SF.FUW00928SFConst;
import eo.web.webview.FUW12201SF.FUW12201SFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;

public class FUSV0181_FUSV0181OPDBMapper
{
	/** アンケートフラグ */
	public static final String ENQUETEFLG = "アンケートフラグ";
	
// ANK-3436-00-00 ADD START
	/** mineoセット割申込割引情報取得CC */
	private static final String FUSV018101CC = "FUSV018101CC";

	/** IN：ＫＥＹ＿更新区分 */
	private static final String KEY_UPD_KBN = "key_upd_kbn";
	/** ＫＥＹ＿更新区分　"1"（新規系） */
	private static final String KEY_UPD_KBN_NEW = "1";

	/* ■□ JFUMineoSetPlanWribCC OUT項目 ■□ */
	/** OUT：表示用キャンペーンコード */
	private static final String DSP_CAMPAIGN_CD = "dsp_campaign_cd";
	/** OUT：割引サービスコード */
	private static final String WRIB_SVC_CD = "wrib_svc_cd";
	/** OUT：受付終了年月日時分 */
	private static final String UK_END_YMDHM = "uk_end_ymdhm";
	/** OUT：変更系受付終了年月日 */
	private static final String HK_UK_END_YMD = "hk_uk_end_ymd";
// ANK-3436-00-00 ADD END
	private static final String FUSV018103SC = "FUSV018103SC";
	/** WEB申込情報一覧照会明細 */
	private static final String EFU0361B010CBSMSG1LIST = "EFU0361B010CBSMsg1List";

	/** メールアドレス */
	private static final String MLAD = "mlad";

	/**
	 * 上りマッピングをする（アンケート番号一覧照会）
	 * 
	 * @param bean：サービスフォームビーン
	 * @param outputMap
	 * @param func_code：機能コード
	 * 
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV018101SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 申込チャネルコード → アンケート番号一覧照会.ＫＥＹ＿申込チャネルコード
		parentMap.put("key_mskm_channel_cd", bean[0].sendMessageString("申込チャネルコード", X31CWebConst.DATABEAN_GET_VALUE));
		// アンケート表示判定ｅｏブランドコード → アンケート番号一覧照会.ＫＥＹ＿アンケート表示判定eoブランドコード
		parentMap.put("key_enqt_dsp_jdg_eo_brand_cd", bean[0].sendMessageString("アンケート表示判定ｅｏブランドコード", X31CWebConst.DATABEAN_GET_VALUE));
		// サービスタイプ識別コード → アンケート番号一覧照会.ＫＥＹ＿サービスタイプ識別コード
		parentMap.put("key_svc_type_skbt_cd", bean[0].sendMessageString("サービスタイプ識別コード", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV018101SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする（機器提供サービス契約一覧照会）
	 * 
	 * @param bean：サービスフォームビーン
	 * @param outputMap
	 * @param func_code：機能コード
	 * 
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV018102SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		// WEB新規情報
		X31SDataBeanAccess bnWebinfo = getWebInfo(bean[1]);
		// 契約サービス
		X31SDataBeanAccess bnKeiService = getKeiyakusvcinfo(bnWebinfo);
		// 光ネット
		X31SDataBeanAccess bnEonet = getEonet(bnWebinfo);

		String nowSvcNet =  bnKeiService.sendMessageString(CommonInfoCFConst.NOW_SVC_NET_10, X31CWebConst.DATABEAN_GET_VALUE);
		String selectSvcTel = bnKeiService.sendMessageString(CommonInfoCFConst.SELECT_SVC_TEL_10, X31CWebConst.DATABEAN_GET_VALUE);
		if(JFUStrConst.NOW_SVC_NET_KEI_CHU.equals(nowSvcNet) && JFUStrConst.SELECT_SVC_TEL_CHOICE.equals(selectSvcTel))
		{
			parentMap.put("netSvcUM", JFUStrConst.CD00002_1);
		}
		else
		{
			parentMap.put("netSvcUM", JFUStrConst.CD00002_0);
		}

		// サービス契約番号 → 機器提供サービス契約一覧照会.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bnEonet.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_11, X31CWebConst.DATABEAN_GET_VALUE));
		// 申込区分
		parentMap.put("mskmKbn", bnWebinfo.sendMessageString(CommonInfoCFConst.MSKM_KBN_06, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("FUSV018102SC", parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピングをする（アンケート番号一覧照会）
	 * 
	 * @param bean　[0]：入力内容確認　[1]：共有フォームビーン
	 * @param outputMap
	 * @return bean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV018101SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		ArrayList list = null;
		if (outputMap.containsKey("FUSV018101SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV018101SC");
		}

		list = (ArrayList)parentMap.get("EKK1911B501CBSMsg1List");

		if (list.size() > 0)
		{
			// アンケートフラグ
			bean[0].sendMessageString(ENQUETEFLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}

		return bean;

	}

	/**
	 * 下りマッピングをする（機器提供サービス契約一覧照会）
	 * 
	 * @param bean　[0]：入力内容確認　[1]：共有フォームビーン
	 * @param outputMap
	 * @return bean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV018102SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		// WEB新規情報
		X31SDataBeanAccess bnWebinfo = getWebInfo(bean[1]);
		// 光ネット
		X31SDataBeanAccess bnEonet = getEonet(bnWebinfo);

		HashMap parentMap = null;
		HashMap childMap = null;
		ArrayList list = null;
		if (outputMap.containsKey("FUSV018102SC"))
		{
			parentMap = (HashMap)outputMap.get("FUSV018102SC");
		}

		list = (ArrayList)parentMap.get("EKK0341B008CBSMsg1List");

		if (list == null || list.size() == 0)
		{
			return bean;
		}

		String kktkSvcCd = "";
		String kktkSvcKeiStat = "";
		
		for(int i = 0; i < list.size(); i++)
		{
			childMap = (HashMap)list.get(i);
			//機器提供サービスコード
			kktkSvcCd = (String)childMap.get("kktk_svc_cd");
			//機器提供サービス契約ステータス
			kktkSvcKeiStat = (String)childMap.get("kktk_svc_kei_stat");

			if (JFUStrConst.KK0771_KKTK_SVC_CD_C014.equals(kktkSvcCd) && (JFUStrConst.CD00056_020.equals(kktkSvcKeiStat)
					|| JFUStrConst.CD00056_030.equals(kktkSvcKeiStat) || JFUStrConst.CD00056_100.equals(kktkSvcKeiStat)))
			{
				// eo光ルーター返却フラグ
				bnEonet.sendMessageString(CommonInfoCFConst.ROUTER_RETURN_FLG_11, X31CWebConst.DATABEAN_SET_VALUE, "1");
			}
		}

		return bean;

	}

	/**
	 * WEB新規情報
	 * 
	 * @param bean
	 * @return bn
	 */
	private X31SDataBeanAccess getWebInfo(X31SDataBeanAccess bean)
	{
		X31SDataBeanAccessArray arr = bean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		if (arr.getCount() == 0)
		{
			arr.addDataBean();
		}
		X31SDataBeanAccess bn = arr.getDataBean(0);

		return bn;
	}

	/**
	 * 契約サービス情報
	 * 
	 * @param bn
	 * @return bn1
	 */
	private X31SDataBeanAccess getKeiyakusvcinfo(X31SDataBeanAccess bn)
	{
		X31SDataBeanAccessArray arr = bn.getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO);
		if (arr.getCount() == 0)
		{
			arr.addDataBean();
		}
		X31SDataBeanAccess bn1 = arr.getDataBean(0);

		return bn1;
	}

	/**
	 * 光ネット
	 * 
	 * @param bn
	 * @return bn1
	 */
	private X31SDataBeanAccess getEonet(X31SDataBeanAccess bn)
	{
		X31SDataBeanAccessArray arr = bn.getDataBeanArray(CommonInfoCFConst.EONET);
		if (arr.getCount() == 0)
		{
			arr.addDataBean();
		}
		X31SDataBeanAccess bn1 = arr.getDataBean(0);

		return bn1;
	}
// ANK-3436-00-00 ADD START
	/**
	 * 「mineoセット割申込割引情報取得CC」の上りマッピングをする
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	public HashMap<String, Object> setFUSV018101CC(HashMap<String, Object> outputMap, String func_code)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// ＫＥＹ＿更新区分　"1"（新規系）
		parentMap.put(KEY_UPD_KBN, KEY_UPD_KBN_NEW);

		outputMap.put(FUSV018101CC, parentMap);

		return outputMap;
	}

	/**
	 * 「mineoセット割申込割引情報取得CC」の下りマッピング
	 * @param bean　[0]：サービスフォームムBean　[1]：共有フォームBean
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV018101CC(X31SDataBeanAccess[] bean, HashMap outputMap, String screenId)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV018101CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV018101CC);
		}

		String dsp_campaign_cd = (String)parentMap.get(DSP_CAMPAIGN_CD);
		String hk_uk_end_ymd = (String)parentMap.get(HK_UK_END_YMD);

		if (JFUScreenConst.SCREEN_ID_FUW00116.equals(screenId)) {
			bean[0].sendMessageString(FUW00116SFConst.MINEO_SETPLAN_WRIB_CD, X31CWebConst.DATABEAN_SET_VALUE, dsp_campaign_cd);
			bean[0].sendMessageString(FUW00116SFConst.MINEO_SETPLAN_UK_END_YMDHM, X31CWebConst.DATABEAN_SET_VALUE, hk_uk_end_ymd);
		} else if (JFUScreenConst.SCREEN_ID_FUW00928.equals(screenId)) {
			bean[0].sendMessageString(FUW00928SFConst.MINEO_SETPLAN_WRIB_CD, X31CWebConst.DATABEAN_SET_VALUE, dsp_campaign_cd);
			bean[0].sendMessageString(FUW00928SFConst.MINEO_SETPLAN_UK_END_YMDHM, X31CWebConst.DATABEAN_SET_VALUE, hk_uk_end_ymd);
		}

		return bean;
	}
// ANK-3436-00-00 ADD END
	/**
	 * WEB申込情報一覧照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param bean 共有フォームBean
	 * @param outputMap アウトマップ
	 * @param funcCd 機能コード
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV018103SC(String skbt_key, HashMap outputMap, String funcCd)
	{

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// ---------------------------------------------------------------------
		// 共通情報のマッピング
		parentMap.put("func_code", funcCd);

		// 識別キー
		parentMap.put("key_skbt_key", skbt_key);

		outputMap.put(FUSV018103SC, parentMap);

		return outputMap;
	}
	/**
	 * WEB申込情報一覧照会の下りマッピング処理です。
	 * 
	 * <br>
	 * @param bean 共有フォームBean
	 * @param outputMap アウトマップ
	 * @param funcCd 機能コード
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess getFUSV018103SC(X31SDataBeanAccess bean, HashMap outputMap)
	{
		String mlad = JFUStrConst.EMPTY;
		// サービスからの戻りデータのメールアドレスを取得
		HashMap parentMap = (HashMap)outputMap.get(FUSV018103SC);
		bean.sendMessageBoolean(FUW00928SFConst.DISP_DNSKH_DOI_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
		if (!JFUWebCommon.isNull(parentMap) && 0 < parentMap.size())
		{
			ArrayList childList = (ArrayList)parentMap.get(EFU0361B010CBSMSG1LIST);
			if (!JFUWebCommon.isNull(childList) && 0 < childList.size())
			{
				HashMap childMap = (HashMap)childList.get(0);
				if (!JFUWebCommon.isNull(childMap) && 0 < childMap.size())
				{
					mlad = (String)childMap.get(MLAD);
				}
				bean.sendMessageBoolean(FUW00928SFConst.DISP_DNSKH_DOI_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
			}
		}
		bean.sendMessageBoolean(FUW00928SFConst.MAIL_CONF_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
		if (JFUWebCommon.isNull(mlad))
		{
			bean.sendMessageBoolean(FUW00928SFConst.MAIL_CONF_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
		}
		return bean;
	}
}