/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0117_KKSV0117OPDBMapper
*	ソースファイル名：KKSV0117_KKSV0117OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年04月09日
*＜機能概要＞
*	BP（サービス選択入力チェック）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/04/09	FJ		新規作成
*   V4.00.00    2012/08/24  FJ) 谷口    【ANK-0268-00-00】量販店ＧＭＳ申込対応
*   V4.01.00    2012/12/28  FJ) 川西    【OT-2012-0000057】ADSLのサービス追加時、利用場所の住所のみマッピングするよう修正。
*   v5.00.00	2013/04/04	FJ) 多田    【IT1-2013-0000727】保留データ存在チェックの追加
*   v6.00.00    2013/10/09  FJ) 高橋    【ANK-1580-00-00】eoスマートリンク改修対応@(複数契約対応・機種追加)
*
**********************************************************************/
package eo.web.webview.mapping;

import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.MSKMSHO_KIND_ADSL;
import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.MSKM_FLG_TSUIKA;

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.JKKStrConst;
import eo.web.webview.KKW00101SF.KKW00101SFConst;
import eo.web.webview.common.JKKWebCommon;

/**
 * DataBean-BPマッピングをする。
 * <BR>
 * @author 富士通
 */
public class KKSV0117_KKSV0117OPDBMapper
{

	/**
	 * コンストラクタ
	 */
	public KKSV0117_KKSV0117OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean [0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV011701SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 申込書番号 → 申込書番号存在チェック一覧照会マップ.ＫＥＹ＿申込書番号
		parentMap.put("key_mskmsho_no", bean[0].sendMessageString("申込書番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV011701SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV011702SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// サービス選択＿ご利用場所の郵便番号 → 共通住所一覧照会マップ.ＫＥＹ＿郵便番号
		parentMap.put("key_pcd", bean[0].sendMessageString("サービス選択＿ご利用場所の郵便番号（前）", X31CWebConst.DATABEAN_GET_VALUE)
				+ bean[0].sendMessageString("サービス選択＿ご利用場所の郵便番号（後）", X31CWebConst.DATABEAN_GET_VALUE));

		// 運用日付 → 共通住所一覧照会マップ.ＫＥＹ＿基準日
		parentMap.put("key_ymd", bean[0].sendMessageString("運用日付", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV011702SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV011703SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 契約電話番号 → ADSL可能エリア一覧照会マップ.ＫＥＹ＿判定局番
		String judgeKyokuNo = JKKWebCommon.getJudgeKyokuNo(bean[0].sendMessageString("契約電話番号", X31CWebConst.DATABEAN_GET_VALUE));
		parentMap.put("key_judge_kyoku_no", judgeKyokuNo);

		outputMap.put("KKSV011703SC", parentMap);

		return outputMap;
	}

	/**
	 * 共通住所一覧照会マップの下りマッピング
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @return been
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV011702CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		if (bean == null)
		{
			return null;
		}
		if (!outputMap.containsKey("KKSV011702SC"))
		{
			return null;
		}
		HashMap parentMap = (HashMap)outputMap.get("KKSV011702SC");
		if (parentMap == null)
		{
			return null;
		}

		if (!outputMap.containsKey("KKSV011702SC"))
		{
			return null;
		}

		//--------------------------------------------------------------------------------------------------------------------
		//												共通住所一覧照会
		//--------------------------------------------------------------------------------------------------------------------
		ArrayList childList = null;
		HashMap childMap = new HashMap();

		String mskmFlg = bean[0].sendMessageString(KKW00101SFConst.MSKM_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		String mskmshoKind = bean[0].sendMessageString(KKW00101SFConst.MSKMSHO_KIND, X31CWebConst.DATABEAN_GET_VALUE);
		String mskmFormCd = bean[0].sendMessageString(KKW00101SFConst.MSKM_FORM_CD, X31CWebConst.DATABEAN_GET_VALUE);

		// --------------------------
		// 共通住所一覧照会
		// --------------------------
		childList = (ArrayList)parentMap.get("EZM0081B040CBSMsg1List");
		childMap = (HashMap)childList.get(0);

		if (!(mskmFormCd.equals(JKKStrConst.CD00591_05) && mskmshoKind.equals(MSKMSHO_KIND_ADSL) && MSKM_FLG_TSUIKA.equals(mskmFlg)))
		{
			// 契約者-郵便番号(前)
			bean[0].sendMessageString(KKW00101SFConst.KEISHA_PCD_BF, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("pcd")).substring(0, 3));
			// 契約者-郵便番号(後)
			bean[0].sendMessageString(KKW00101SFConst.KEISHA_PCD_AF, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("pcd")).substring(3, 7));
			// 住所コード
			bean[0].sendMessageString(KKW00101SFConst.KEISHA_AD_CD, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("ad_cd")));
			// 契約者-都道府県
			bean[0].sendMessageString(KKW00101SFConst.KEISHA_STATE_NM, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("state_nm")));
			// 契約者-市区町村
			bean[0].sendMessageString(KKW00101SFConst.KEISHA_CITY_NM, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("city_nm")));
			// 契約者-大字通称
			bean[0].sendMessageString(KKW00101SFConst.KEISHA_OAZTSU_NM, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("oaztsu_nm")));
			// 契約者-字町名
			bean[0].sendMessageString(KKW00101SFConst.KEISHA_AZCHO_NM, X31CWebConst.DATABEAN_SET_VALUE, ((String)childMap.get("azcho_nm")));
		}

		// 利用場所-郵便番号(前)
		bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_PCD_BF, X31CWebConst.DATABEAN_SET_VALUE
				, ((String)childMap.get("pcd")).substring(0, 3));
		// 利用場所-郵便番号(後)
		bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_PCD_AF, X31CWebConst.DATABEAN_SET_VALUE
				, ((String)childMap.get("pcd")).substring(3, 7));
		// 利用場所-住所コード
		bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_AD_CD, X31CWebConst.DATABEAN_SET_VALUE
				, ((String)childMap.get("ad_cd")));
		// 利用場所-都道府県
		bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_STATE_NM, X31CWebConst.DATABEAN_SET_VALUE
				, ((String)childMap.get("state_nm")));
		// 利用場所-市区町村
		bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_CITY_NM, X31CWebConst.DATABEAN_SET_VALUE
				, ((String)childMap.get("city_nm")));
		// 利用場所-大字通称
		bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_OAZTSU_NM, X31CWebConst.DATABEAN_SET_VALUE
				, ((String)childMap.get("oaztsu_nm")));
		// 利用場所-字丁目名
		bean[0].sendMessageString(KKW00101SFConst.KAISEN_PLACE_AZCHO_NM, X31CWebConst.DATABEAN_SET_VALUE
				, ((String)childMap.get("azcho_nm")));

		return bean;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCONTROL(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// ｅｏＡＤＳＬ → 制御項目マップ.ｅｏＡＤＳＬ
		if (bean[0].sendMessageBoolean("ｅｏＡＤＳＬ", X31CWebConst.DATABEAN_GET_VALUE))
		{
			// ｅｏＡＤＳＬ → 制御項目マップ.ｅｏＡＤＳＬ
			parentMap.put("eoadsl_flg", "1");
		}
		else
		{
			// ｅｏＡＤＳＬ → 制御項目マップ.ｅｏＡＤＳＬ
			parentMap.put("eoadsl_flg", null);
		}

		// ｅｏＡＤＳＬ申込サービス → 制御項目マップ.ｅｏＡＤＳＬ申込サービス
		parentMap.put("eoadsl_eaccess_flg", bean[0].sendMessageString("ｅｏＡＤＳＬ申込サービス", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CONTROL", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opeDateTimeStamp　運用年月日時分秒（YYYYMMDDhhmmssSSS）
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV011704SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDateTimeStamp)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 代理店コード → 量販店ＧＭＳ割引照会マップ.ＫＥＹ＿代理店コード
		parentMap.put("key_agnt_cd", bean[0].sendMessageString(KKW00101SFConst.AGNT_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// 運用年月日時分秒 → 量販店ＧＭＳ割引照会マップ.ＫＥＹ＿代理店コード
		parentMap.put("key_ymdhm", opeDateTimeStamp.substring(0, 12));

		outputMap.put("KKSV011704SC", parentMap);
		
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV011706SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 1)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		if (JKKStrConst.CD00682_002.equals(bean[0].sendMessageString("内販外販区分", X31CWebConst.DATABEAN_GET_VALUE))
				&& !"".equals(bean[0].sendMessageString("内販コード", X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// コード種別コード → コード名称管理一意照会マップ.ＫＥＹ＿コード種別コード
			parentMap.put("key_cd_sbt_cd", "CD00669");
			// 内販コード → コード名称管理一意照会マップ.ＫＥＹ＿コード区分
			parentMap.put("key_cd_div", bean[0].sendMessageString("内販コード", X31CWebConst.DATABEAN_GET_VALUE));
		}

		outputMap.put("KKSV011706SC", parentMap);
		
		return outputMap;
	}

	/**
	 *  スマートリンク端末情報一覧照会サービスコンポーネント上りマッピングをする
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV011705SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		
		if (bean == null)
		{
			return null;
		}
		
		if (bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// ＫＥＹ＿基準日
		parentMap.put("key_ymd",
				bean[0].sendMessageString(KKW00101SFConst.TABLET_FIRST_RSV_APLY_YMD, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV011705SC", parentMap);
						
		return outputMap;
	}

	/**
	 * スマートリンク端末情報一覧照会下りマッピング
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV011705SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		if (bean == null)
		{
			return null;
		}
		
		if (!outputMap.containsKey("KKSV011705SC"))
		{
			return null;
		}
		HashMap parentMap = (HashMap)outputMap.get("KKSV011705SC");
		if (parentMap == null)
		{
			return null;
		}

		/*
		 * スマートリンク端末情報一覧の情報をセット
		 */
		X31SDataBeanAccessArray tabletTnmtNmArray = bean[0].getDataBeanArray(KKW00101SFConst.TABLET_TNMT_NM_LIST);
		X31SDataBeanAccess tabletTnmtNmBean = tabletTnmtNmArray.getDataBean(0);
		tabletTnmtNmBean.sendMessage(KKW00101SFConst.TABLET_KIKI_MODEL_CD_LIST_17, X31CWebConst.DATABEAN_CLEAR);
		tabletTnmtNmBean.sendMessage(KKW00101SFConst.TABLET_NM_LIST_17, X31CWebConst.DATABEAN_CLEAR);
		tabletTnmtNmBean.sendMessage(KKW00101SFConst.CRADLE_KIKI_MODEL_CD_LIST_17, X31CWebConst.DATABEAN_CLEAR);

		JKKWebCommon.setTabletPullDownInfo(bean[0], parentMap);

		return bean;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV011707SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// サービス契約一覧照会＿サービス契約番号 → 同一回線保留サービス内容一覧照会SCマップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約一覧照会＿サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV011707SC", parentMap);
						
		return outputMap;
	}
}