/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKSV0756_KKSV0756OPDBMapper
*   ソースファイル名：KKSV0756_KKSV0756OPDBMapper.java
*   作成者          ：FJ）馬場
*   日付            ：2013年05月22日
*＜機能概要＞
*   BP（オプションチャンネル課金開始日変更初期表示）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v5.00.00    2013/05/22   FJ）馬場    新規作成
*
**********************************************************************/
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.util.JPCEditString;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0756_KKSV0756OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0756_KKSV0756OPDBMapper(){
	}
	
	/** オプションチャンネル課金開始日数 */
	private static final String KK_OPCH_CHRG_STA_DAY = "KK_OPCH_CHRG_STA_DAY";
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：オプションチャンネル課金開始日変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV075601CC(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_op_svc_kei_no", bean[0].sendMessageString("オプションサービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 基準日 → オプションチャンネル課金開始日変更初期表示情報取得マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約番号 → オプションチャンネル課金開始日変更初期表示情報取得マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV075601CC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：オプションチャンネル課金開始日変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setJKKGetWorkParamCC(X31SDataBeanAccess[] bean, HashMap outputMap) 
	{
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}
		
		
		String[] inParamList = { KK_OPCH_CHRG_STA_DAY };
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		ArrayList<HashMap<String, Object>> inParam = new ArrayList<HashMap<String, Object>>();
		
		HashMap<String, Object> inMap = null;
		
		for (int i = 0; i < inParamList.length; i++)
		{
			inMap = new HashMap<String, Object>();
			
			inMap.put(inParamList[i], inParamList[i]);
			
			inParam.add(inMap);
		}
		
		parentMap.put("work_param_id_list", inParam);
		
		outputMap.put("JKKGetWorkParamCC", parentMap);
		
		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：オプションチャンネル課金開始日変更
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV075601CC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV075601CC")){
			parentMap = (HashMap)outputMap.get("KKSV075601CC");
		}

		// チャンネル名 ← オプションチャンネル課金開始日変更初期表示情報取得マップ.オプションサービスコード名称
		bean[0].sendMessageString("チャンネル名", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("op_svc_cd_nm"));
		// 赤Ｂ−ＣＡＳ番号 ← オプションチャンネル課金開始日変更初期表示情報取得マップ.赤B-CAS番号
		bean[0].sendMessageString("赤Ｂ−ＣＡＳ番号", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("red_bcas_no"));
		// 利用開始日 ← オプションチャンネル課金開始日変更初期表示情報取得マップ.サービス開始年月日
		bean[0].sendMessageString("利用開始日", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("svc_staymd"));
		// 課金開始日（年） ← オプションチャンネル課金開始日変更初期表示情報取得マップ.サービス課金開始年月日
		bean[0].sendMessageString("課金開始日（年）", X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toYearFromYmd((String)parentMap.get("svc_chrg_staymd")));
		// 課金開始日（月） ← オプションチャンネル課金開始日変更初期表示情報取得マップ.サービス課金開始年月日
		bean[0].sendMessageString("課金開始日（月）", X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toMonthFromYmd((String)parentMap.get("svc_chrg_staymd")));
		// 課金開始日（日） ← オプションチャンネル課金開始日変更初期表示情報取得マップ.サービス課金開始年月日
		bean[0].sendMessageString("課金開始日（日）", X31CWebConst.DATABEAN_SET_VALUE, JPCEditString.toDayFromYmd((String)parentMap.get("svc_chrg_staymd")));
		// 課金開始年月日 ← オプションチャンネル課金開始日変更初期表示情報取得マップ.サービス課金開始年月日
		bean[0].sendMessageString("課金開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("svc_chrg_staymd"));
		// 変更前課金開始年月日 ← オプションチャンネル課金開始日変更初期表示情報取得マップ.サービス課金開始年月日
		bean[0].sendMessageString("変更前課金開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("svc_chrg_staymd"));
		// 利用終了日 ← オプションチャンネル課金開始日変更初期表示情報取得マップ.予約適用年月日
		bean[0].sendMessageString("利用終了日", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("rsv_aply_ymd"));
		// 最終更新年月日時分秒 ← オプションチャンネル課金開始日変更初期表示情報取得マップ.最終更新年月日時分秒
		bean[0].sendMessageString("最終更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("last_upd_dtm"));

		ArrayList childList = null;
		
		X31SDataBeanAccessArray settizumi_stb_list = bean[0].getDataBeanArray("設置済ＳＴＢリスト");
		settizumi_stb_list.clearArray();
		X31SDataBeanAccess subbean = null;
		
		if(parentMap.containsKey("EKK0161B007CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0161B007CBSMsg1List");
			if(0 != childList.size())
			{
				HashMap childMap = (HashMap)childList.get(0);
				subbean = settizumi_stb_list.addDataBean();
				
				// 設置済ＳＴＢリスト.ＳＴＢ連番 ← "STB1"
				subbean.sendMessageString("ＳＴＢ連番", X31CWebConst.DATABEAN_SET_VALUE, "STB1");
				// 設置済ＳＴＢリスト.宅内機器型式 ← オプションチャンネル課金開始日変更初期表示情報取得マップ.設置済ＳＴＢ一覧照会明細.宅内機器型式コード
				subbean.sendMessageString("宅内機器型式", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("taknkiki_model_cd"));
				// 設置済ＳＴＢリスト.コース ← オプションチャンネル課金開始日変更初期表示情報取得マップ.設置済ＳＴＢ一覧照会明細.料金プランコード名称
				subbean.sendMessageString("コース", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd_nm"));
				// 設置済ＳＴＢリスト.ＳＴＢ−ＩＤ ← オプションチャンネル課金開始日変更初期表示情報取得マップ.設置済ＳＴＢ一覧照会明細.ＳＴＢＩＤ
				subbean.sendMessageString("ＳＴＢ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("stbid"));
				// 設置済ＳＴＢリスト.ＢＣＡＳ−ＩＤ ← オプションチャンネル課金開始日変更初期表示情報取得マップ.設置済ＳＴＢ一覧照会明細.機器製造番号＿ＢＣＡＳ
				subbean.sendMessageString("ＢＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kiki_seizo_no_bcas"));
				// 設置済ＳＴＢリスト.ＣＣＡＳ−ＩＤ ← オプションチャンネル課金開始日変更初期表示情報取得マップ.設置済ＳＴＢ一覧照会明細.機器製造番号＿ＣＣＡＳ
				subbean.sendMessageString("ＣＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kiki_seizo_no_ccas"));
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：オプションチャンネル課金開始日変更
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getJKKGetWorkParamCC(X31SDataBeanAccess[] bean, HashMap outputMap){
		HashMap parentMap = null;
		if(outputMap.containsKey("JKKGetWorkParamCC")){
			parentMap = (HashMap)outputMap.get("JKKGetWorkParamCC");
		}
		
		HashMap<String, Object> workParamSetValue = (HashMap<String, Object>)parentMap.get("work_param_sette_value_map");
		
		if(workParamSetValue != null)
		{
			// オプションチャンネル課金開始日数
			if(workParamSetValue.containsKey(KK_OPCH_CHRG_STA_DAY))
			{
				// オプションチャンネル課金開始日数 ← 業務パラメータ取得部品マップ.業務パラメータ設定値
				bean[0].sendMessageString("オプションチャンネル課金開始日数", X31CWebConst.DATABEAN_SET_VALUE, (String)workParamSetValue.get(KK_OPCH_CHRG_STA_DAY));
			}
		}
		
		return bean;
	}
}
