/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CNSV0056_CNSV0056OPDBMapper
*	ソースファイル名：CNSV0056_CNSV0056OPDBMapper.java
*	作成者			：FJ
*	日付			：2021年07月12日
*＜機能概要＞
*	コンテンツ一時申込登録画面へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v54.00.00	2021/07/12	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.constant.JKKStrConst;
import eo.common.util.JZMAdOutputEdit;
import eo.web.webview.CKW02505SF.CKW02505SFConst;
import eo.web.webview.CNW01901SF.CNW01901SFConst;
import eo.web.webview.KKW00121SF.KKW00121SFConst;
import eo.web.webview.ZMW10901SF.ZMW10901SFConst;
import eo.web.webview.common.JCNWebConst;
import eo.web.webview.common.JKKKeiNewCmnLogicUtil;
import eo.web.webview.common.JKKWebCommon;
import eo.web.webview.common.JZMWebCommon;


/**
 * DataBean-BPマッピングをする。
 * 
 * <br>
 * @author 富士通
 */
public class CNSV0056_CNSV0056OPDBMapper
{

	/** コンテンツ申込情報状態コード 01：受付済*/
	private static final String CONT_MKM_INF_STCD_01 = "01";
	
	/** コンテンツ申込情報状態コード 10:利用開始依頼済*/
	private static final String CONT_MKM_INF_STCD_10 = "10";
	
	/** コンテンツ申込情報状態コード 90：取消済*/
	private static final String CONT_MKM_INF_STCD_90 = "90";
	
	/** コンテンツ申込情報状態コード 91：自動取消済*/
	private static final String CONT_MKM_INF_STCD_91 = "91";
	
	/** コンテンツ申込情報状態コード 99：利用開始済*/
	private static final String CONT_MKM_INF_STCD_99 = "99";
	
	/** サービス契約ステータス 100：サービス提供中*/
	private static final String SVC_KEI_STAT_100 = "100";
	
	/** サービス契約ステータス 910：解約済*/
	private static final String SVC_KEI_STAT_910 = "910";
	
	/** サービス契約ステータス 920：キャンセル済*/
	private static final String SVC_KEI_STAT_920 = "920";
	
	/**
	 * コンストラクタ
	 */
	public CNSV0056_CNSV0056OPDBMapper()
	{
	}

	/**
	 * 
	 * 上りマッピングをする
	 * <br>
	 * @param outputMap
	 * @param unyo_ymd 運用日
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCNSV005601SC(HashMap outputMap, String unyo_ymd, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 運用日 → 開通前申込可能コンテンツサービス一覧照会マップ.ＫＥＹ＿ＵＮＹＯ＿ＹＭＤ
		parentMap.put("key_unyo_ymd", unyo_ymd);
		
		// 共通情報のマッピング
		outputMap.put("CNSV005601SC", parentMap);
		
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * <br>
	 * @param bean [0]：コンテンツ契約照会
	 * @param outputMap
	 * @param mskmNo 申込番号
	 * @param func_code 機能コード
	 * @return 送信情報
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCNSV005602SC(X31SDataBeanAccess[] bean, HashMap outputMap, String mskmNo, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 申込番号 → コンテンツ申込情報一覧照会マップ.ＫＥＹ＿ＭＳＫＭ＿ＮＯ
		parentMap.put("key_mskm_no", mskmNo);
		
		// 共通情報のマッピング
		outputMap.put("CNSV005602SC", parentMap);
		
		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：コンテンツ申込一覧照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCNSV005601_2SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMapCont = null;
		HashMap parentMapContMskm = null;
		
		if(outputMap.containsKey("CNSV005601SC")){
			parentMapCont = (HashMap)outputMap.get("CNSV005601SC");
		} 

		if(outputMap.containsKey("CNSV005602SC")){
			parentMapContMskm = (HashMap)outputMap.get("CNSV005602SC");
		} 

		// コンテンツリスト用
		X31SDataBeanAccessArray listEKK3281B010_cont_mskm_list_EKKEKK3281B010CBSMsg1List = bean[0].getDataBeanArray(CNW01901SFConst.CONT_MSKM_LIST);
		
		ArrayList childList = null;
		ArrayList childMskmList = null;
		// 画面表示用のコンテンツ情報を取得
		if(parentMapCont != null && parentMapCont.containsKey("EKK3281B010CBSMsg1List"))
		{
			childList = (ArrayList)parentMapCont.get("EKK3281B010CBSMsg1List");
			
			X31SDataBeanAccess subbean = null;
				
				for(int i = 0; i < childList.size(); i++)
				{
					subbean = listEKK3281B010_cont_mskm_list_EKKEKK3281B010CBSMsg1List.addDataBean();
					
					HashMap detailMap = (HashMap)childList.get(i);
					
					// コンテンツ申込リスト.コンテンツサービスコード
					subbean.sendMessageString(CNW01901SFConst.CONT_SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)detailMap.get("cont_svc_cd"));
					// コンテンツ申込リスト.コンテンツサービス名
					subbean.sendMessageString(CNW01901SFConst.CONT_SVC_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)detailMap.get("cont_svc_nm"));
					
					if(parentMapContMskm != null && parentMapContMskm.containsKey("EKK3291B010CBSMsg1List"))
					{
						childMskmList = (ArrayList)parentMapContMskm.get("EKK3291B010CBSMsg1List");
						// コンテンツ申込情報設定フラグ
						Boolean setFlg = false;
						
						for(int j = 0; j < childMskmList.size(); j++)
						{
							HashMap detailMskmMap = (HashMap)childMskmList.get(j);
							
							if(((String)detailMap.get("cont_svc_cd")).equals((String)detailMskmMap.get("cont_svc_cd")))
							{
								// コンテンツ申込リスト.申込番号
								subbean.sendMessageString(CNW01901SFConst.MSKM_NO, X31CWebConst.DATABEAN_SET_VALUE, (String)detailMskmMap.get("mskm_no"));
								// コンテンツ申込リスト.コンテンツ申込番号
								subbean.sendMessageString(CNW01901SFConst.CONT_MSKM_NO, X31CWebConst.DATABEAN_SET_VALUE, (String)detailMskmMap.get("cont_mskm_no"));
								// コンテンツ申込リスト.コンテンツ申込情報状態コード
								subbean.sendMessageString(CNW01901SFConst.CONT_MSM_INF_STCD, X31CWebConst.DATABEAN_SET_VALUE, (String)detailMskmMap.get("cont_mkm_inf_stcd"));
								// コンテンツ申込リスト.コンテンツ申込情報状態名称
								// 同時に変更前後コンテンツ申込状態フラグおよび個別コンテンツ非活性フラグを設定
								if(detailMskmMap.containsKey("cont_mkm_inf_stcd"))
								{
									// コンテンツ申込情報状態が以下の場合に下記より処理を実行
									// 受付済み
									if(((String)detailMskmMap.get("cont_mkm_inf_stcd")).equals(CONT_MKM_INF_STCD_01)){
										subbean.sendMessageString(CNW01901SFConst.CONT_MSM_INF_STNM, X31CWebConst.DATABEAN_SET_VALUE, "受付済");
										// コンテンツ申込リスト.変更前コンテンツ申込状態フラグ ← 申込ありを設定
										subbean.sendMessageBoolean(CNW01901SFConst.CHG_BF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
										// コンテンツ申込リスト.変更後コンテンツ申込状態フラグ ← 申込ありを設定
										subbean.sendMessageBoolean(CNW01901SFConst.CHG_AF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
										// コンテンツ申込リスト.個別コンテンツ非活性フラグ ←活性を設定
										subbean.sendMessageBoolean(CNW01901SFConst.CONT_KOBETU_HIKASEI_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
									} 
									// 利用開始依頼済
									else if(((String)detailMskmMap.get("cont_mkm_inf_stcd")).equals(CONT_MKM_INF_STCD_10))
									{
										subbean.sendMessageString(CNW01901SFConst.CONT_MSM_INF_STNM, X31CWebConst.DATABEAN_SET_VALUE, "利用開始依頼済");
										// コンテンツ申込リスト.変更前コンテンツ申込状態フラグ ← 申込ありを設定
										subbean.sendMessageBoolean(CNW01901SFConst.CHG_BF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
										// コンテンツ申込リスト.変更後コンテンツ申込状態フラグ ← 申込ありを設定
										subbean.sendMessageBoolean(CNW01901SFConst.CHG_AF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
										// コンテンツ申込リスト.個別コンテンツ非活性フラグ ←非活性を設定
										subbean.sendMessageBoolean(CNW01901SFConst.CONT_KOBETU_HIKASEI_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
									}
									// 取消済
									else if(((String)detailMskmMap.get("cont_mkm_inf_stcd")).equals(CONT_MKM_INF_STCD_90))
									{
										subbean.sendMessageString(CNW01901SFConst.CONT_MSM_INF_STNM, X31CWebConst.DATABEAN_SET_VALUE, "取消済");
										// コンテンツ申込リスト.変更前コンテンツ申込状態フラグ ← 申込なしを設定
										subbean.sendMessageBoolean(CNW01901SFConst.CHG_BF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
										// コンテンツ申込リスト.変更後コンテンツ申込状態フラグ ← 申込なしを設定
										subbean.sendMessageBoolean(CNW01901SFConst.CHG_AF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
										// コンテンツ申込リスト.個別コンテンツ非活性フラグ ←活性を設定
										subbean.sendMessageBoolean(CNW01901SFConst.CONT_KOBETU_HIKASEI_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
									}
									// 自動取消済
									else if(((String)detailMskmMap.get("cont_mkm_inf_stcd")).equals(CONT_MKM_INF_STCD_91))
									{
										subbean.sendMessageString(CNW01901SFConst.CONT_MSM_INF_STNM, X31CWebConst.DATABEAN_SET_VALUE, "自動取消済");
										// コンテンツ申込リスト.変更前コンテンツ申込状態フラグ ← 申込なしを設定
										subbean.sendMessageBoolean(CNW01901SFConst.CHG_BF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
										// コンテンツ申込リスト.変更後コンテンツ申込状態フラグ ← 申込なしを設定
										subbean.sendMessageBoolean(CNW01901SFConst.CHG_AF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
										// コンテンツ申込リスト.個別コンテンツ非活性フラグ ←活性を設定
										subbean.sendMessageBoolean(CNW01901SFConst.CONT_KOBETU_HIKASEI_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
									}
									// 利用開始済
									else if(((String)detailMskmMap.get("cont_mkm_inf_stcd")).equals(CONT_MKM_INF_STCD_99))
									{
										subbean.sendMessageString(CNW01901SFConst.CONT_MSM_INF_STNM, X31CWebConst.DATABEAN_SET_VALUE, "利用開始済");
										// コンテンツ申込リスト.変更前コンテンツ申込状態フラグ ← 申込ありを設定
										subbean.sendMessageBoolean(CNW01901SFConst.CHG_BF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
										// コンテンツ申込リスト.変更後コンテンツ申込状態フラグ ← 申込ありを設定
										subbean.sendMessageBoolean(CNW01901SFConst.CHG_AF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
										// コンテンツ申込リスト.個別コンテンツ非活性フラグ ←非活性を設定
										subbean.sendMessageBoolean(CNW01901SFConst.CONT_KOBETU_HIKASEI_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
									}
									// 該当なし
									else
									{
										subbean.sendMessageString(CNW01901SFConst.CONT_MSM_INF_STNM, X31CWebConst.DATABEAN_SET_VALUE, "");
										// コンテンツ申込リスト.変更前コンテンツ申込状態フラグ ← 申込なしを設定
										subbean.sendMessageBoolean(CNW01901SFConst.CHG_BF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
										// コンテンツ申込リスト.変更後コンテンツ申込状態フラグ ← 申込なしを設定
										subbean.sendMessageBoolean(CNW01901SFConst.CHG_AF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
										// コンテンツ申込リスト.個別コンテンツ非活性フラグ ←活性を設定
										subbean.sendMessageBoolean(CNW01901SFConst.CONT_KOBETU_HIKASEI_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
									}
								}
								// コンテンツ申込リスト.支払方法ID
								subbean.sendMessageString(CNW01901SFConst.PAYWAY_ID, X31CWebConst.DATABEAN_SET_VALUE, (String)detailMskmMap.get("payway_id"));
								// コンテンツ申込リスト.コンテンツ更新年月日時分秒
								subbean.sendMessageString(CNW01901SFConst.CONT_UPD_DTM, X31CWebConst.DATABEAN_SET_VALUE, (String)detailMskmMap.get("upd_dtm"));
								
								setFlg = true;
							}
						}
						// コンテンツサービスコードが一致するコンテンツ申込が存在しない場合
						if(!setFlg)
						{
							// コンテンツ申込リスト.申込番号 ← 空を設定
							subbean.sendMessageString(CNW01901SFConst.MSKM_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
							// コンテンツ申込リスト.コンテンツ申込番号 ← 空を設定
							subbean.sendMessageString(CNW01901SFConst.CONT_MSKM_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
							// コンテンツ申込リスト.コンテンツ申込情報状態コード ← 空を設定
							subbean.sendMessageString(CNW01901SFConst.CONT_MSM_INF_STCD, X31CWebConst.DATABEAN_SET_VALUE, "");
							// コンテンツ申込リスト.コンテンツ申込情報状態名称 ← 空を設定
							subbean.sendMessageString(CNW01901SFConst.CONT_MSM_INF_STNM, X31CWebConst.DATABEAN_SET_VALUE, "");
							// コンテンツ申込リスト.支払方法ID ← 空を設定
							subbean.sendMessageString(CNW01901SFConst.PAYWAY_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
							// コンテンツ申込リスト.コンテンツ更新年月日時分秒 ← 空を設定
							subbean.sendMessageString(CNW01901SFConst.CONT_UPD_DTM, X31CWebConst.DATABEAN_SET_VALUE, "");
							// コンテンツ申込リスト.変更前コンテンツ申込状態フラグ ← 申込なしを設定
							subbean.sendMessageBoolean(CNW01901SFConst.CHG_BF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
							// コンテンツ申込リスト.変更後コンテンツ申込状態フラグ ← 申込なしを設定
							subbean.sendMessageBoolean(CNW01901SFConst.CHG_AF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
							// コンテンツ申込リスト.個別コンテンツ非活性フラグ ←活性を設定
							subbean.sendMessageBoolean(CNW01901SFConst.CONT_KOBETU_HIKASEI_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
						}
					}
					// コンテンツ申込情報一覧照会が存在しない場合
					else
					{
						// コンテンツ申込リスト.申込番号 ← 空を設定
						subbean.sendMessageString(CNW01901SFConst.MSKM_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
						// コンテンツ申込リスト.コンテンツ申込番号 ← 空を設定
						subbean.sendMessageString(CNW01901SFConst.CONT_MSKM_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
						// コンテンツ申込リスト.コンテンツ申込情報状態コード ← 空を設定
						subbean.sendMessageString(CNW01901SFConst.CONT_MSM_INF_STCD, X31CWebConst.DATABEAN_SET_VALUE, "");
						// コンテンツ申込リスト.コンテンツ申込情報状態名称 ← 空を設定
						subbean.sendMessageString(CNW01901SFConst.CONT_MSM_INF_STNM, X31CWebConst.DATABEAN_SET_VALUE, "");
						// コンテンツ申込リスト.支払方法ID ← 空を設定
						subbean.sendMessageString(CNW01901SFConst.PAYWAY_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
						// コンテンツ申込リスト.コンテンツ更新年月日時分秒 ← 空を設定
						subbean.sendMessageString(CNW01901SFConst.CONT_UPD_DTM, X31CWebConst.DATABEAN_SET_VALUE, "");
						// コンテンツ申込リスト.変更前コンテンツ申込状態フラグ ← 申込なしを設定
						subbean.sendMessageBoolean(CNW01901SFConst.CHG_BF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
						// コンテンツ申込リスト.変更後コンテンツ申込状態フラグ ← 申込なしを設定
						subbean.sendMessageBoolean(CNW01901SFConst.CHG_AF_CONT_MSKM_ST_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
						// コンテンツ申込リスト.個別コンテンツ非活性フラグ ←活性を設定
						subbean.sendMessageBoolean(CNW01901SFConst.CONT_KOBETU_HIKASEI_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
					}
				}
		}

		return bean;
	}
}