/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0086_KKSV0086OPDBMapper
*	ソースファイル名：KKSV0086_KKSV0086OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年05月09日
*＜機能概要＞
*	BP（eo光ネット登録）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/05/09	FJ		新規作成
*   v4.00.00    2012/09/14  FJ) 谷口    【ANK-0546-00-00】宅内ＰＦ
*   v4.01.00    2012/11/21  FJ) 谷口    【IT1-2012-0002046】宅内ＰＦ（受付担当者欄追加）
*   v5.00.00    2013/03/06  FJ) 三浦    【ANK-1421-00-00】IP_STB
*   v52.00.00	2021/02/03	FJ) 西窪	【ANK-3987-00-00】Netflix導入対応（STEP2）
*   v52.00.01	2021/02/04	FJ) 西窪	【IT1-2021-0000010】ストリーミングメディアプレーヤー料金プランコード変更対応
**********************************************************************/
package eo.web.webview.mapping;


import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.NET_PRC_KNRN_KEY_PCRSCD;
import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.getNetSvcKeiPrcKnrnCd;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JKKStrConst;
import eo.common.util.JKKCommonUtil;
import eo.web.webview.KKW00101SF.KKW00101SFConst;
import eo.web.webview.common.JKKWebCommon;
import eo.web.webview.common.JKKKeiNewCmnLogicUtil;

/**
 * DataBean-BPマッピングをする。
 * @author 富士通
 * 
 */
public class KKSV0086_KKSV0086OPDBMapper
{
	/**
	 * コンストラクタ
	 */
	public KKSV0086_KKSV0086OPDBMapper()
	{
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV008601SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if(bean == null || bean.length != 1)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// ネット＿記事欄 → サービス契約＜eo光ネット＞登録マップ.業務連絡備考
		parentMap.put("work_rrk_biko", bean[0].sendMessageString("ネット＿記事欄", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV008601SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV008602SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if(bean == null || 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));

		// ＫＥＹ＿宅内機器型式コード
		parentMap.put("key_taknkiki_model_cd", 
				JKKWebCommon.getPullDownCode(bean[0], KKW00101SFConst.TABLET_TNMT_NM_LIST,
						KKW00101SFConst.TABLET_SELECT_CD_17, KKW00101SFConst.TABLET_KIKI_MODEL_CD_LIST_17));

		// ＫＥＹ＿割賦販売形態コード
		String tabletPaywayCd = JKKWebCommon.getPullDownCode(bean[0], KKW00101SFConst.TABLET_PAYWAY_LIST,
				KKW00101SFConst.SELECT_CD_59, KKW00101SFConst.CD_LIST_59);
		parentMap.put("key_kap_hambai_form_cd", JKKKeiNewCmnLogicUtil.getNetKapHambaiFormCd(tabletPaywayCd));

		outputMap.put("KKSV008602SC", parentMap);
						
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opeDate
	 * @param mansionMap
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV008603SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate, HashMap<String, Object> mansionMap)
	{
		
		if(bean == null || bean.length != 1)
		{
			return null;
		}

		//eo光スティックレンタルサービスに値が設定されていない場合、処理を終了する
		if(JKKCommonUtil.isNull(bean[0].sendMessageString(KKW00101SFConst.IP_STB_RENTAL_USE_CNT, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			return null;
		}

		// 申込形態コード
		String mskmFormCd = bean[0].sendMessageString(KKW00101SFConst.MSKM_FORM_CD, X31CWebConst.DATABEAN_GET_VALUE);
		// 電話申込の場合
		String jukyoType = bean[0].sendMessageString(KKW00101SFConst.JYUKYO_TYPE, X31CWebConst.DATABEAN_GET_VALUE);
		// 書面申込
		String mskmshoKind = bean[0].sendMessageString(KKW00101SFConst.MSKMSHO_KIND, X31CWebConst.DATABEAN_GET_VALUE);
		
		String mskmshoSbtCd = (JKKKeiNewCmnLogicUtil.MSKM_FORM_CD_TEL.equals(mskmFormCd)) ? jukyoType : mskmshoKind;
		//サービス契約(eo光ネット)料金関連コード取得
		HashMap prcKnrnMap = getNetSvcKeiPrcKnrnCd(bean[0], mskmshoSbtCd, mansionMap);

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// ＫＥＹ＿料金コースコード
		parentMap.put("key_pcrs_cd", (String)prcKnrnMap.get(NET_PRC_KNRN_KEY_PCRSCD));
		// ＫＥＹ＿機器提供サービスコード
		parentMap.put("key_kktk_svc_cd", JKKStrConst.KKTK_SVC_CD_IP_STB);
		// ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", opeDate);

		outputMap.put("KKSV008603SC", parentMap);
						
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opeDate
	 * @param mansionMap
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV008604SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if(bean == null || bean.length != 1)
		{
			return null;
		}
		
		//eo光スティックレンタルサービスに値が設定されていない場合、処理を終了する
		if(!bean[0].sendMessageBoolean(KKW00101SFConst.IP_STB_RENTAL, X31CWebConst.DATABEAN_GET_VALUE))
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		// ＫＥＹ＿料金コースコード
		// IT1-2021-0000010 MOD START
		// parentMap.put("key_pcrs_cd", JKKStrConst.CD00134_IP_STB);
		parentMap.put("key_pcrs_cd", JKKStrConst.CD00134_SMP);
		// ＫＥＹ＿料金コースコード
		// parentMap.put("key_pplan_cd", JKKStrConst.CD00565_IP_STB);
		parentMap.put("key_pplan_cd", JKKStrConst.CD00565_SMP);
		// IT1-2021-0000010 MOD END

		outputMap.put("KKSV008604SC", parentMap);
		
		return outputMap;
	}

	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param opeDate
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV008605SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate) 
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}

		//タブレット端末購入にチェックされていない場合、処理を終了する
		if(!bean[0].sendMessageBoolean(KKW00101SFConst.TABLET_BUY, X31CWebConst.DATABEAN_GET_VALUE))
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// タブレット＿受付担当取扱コード → 特記取扱コード情報取得マップ.ＫＥＹ＿代理店コード
		parentMap.put("key_agnt_cd", bean[0].sendMessageString("タブレット＿受付担当取扱コード", X31CWebConst.DATABEAN_GET_VALUE));

		// オンライン運用日付 → 特記取扱コード情報取得マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", opeDate);

		outputMap.put("KKSV008605SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV008606SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) 
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		//タブレット端末購入にチェックされていない場合、処理を終了する
		if(!bean[0].sendMessageBoolean(KKW00101SFConst.TABLET_BUY, X31CWebConst.DATABEAN_GET_VALUE))
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// タブレット＿端末購入受付担当者名 → 割賦契約登録マップ.端末購入受付担当者名
		parentMap.put("tnmt_buy_uk_tntsha_nm", bean[0].sendMessageString("タブレット＿端末購入受付担当者名", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV008606SC", parentMap);
						
		return outputMap;
	}
	
	// ANK-3987-00-00 ADD START
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：申込新規登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return マッピング結果
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV008607SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) 
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		//スティック型ＳＴＢレンタルにチェックされていない場合、処理を終了する
		if(!bean[0].sendMessageBoolean(KKW00101SFConst.IP_STB_RENTAL, X31CWebConst.DATABEAN_GET_VALUE))
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// ストリーミングメディアプレーヤー＿端末購入受付担当者名 → 端末購入通知書情報登録マップ.ストリーミングメディアプレーヤー＿端末購入受付担当者名
		parentMap.put("tnmt_buy_uk_tntsha_nm", bean[0].sendMessageString("ストリーミングメディアプレーヤー＿端末購入受付担当者名", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV008607SC", parentMap);
						
		return outputMap;
	}
	// ANK-3987-00-00 ADD END

}