/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0511_KKSV0511OPDBMapper
*	ソースファイル名：KKSV0511_KKSV0511OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2012年02月29日
*＜機能概要＞
*	BP（オプションチャンネル受付履歴一覧照会_検索）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/02/29	Fujitsu		新規作成
*	v1.00.01	2013/05/30	FJ)古田		【IT2-2013-0000463】
*   v6.00.00    2014/01/10   FJ）中井   【OM-2013-0000451】対応
*   v7.00.00    2014/01/27   FJ）中井   【OM-2013-0000451】（２月案件）対応
*
**********************************************************************/
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.web.webview.KKW10401SF.KKW10401SFConst;
import eo.web.webview.common.JCCWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0511_KKSV0511OPDBMapper {
	
	/** ラジオボタン選択値１ */
	private static final String RADIO_CHOICE_1 = "1";
	/** ラジオボタン選択値２ */
	private static final String RADIO_CHOICE_2 = "2";
	/** ラジオボタン選択値３ */
	private static final String RADIO_CHOICE_3 = "3";
	/** ラジオボタン申込選択設定値 */
	private static final String RADIO_MSKM = "00026";
	/** ラジオボタン解約選択設定値 */
	private static final String RADIO_DSL = "00005";
	/* ++++++++++ v1.00.01 変更開始 ++++++++++ */
	/** ラジオボタン解約選択（キャンセル） */
	private static final String RADIO_DSL_CANCL = "00006";
	/* ++++++++++ v1.00.01 変更完了 ++++++++++ */
	/** ラジオボタン自動選択設定値 */
	private static final String RADIO_AUTO = "1";
	/** ラジオボタン手動選択設定値 */
	private static final String RADIO_MANUAL = "2";
	
	/**
	 * コンストラクタ
	 */
	public KKSV0511_KKSV0511OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：オプションチャンネル受付履歴一覧照会画面
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV051101CC(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("search_type", String.valueOf("1"));
		parentMap.put("display_num", JCCWebCommon.getSearchConst("KKW10401_ROW_PER_PAGE"));
		parentMap.put("max_search_num", JCCWebCommon.getSearchConst("KKW10401_MAX_SHOW_CNT"));
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 申込受付年月日（ＦＲＯＭ）編集
		StringBuilder sb = new StringBuilder();
		sb.append(bean[0].sendMessageString("退避用用申込受付年月日（ｆｒｏｍ）（年）", X31CWebConst.DATABEAN_GET_VALUE))
			.append(bean[0].sendMessageString("退避用申込受付年月日（ｆｒｏｍ）（月）", X31CWebConst.DATABEAN_GET_VALUE))
			.append(bean[0].sendMessageString("退避用申込受付年月日（ｆｒｏｍ）（日）", X31CWebConst.DATABEAN_GET_VALUE));
		// 退避用用申込受付年月日（ｆｒｏｍ） → オプションチャンネル受付履歴一覧照会マップ.ＫＥＹ＿申込受付年月日（ＦＲＯＭ）
		parentMap.put("key_mskm_uk_ymd_from", sb.toString());
		
		// 申込受付年月日（ＴＯ）編集
		sb = new StringBuilder();
		sb.append(bean[0].sendMessageString("退避用申込受付年月日（ｔｏ）（年）", X31CWebConst.DATABEAN_GET_VALUE))
			.append(bean[0].sendMessageString("退避用申込受付年月日（ｔｏ）（月）", X31CWebConst.DATABEAN_GET_VALUE))
			.append(bean[0].sendMessageString("退避用申込受付年月日（ｔｏ）（日）", X31CWebConst.DATABEAN_GET_VALUE));
		// 退避用申込受付年月日（ｔｏ） → オプションチャンネル受付履歴一覧照会マップ.ＫＥＹ＿申込受付年月日（ＴＯ）
		parentMap.put("key_mskm_uk_ymd_to", sb.toString());
		
		// 退避用申込チャネルコード → オプションチャンネル受付履歴一覧照会マップ.ＫＥＹ＿申込形態コード
		parentMap.put("key_mskm_form_cd", bean[0].sendMessageString("退避用申込チャネルコード", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 退避用受付区分の値によって、ＫＥＹ＿申込種別コードの値を設定する
		String str = bean[0].sendMessageString("退避用受付区分", X31CWebConst.DATABEAN_GET_VALUE);
		/* ++++++++++ v6.00.00 修正開始 ++++++++++ */
		if(RADIO_CHOICE_1.equals(str))
		{
//			parentMap.put("key_mskm_sbt_cd", RADIO_MSKM);
			parentMap.put("key_mskm_sbt_cd", RADIO_CHOICE_1);
		}
		else if(RADIO_CHOICE_2.equals(str))
		{
			/* ++++++++++ v1.00.01 変更開始 ++++++++++ */
//			parentMap.put("key_mskm_sbt_cd", RADIO_DSL);
//			parentMap.put("key_mskm_sbt_cd", RADIO_DSL + "," + RADIO_DSL_CANCL);
			parentMap.put("key_mskm_sbt_cd", RADIO_CHOICE_2);
			/* ++++++++++ v1.00.01 変更完了 ++++++++++ */
		}
		else if(RADIO_CHOICE_3.equals(str))
		{
			parentMap.put("key_mskm_sbt_cd", "");
		}
		/* ++++++++++ v6.00.00 修正終了 ++++++++++ */
		
		// 退避用処理方法の値によって、ＫＥＹ＿オプションチャンネルオペレーション方法コードの値を設定する
		str = bean[0].sendMessageString("退避用処理方法", X31CWebConst.DATABEAN_GET_VALUE);
		if(RADIO_CHOICE_1.equals(str))
		{
			parentMap.put("key_op_channel_oprtn_way_cd", RADIO_AUTO);
		}
		else if(RADIO_CHOICE_2.equals(str))
		{
			parentMap.put("key_op_channel_oprtn_way_cd", RADIO_MANUAL);
		}
		else if(RADIO_CHOICE_3.equals(str))
		{
			parentMap.put("key_op_channel_oprtn_way_cd", "");
		}
		
		// 退避用サービス契約番号 → オプションチャンネル受付履歴一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("退避用サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
//		// 退避用反映区分１ → オプションチャンネル受付履歴一覧照会マップ.ＫＥＹ＿予約適用コード
//		parentMap.put("key_rsv_aply_cd", bean[0].sendMessageString("退避用反映区分１", X31CWebConst.DATABEAN_GET_VALUE));
		String haneiKbn = "";
		/* ++++++++++ v6.00.00 修正開始 ++++++++++ */
		haneiKbn = bean[0].sendMessageString(KKW10401SFConst.SAVE_HANEI_DIV, X31CWebConst.DATABEAN_GET_VALUE);
//		boolean hanei1 = bean[0].sendMessageBoolean("退避用反映区分１", X31CWebConst.DATABEAN_GET_VALUE);
//		if(hanei1 == true)
//		{
//			haneiKbn =  "'1'";
//		}
//		boolean hanei2 = bean[0].sendMessageBoolean("退避用反映区分２", X31CWebConst.DATABEAN_GET_VALUE);
//		if(hanei2 == true)
//		{
//			if(!"".equals(haneiKbn))
//			{
//				haneiKbn =  haneiKbn.concat(",'2'");
//			}
//			else
//			{
//				haneiKbn =  haneiKbn.concat("'2'");
//			}
//			
//		}
//		boolean hanei3 = bean[0].sendMessageBoolean("退避用反映区分３", X31CWebConst.DATABEAN_GET_VALUE);
//		if(hanei3 == true)
//		{
//			if(!"".equals(haneiKbn))
//			{
//				haneiKbn =  haneiKbn.concat(",'3'");
//			}
//			else
//			{
//				haneiKbn =  haneiKbn.concat("'3'");
//			}
//		}
		// 退避用反映区分 → オプションチャンネル受付履歴一覧照会マップ.ＫＥＹ＿反映区分
		parentMap.put("key_hanei_kbn", haneiKbn);
		
		// 退避用オプションチャンネルコード → オプションチャンネル受付履歴一覧照会マップ.ＫＥＹ＿オプションサービスコード
		parentMap.put("key_op_svc_cd", bean[0].sendMessageString("退避用オプションチャンネルコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 退避用ＳＹＳＩＤ → オプションチャンネル受付履歴一覧照会マップ.ＫＥＹ＿SYSID
		parentMap.put("key_sysid", bean[0].sendMessageString("退避用ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
//		// 退避用電話番号 → オプションチャンネル受付履歴一覧照会マップ.ＫＥＹ＿契約者電話番号
//		parentMap.put("key_keisha_telno", bean[0].sendMessageString("退避用電話番号", X31CWebConst.DATABEAN_GET_VALUE));
//		// 退避用お客様名 → オプションチャンネル受付履歴一覧照会マップ.ＫＥＹ＿お客様名
//		parentMap.put("key_cust_nm", bean[0].sendMessageString("退避用お客様名", X31CWebConst.DATABEAN_GET_VALUE));
//		// 退避用お客様名カナ → オプションチャンネル受付履歴一覧照会マップ.ＫＥＹ＿お客様カナ名
//		parentMap.put("key_cust_kana", bean[0].sendMessageString("退避用お客様名カナ", X31CWebConst.DATABEAN_GET_VALUE));
		/* ++++++++++ v6.00.00 修正終了 ++++++++++ */

		outputMap.put("KKSV051101CC", parentMap);
						
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：オプションチャンネル受付履歴一覧照会画面
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV051101CC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV051101CC")){
			parentMap = (HashMap)outputMap.get("KKSV051101CC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listKKSV051101CC_list_EKK0351B006CBSMsg1List = bean[0].getDataBeanArray("明細");
		childList = null;
		if(listKKSV051101CC_list_EKK0351B006CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0351B006CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK0351B006CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listKKSV051101CC_list_EKK0351B006CBSMsg1List.getCount() -1 >= i){
					subbean = listKKSV051101CC_list_EKK0351B006CBSMsg1List.getDataBean(i);
				}else{
					subbean = listKKSV051101CC_list_EKK0351B006CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// 明細.申込受付年月日時分秒 ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.申込受付年月日時分秒
				if (childMap != null) {
					subbean.sendMessageString("申込受付年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mskm_uk_dtm"));
				} else {
					subbean.sendMessageString("申込受付年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.オプションチャンネル ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.オプションサービス名
				if (childMap != null) {
					subbean.sendMessageString("オプションチャンネル", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_nm"));
				} else {
					subbean.sendMessageString("オプションチャンネル", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.受付区分 ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.受付区分
				if (childMap != null) {
					subbean.sendMessageString("受付区分", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("uk_div"));
				} else {
					subbean.sendMessageString("受付区分", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.受付区分コード ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.申込種別コード
				if (childMap != null) {
					subbean.sendMessageString("受付区分コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mskm_sbt_cd"));
				} else {
					subbean.sendMessageString("受付区分コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.処理方法 ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.処理方法
				if (childMap != null) {
					subbean.sendMessageString("処理方法", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tran_way"));
				} else {
					subbean.sendMessageString("処理方法", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.処理方法コード ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.オプションチャンネルオペレーション方法コード
				if (childMap != null) {
					subbean.sendMessageString("処理方法コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_channel_oprtn_way_cd"));
				} else {
					subbean.sendMessageString("処理方法コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.反映区分 ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.反映区分
				if (childMap != null) {
					subbean.sendMessageString("反映区分", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("hanei_div"));
				} else {
					subbean.sendMessageString("反映区分", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.反映区分コード ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.オプションサービス契約ステータス
				if (childMap != null) {
					subbean.sendMessageString("反映区分コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_kei_stat"));
				} else {
					subbean.sendMessageString("反映区分コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.サービス開始年月日 ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.サービス開始年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_staymd"));
				} else {
					subbean.sendMessageString("サービス開始年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.サービス終了年月日 ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.サービス終了年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_endymd"));
				} else {
					subbean.sendMessageString("サービス終了年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.ＳＹＳＩＤ ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.SYSID
				if (childMap != null) {
					subbean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sysid"));
				} else {
					subbean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.サービス契約番号 ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.サービス契約番号
				if (childMap != null) {
					subbean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_no"));
				} else {
					subbean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.お客様名 ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.お客様名
				if (childMap != null) {
					subbean.sendMessageString("お客様名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cust_nm"));
				} else {
					subbean.sendMessageString("お客様名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.電話番号 ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.契約者電話番号
				if (childMap != null) {
					subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_telno"));
				} else {
					subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.ＳＴＢ−ＩＤ ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.STBID
				if (childMap != null) {
					subbean.sendMessageString("ＳＴＢ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("stb_id"));
				} else {
					subbean.sendMessageString("ＳＴＢ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.機器製造番号 ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.機器製造番号（ＳＴＢ）
				if (childMap != null) {
					subbean.sendMessageString("機器製造番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kiki_seizo_no_stb"));
				} else {
					subbean.sendMessageString("機器製造番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.ＢＣＡＳ−ＩＤ ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.機器製造番号（Ｂ−ＣＡＳ）
				if (childMap != null) {
					subbean.sendMessageString("ＢＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kiki_seizo_no_bcas"));
				} else {
					subbean.sendMessageString("ＢＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.ＣＣＡＳ−ＩＤ ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.機器製造番号（Ｃ−ＣＡＳ）
				if (childMap != null) {
					subbean.sendMessageString("ＣＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kiki_seizo_no_ccas"));
				} else {
					subbean.sendMessageString("ＣＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 明細.オプションサービス契約番号 ← オプションチャンネル受付履歴一覧照会マップ.オプションチャンネル受付履歴一覧照会明細.オプションサービス契約番号
				if (childMap != null) {
					subbean.sendMessageString("オプションサービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_kei_no"));
				} else {
					subbean.sendMessageString("オプションサービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				// 追加項目
				// 明細.背景色 ← 偶数はodd、奇数はeven
				if(i % 2 == 0)
				{
					subbean.sendMessageString("背景色", X31CWebConst.DATABEAN_SET_VALUE, "odd");
				}
				else
				{
					subbean.sendMessageString("背景色", X31CWebConst.DATABEAN_SET_VALUE, "even");
				}
				
				/* ++++++++++ v7.00.00 修正開始 ++++++++++ */
				//一覧表示未反映と予約未反映とが異なるケースが発生するようになったため
				//異動予約のステータスが"00"の場合未反映として扱うためのフラグとして反映区分１をtrueにする（反映区分１は反映区分がラジオボタンだったとき使用していた項目の流用）
				if (childMap != null && "00".equals(childMap.get("ido_rsv_stat_cd"))) {
					subbean.sendMessageBoolean(KKW10401SFConst.KN_HANEI_DIV_1, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
				} else {
					subbean.sendMessageBoolean(KKW10401SFConst.KN_HANEI_DIV_1, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
				}
				/* ++++++++++ v7.00.00 修正終了 ++++++++++ */
			}
		}


		return bean;
	}


}
