/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0481_KKSV0481OPDBMapper
*	ソースファイル名：KKSV0481_KKSV0481OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年11月01日
*＜機能概要＞
*	BP（提供方式契約料金一覧照会サービス）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/11/01	FJ		新規作成
*   v5.00.00    2013/7/2     FJ）大山    IT1-2013-0001305
*   v73.00.00   2024/10/29  GDC)JN.Franco				【ANK-4493-00-00：【eo定期】 光配線マンションのコースアップ対応】
*
**********************************************************************/
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.JCRStrConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0481_KKSV0481OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0481_KKSV0481OPDBMapper(){
	}
	
	/** 料金コースコード:１Ｇ */
	private static final String PCRS_CD_1G = "04";
	
	/**  eo光ネット料金プラン体系識別コード:従量制 */
	private static final String JURYO_PLAN = "1";

	/** eo光ネット従量プラン申込可否:可 */
	private static final String MSKM_K  = "1";

//▼▼▼  IT1-2012-0002060 2012.10.03 H.TAKANO START ▼▼▼
	/** マンション料金識別コード:基本料金 */
	private static final String PRC_SKBT_CD  = "001";
//▲▲▲  IT1-2012-0002060 2012.10.03 H.TAKANO END   ▲▲▲
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：マンション契約情報照会画面
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV048101SC(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);
		// 回線使用契約番号（ネット）
		String work_kaisen_use_kei_no_net = bean[0].sendMessageString("回線使用契約番号（ネット）", X31CWebConst.DATABEAN_GET_VALUE);
		// 回線使用契約番号（ＴＶ）
		String work_kaisen_use_kei_no_tv = bean[0].sendMessageString("回線使用契約番号（ＴＶ）", X31CWebConst.DATABEAN_GET_VALUE);

		if (work_kaisen_use_kei_no_net != null && !"".equals(work_kaisen_use_kei_no_net)) {
			// 回線使用契約番号（ネット） → 提供方式契約料金一覧照会.ＫＥＹ＿回線使用契約番号
			parentMap.put("kaisen_use_kei_no", work_kaisen_use_kei_no_net);
		}
		else if (work_kaisen_use_kei_no_tv != null && !"".equals(work_kaisen_use_kei_no_tv)) {
			// 回線使用契約番号（ＴＶ） → 提供方式契約料金一覧照会.ＫＥＹ＿回線使用契約番号
			parentMap.put("kaisen_use_kei_no", work_kaisen_use_kei_no_tv);
		}
		else {
			// "" → 提供方式契約料金一覧照会.ＫＥＹ＿回線使用契約番号
			parentMap.put("kaisen_use_kei_no", "");
		}
		
		outputMap.put("KKSV048101SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：マンション契約情報照会画面
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV048102SC(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);

		// 回線使用契約番号（ネット）
		String work_kaisen_use_kei_no_net = bean[0].sendMessageString("回線使用契約番号（ネット）", X31CWebConst.DATABEAN_GET_VALUE);
		// 回線使用契約番号（ＴＶ）
		String work_kaisen_use_kei_no_tv = bean[0].sendMessageString("回線使用契約番号（ＴＶ）", X31CWebConst.DATABEAN_GET_VALUE);

		if (work_kaisen_use_kei_no_net != null && !"".equals(work_kaisen_use_kei_no_net)) {
			// 回線使用契約番号（ネット） → 提供方式契約一覧照会.ＫＥＹ＿回線使用契約番号
			parentMap.put("key_kaisen_use_kei_no", work_kaisen_use_kei_no_net);
		}
		else if (work_kaisen_use_kei_no_tv != null && !"".equals(work_kaisen_use_kei_no_tv)) {
			// 回線使用契約番号（ＴＶ） → 提供方式契約一覧照会.ＫＥＹ＿回線使用契約番号
			parentMap.put("key_kaisen_use_kei_no", work_kaisen_use_kei_no_tv);
		}
		else {
			// "" → 提供方式契約料金一覧照会.ＫＥＹ＿回線使用契約番号
			parentMap.put("key_kaisen_use_kei_no", "");
		}
						
		outputMap.put("KKSV048102SC", parentMap);
		
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：マンション契約情報照会画面
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV048101SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV048101SC")){
			parentMap = (HashMap)outputMap.get("KKSV048101SC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listKKSV048101SC_tk_hoshiki_kei_list_EKK1921B001CBSMsg1List = bean[0].getDataBeanArray("提供方式契約一覧");
		childList = null;
		if(listKKSV048101SC_tk_hoshiki_kei_list_EKK1921B001CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK1921B001CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK1921B001CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listKKSV048101SC_tk_hoshiki_kei_list_EKK1921B001CBSMsg1List.getCount() -1 >= i){
					subbean = listKKSV048101SC_tk_hoshiki_kei_list_EKK1921B001CBSMsg1List.getDataBean(i);
				}else{
					subbean = listKKSV048101SC_tk_hoshiki_kei_list_EKK1921B001CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}

//▼▼▼  IT1-2012-0002060 2012.10.03 H.TAKANO START ▼▼▼
				String isMansPrcSkbtCd = null;
				isMansPrcSkbtCd = (String)childMap.get("mans_prc_skbt_cd");
				
				if (!isMansPrcSkbtCd.equals(PRC_SKBT_CD)) {
					listKKSV048101SC_tk_hoshiki_kei_list_EKK1921B001CBSMsg1List.removeDataBean(i);
					continue;
				}
//▲▲▲  IT1-2012-0002060 2012.10.03 H.TAKANO END   ▲▲▲
							
				// 提供方式契約一覧.提供方式契約情報＿提供方式契約番号 ← 提供方式契約料金一覧照会.提供方式契約料金一覧照会明細.提供方式契約番号
				if (childMap != null) {
					subbean.sendMessageString("提供方式契約情報＿提供方式契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tk_hoshiki_kei_no"));
				} else {
					subbean.sendMessageString("提供方式契約情報＿提供方式契約番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 提供方式契約一覧.提供方式契約情報＿マンション料金識別コード ← 提供方式契約料金一覧照会.提供方式契約料金一覧照会明細.マンション料金識別コード
				if (childMap != null) {
					subbean.sendMessageString("提供方式契約情報＿マンション料金識別コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mans_prc_skbt_cd"));
				} else {
					subbean.sendMessageString("提供方式契約情報＿マンション料金識別コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 提供方式契約一覧.提供方式契約情報＿マンションプラン名 ← 提供方式契約料金一覧照会.提供方式契約料金一覧照会明細.マンションプラン名
				if (childMap != null) {
				// 2013/7/2 IT1-2013-0001305 MOD START
					// 提供方式コードを後ろに設定する。
//					subbean.sendMessageString("提供方式契約情報＿マンションプラン名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mansion_plan_nm"));
					subbean.sendMessageString("提供方式契約情報＿マンションプラン名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mansion_plan_nm") + "／" + (String)childMap.get("tk_hoshiki_cd_nm"));
					// 2013/7/2 IT1-2013-0001305 MOD END
				} else {
					subbean.sendMessageString("提供方式契約情報＿マンションプラン名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 提供方式契約一覧.提供方式契約情報＿月額料金（親） ← 提供方式契約料金一覧照会.提供方式契約料金一覧照会明細.オーナー契約請求金額
				if (childMap != null) {
					subbean.sendMessageString("提供方式契約情報＿月額料金（親）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ownr_kei_seiky_amnt"));
				} else {
					subbean.sendMessageString("提供方式契約情報＿月額料金（親）", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				if (childMap != null) {
					
					// 判断に使用するコードを取得
					String isPcrsSpeedCd = null;
					String isPplantikiCd = null;
					String isJuryoPlanCd = null;
					// ANK-4493-00-00 ADD START
					String isCourseChg = null;
					// ANK-4493-00-00 ADD END
					isPcrsSpeedCd = (String)childMap.get("pcrs_speed_cd");
					isPplantikiCd = (String)childMap.get("eohnt_pplan_tiki_skcd");
					isJuryoPlanCd = (String)childMap.get("eohnt_juryo_plan_mkm_kh");
					// ANK-4493-00-00 ADD START
					isCourseChg = (String)childMap.get("tk_hoshiki_pattern_cd");
					// ANK-4493-00-00 ADD END
					// 料金コースコードが【04:１Ｇ】の場合加入契約請求金額を設定
					// 提供方式契約一覧.提供方式契約情報＿月額料金（子）（１Ｇ） ← 提供方式契約料金一覧照会.提供方式契約料金一覧照会明細.加入契約請求金額
					if ( isPcrsSpeedCd.equals(PCRS_CD_1G) ) {
						subbean.sendMessageString("提供方式契約情報＿月額料金（子）（１Ｇ）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kanyu_kei_seiky_amnt"));

					// eo光ネット料金プラン体系識別コードの値が「従量制」であるか
					} else if( isPplantikiCd.equals(JURYO_PLAN )){

						// eo光ネット従量プラン申込可否の値が「可」であるか
						if ( isJuryoPlanCd.equals(MSKM_K) ){
									subbean.sendMessageString("提供方式契約情報＿月額料金（子）（１００Ｍライト）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kanyu_kei_seiky_amnt"));
						}
						
					// ANK-4493-00-00 ADD START	
						// 上記以外の場合「月額料金（子）（１０Ｇ））」に加入契約請求金額を設定する	
					} else if(JCRStrConst.TK_HOSHIKI_PATTERN_CD_HHS_CSCHPSB.equals(isCourseChg) &&
							JCRStrConst.PCRS_SPEED_CD_10G.equals(isPcrsSpeedCd)){
						subbean.sendMessageString("提供方式契約情報＿月額料金（子）（１０Ｇ）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kanyu_kei_seiky_amnt"));
					}
					// ANK-4493-00-00 ADD END
					// 上記以外の場合「月額料金（子）（１００Ｍ）」に加入契約請求金額を設定する
					else {
						subbean.sendMessageString("提供方式契約情報＿月額料金（子）（１００Ｍ）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kanyu_kei_seiky_amnt"));
					}
				} else{
						subbean.sendMessageString("提供方式契約情報＿月額料金（子）（１００Ｍ）", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
						
				// 2013/7/2 IT1-2013-0001305 ADD START
				// 提供方式契約一覧.提供方式契約情報＿加入契約請求金額 ← 提供方式契約料金一覧照会.提供方式契約料金一覧照会明細.加入契約請求金額
				if (childMap != null) {
					subbean.sendMessageString("提供方式契約情報＿加入契約請求金額", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kanyu_kei_seiky_amnt"));
				} else {
					subbean.sendMessageString("提供方式契約情報＿加入契約請求金額", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 提供方式契約一覧.提供方式契約情報＿提供方式 ← 提供方式契約料金一覧照会.提供方式契約料金一覧照会明細.提供方式コード名称
				if (childMap != null) {
					subbean.sendMessageString("提供方式契約情報＿提供方式", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tk_hoshiki_cd_nm"));
				} else {
					subbean.sendMessageString("提供方式契約情報＿提供方式", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 提供方式契約一覧.提供方式契約情報＿加入契約支払方式コード ← 提供方式契約料金一覧照会.提供方式契約料金一覧照会明細.加入契約支払方式コード
				if (childMap != null) {
					subbean.sendMessageString("提供方式契約情報＿加入契約支払方式コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kanyu_kei_pay_hoshiki_cd"));
				} else {
					subbean.sendMessageString("提供方式契約情報＿加入契約支払方式コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 提供方式契約一覧.提供方式契約情報＿総戸数 ← 提供方式契約料金一覧照会.提供方式契約料金一覧照会明細.総戸数
				if (childMap != null) {
					subbean.sendMessageString("提供方式契約情報＿総戸数", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ttl_kosu"));
				} else {
					subbean.sendMessageString("提供方式契約情報＿総戸数", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 2013/7/2 IT1-2013-0001305 ADD END
				// ANK-4493-00-00 ADD START
				if (childMap != null) {
					subbean.sendMessageString("提供方式契約情報＿提供方式パターンコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tk_hoshiki_pattern_cd"));
				} else {
					subbean.sendMessageString("提供方式契約情報＿提供方式パターンコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// ANK-4493-00-00 ADD END
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：マンション契約情報照会画面
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV048102SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV048102SC")){
			parentMap = (HashMap)outputMap.get("KKSV048102SC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listKKSV048102SC_eohnt_svs_tei_inf_list_EKK0891B002CBSMsg1List = bean[0].getDataBeanArray("光ネットサービス提供情報一覧");
		childList = null;
		if(listKKSV048102SC_eohnt_svs_tei_inf_list_EKK0891B002CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0891B002CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK0891B002CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listKKSV048102SC_eohnt_svs_tei_inf_list_EKK0891B002CBSMsg1List.getCount() -1 >= i){
					subbean = listKKSV048102SC_eohnt_svs_tei_inf_list_EKK0891B002CBSMsg1List.getDataBean(i);
				}else{
					subbean = listKKSV048102SC_eohnt_svs_tei_inf_list_EKK0891B002CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// 光ネットサービス提供情報一覧.光ネットサービス提供情報＿提供方式 ← 提供方式契約一覧照会.提供方式契約一覧照会明細.提供方式コード
				if (childMap != null) {
					subbean.sendMessageString("光ネットサービス提供情報＿提供方式", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tk_hoshiki_cd"));
				} else {
					subbean.sendMessageString("光ネットサービス提供情報＿提供方式", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 光ネットサービス提供情報一覧.光ネットサービス提供情報＿従量制申込可否 ← 提供方式契約一覧照会.提供方式契約一覧照会明細.従量制申込可否
				if (childMap != null) {
					subbean.sendMessageString("光ネットサービス提供情報＿従量制申込可否", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("juryo_plan_mkm_nm"));
				} else {
					subbean.sendMessageString("光ネットサービス提供情報＿従量制申込可否", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 光ネットサービス提供情報一覧.光ネットサービス提供情報＿提供料金種別 ← 提供方式契約一覧照会.提供方式契約一覧照会明細.提供料金種別コード
				if (childMap != null) {
					subbean.sendMessageString("光ネットサービス提供情報＿提供料金種別", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tk_prc_sbt_cd"));
				} else {
					subbean.sendMessageString("光ネットサービス提供情報＿提供料金種別", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 光ネットサービス提供情報一覧.光ネットサービス提供情報＿アクセス回線 ← 提供方式契約一覧照会.提供方式契約一覧照会明細.アクセス回線速度コード
				if (childMap != null) {
					subbean.sendMessageString("光ネットサービス提供情報＿アクセス回線", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("accss_kisn_speed_cd"));
				} else {
					subbean.sendMessageString("光ネットサービス提供情報＿アクセス回線", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// ANK-4493-00-00 ADD START
				if (childMap != null) {
					if(((String)childMap.get("tk_hoshiki_pattern_cd")).equals("53")){
						subbean.sendMessageString("光ネットサービス提供情報＿光配線全戸コース選択可", X31CWebConst.DATABEAN_SET_VALUE, "可");
					}
					else{
						subbean.sendMessageString("光ネットサービス提供情報＿光配線全戸コース選択可", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
				} else {
					subbean.sendMessageString("光ネットサービス提供情報＿光配線全戸コース選択可", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// ANK-4493-00-00 ADD END
			}
		}


		return bean;
	}


}