/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CRSV0104_CRSV0104OPDBMapper
*	ソースファイル名：CRSV0104_CRSV0104OPDBMapper.java
*	作成者			：fj
*	日付			：2011年12月14日
*＜機能概要＞
*	BP（顧客コンテンツ契約詳細）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/12/14	fj		新規作成
*	v65.00.00	2023/07/12	FJ)中原		【ANK-4346-00-00】【eo定期】CCMG再構築対応
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
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;
import eo.common.util.JCRUtilCommon;
import eo.web.webview.CHW00105SF.CHW00105SFConst;
import eo.web.webview.CHW00301SF.CHW00301SFConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class CRSV0104_CRSV0104OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public CRSV0104_CRSV0104OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：顧客コンテンツ契約詳細
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCRSV010401SC(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);

		// ＳＹＳＩＤ → お客様照会マップ.ＫＥＹ＿SYSID
		parentMap.put("key_sysid", bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// 部品呼び出し → お客様照会マップ.ＫＥＹ＿世代登録年月日時分秒
		parentMap.put("key_gene_add_dtm", eo.web.webview.common.JCRWebCommon.getConstantValue(bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE) + "010101001"));
		// 基準日 → お客様照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CRSV010401SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：顧客コンテンツ契約詳細
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCRSV010402SC(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);

		// ＳＹＳＩＤ → 家族会員照会マップ.ＫＥＹ＿SYSID
		parentMap.put("key_sysid", bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CRSV010402SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：顧客コンテンツ契約詳細
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	// ANK-4346-00-00 MOD START
	//public HashMap setCRSV010403SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
	public HashMap setCRSV010401CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
	// ANK-4346-00-00 MOD END
		
		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);

		// ＳＹＳＩＤ → コンテンツ契約一覧照会マップ.ＫＥＹ＿SYSID
		parentMap.put("key_sysid", bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// 基準日 → コンテンツ契約一覧照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));
		// システム日時 → コンテンツ契約一覧照会マップ.ＫＥＹ＿システム年月日時分秒
		parentMap.put("key_sys_dtm", bean[0].sendMessageString("システム日時", X31CWebConst.DATABEAN_GET_VALUE));

		// ANK-4346-00-00 MOD START
		//outputMap.put("CRSV010403SC", parentMap);
		outputMap.put("CRSV010401CC", parentMap);
		// ANK-4346-00-00 MOD END
						
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：顧客コンテンツ契約詳細
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	// ANK-4346-00-00 MOD START
	//public X31SDataBeanAccess[] getCRSV010403SC(X31SDataBeanAccess[] bean, HashMap outputMap){
	public X31SDataBeanAccess[] getCRSV010401CC(X31SDataBeanAccess[] bean, HashMap outputMap){
	// ANK-4346-00-00 MOD END

		HashMap parentMap = null;
		// ANK-4346-00-00 MOD START
		//if(outputMap.containsKey("CRSV010403SC")){
		//	parentMap = (HashMap)outputMap.get("CRSV010403SC");
		//}
		if(outputMap.containsKey("CRSV010401CC")){
			parentMap = (HashMap)outputMap.get("CRSV010401CC");
		// ANK-4346-00-00 MOD END
		}

		ArrayList childList = null;

		

		// ANK-4346-00-00 MOD START
//		X31SDataBeanAccessArray listCRSV010403SC_ecn0021b001cbsmsg1list_ECN0021B001CBSMsgList = bean[0].getDataBeanArray("コンテンツ契約一覧照会明細");
//		childList = null;
//		if(listCRSV010403SC_ecn0021b001cbsmsg1list_ECN0021B001CBSMsgList != null && parentMap != null && parentMap.containsKey("ECN0021B001CBSMsgList")){
//			childList = (ArrayList)parentMap.get("ECN0021B001CBSMsgList");
		X31SDataBeanAccessArray listCRSV010401CC_cont_svc_kobet_list_cont_svc_detail_list = bean[0].getDataBeanArray("コンテンツ契約一覧照会明細");
		childList = null;
		if(listCRSV010401CC_cont_svc_kobet_list_cont_svc_detail_list != null && parentMap != null && parentMap.containsKey("cont_kei_list")){
			childList = (ArrayList)parentMap.get("cont_kei_list");
			
		// ANK-4346-00-00 MOD END

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				// ANK-4346-00-00 MOD START
				//if(listCRSV010403SC_ecn0021b001cbsmsg1list_ECN0021B001CBSMsgList.getCount() -1 >= i){
				//	subbean = listCRSV010403SC_ecn0021b001cbsmsg1list_ECN0021B001CBSMsgList.getDataBean(i);
				//}else{
				//	subbean = listCRSV010403SC_ecn0021b001cbsmsg1list_ECN0021B001CBSMsgList.addDataBean();
				//}
				if(listCRSV010401CC_cont_svc_kobet_list_cont_svc_detail_list.getCount() -1 >= i){
					subbean = listCRSV010401CC_cont_svc_kobet_list_cont_svc_detail_list.getDataBean(i);
				}else{
					subbean = listCRSV010401CC_cont_svc_kobet_list_cont_svc_detail_list.addDataBean();
				}
				// ANK-4346-00-00 MOD END
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// コンテンツ契約一覧照会明細.ｅｏＩＤ ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会明細.eoID
				if (childMap != null) {
					subbean.sendMessageString("ｅｏＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("eoid"));
				} else {
					subbean.sendMessageString("ｅｏＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// コンテンツ契約一覧照会明細.コンテンツサービス名 ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会明細.コンテンツサービス名
				if (childMap != null) {
					subbean.sendMessageString("コンテンツサービス名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cont_svc_nm"));
				} else {
					subbean.sendMessageString("コンテンツサービス名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// コンテンツ契約一覧照会明細.コンテンツ名 ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会明細.コンテンツ名
				if (childMap != null) {
					subbean.sendMessageString("コンテンツ名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cont_nm"));
				} else {
					subbean.sendMessageString("コンテンツ名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// コンテンツ契約一覧照会明細.契約開始日 ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会明細.コンテンツ契約開始年月日時分秒
				if (childMap != null) {
					subbean.sendMessageString("契約開始日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cont_kei_sta_dtm"));
				} else {
					subbean.sendMessageString("契約開始日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// コンテンツ契約一覧照会明細.契約終了日 ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会明細.コンテンツ契約終了年月日時分秒
				if (childMap != null) {
					subbean.sendMessageString("契約終了日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cont_kei_end_dtm"));
				} else {
					subbean.sendMessageString("契約終了日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// コンテンツ契約一覧照会明細.決済方法 ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会明細.コンテンツ支払い方法コード名
				if (childMap != null) {
					subbean.sendMessageString("決済方法", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cont_payway_nm"));
				} else {
					subbean.sendMessageString("決済方法", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// コンテンツ契約一覧照会明細.契約状態 ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会明細.コンテンツ契約状態名
				if (childMap != null) {
					subbean.sendMessageString("契約状態", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cont_kei_stat_nm"));
				} else {
					subbean.sendMessageString("契約状態", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// コンテンツ契約一覧照会明細.会員種別 ← コンテンツ契約一覧照会マップ.コンテンツ契約一覧照会明細.会員種別名
				if (childMap != null) {
					subbean.sendMessageString("会員種別", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("member_sbt_nm"));
				} else {
					subbean.sendMessageString("会員種別", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// コンテンツ契約一覧照会明細.行スタイルクラス ← 部品呼び出し
				subbean.sendMessageString("行スタイルクラス", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getLineStyle(i + 1));
				// コンテンツ契約一覧照会明細.行スタイルＩＤ ← 部品呼び出し
				subbean.sendMessageString("行スタイルＩＤ", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getConstantValue("tr" + String.valueOf(i)));
				// コンテンツ契約一覧照会明細.明細インデックス ← 部品呼び出し
				subbean.sendMessageString("明細インデックス", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getConstantValue(String.valueOf(i)));
			}
		}
		// ANK-4346-00-00 ADD START
		HashMap parentMap2 = null;
		HashMap parentMap3 = null;
		if(outputMap.containsKey("CRSV010402SC")){
			parentMap2 = (HashMap)outputMap.get("CRSV010402SC");
		}
		ArrayList memberList = null;

		X31SDataBeanAccessArray listCRSV010401SC_member_sbt_list_list_sysid_detail_list = bean[0].getDataBeanArray("会員情報リスト");
		childList = null;
		if(listCRSV010401SC_member_sbt_list_list_sysid_detail_list != null && parentMap2 != null && parentMap2.containsKey("ECK0011B003CBSMsg1List"))
		{
			memberList = (ArrayList)parentMap2.get("ECK0011B003CBSMsg1List");

			X31SDataBeanAccess subbean = listCRSV010401SC_member_sbt_list_list_sysid_detail_list.getDataBean(0);

			subbean.sendMessage("ＳＹＳＩＤリスト", X31CWebConst.DATABEAN_CLEAR);
			subbean.sendMessage("ＳＹＳＩＤ会員種別リスト", X31CWebConst.DATABEAN_CLEAR);
			
			// プルダウンの中身をSYSIDの昇順にする
			String sysidWork = "";
			StringBuilder Sysidjoiner = new StringBuilder();
			HashMap SysidMap = new HashMap();
			if( memberList.size() != 0)
			{
				for(int j = 0; j < memberList.size(); j++)
				{
					HashMap memberMap = (HashMap)memberList.get(j);
					if (memberMap != null) 
					{
						if ( !sysidWork.equals((String)memberMap.get("sysid")))
						{
							if(Sysidjoiner.length() > 0)
							{
								Sysidjoiner.append(",");
							}
							Sysidjoiner.append((String)memberMap.get("sysid"));
							SysidMap.put((String)memberMap.get("sysid"), (String)memberMap.get("member_sbt_cd_nm"));
							sysidWork = (String)memberMap.get("sysid");
						}
					}
				}
			}
			// ファミリー会員のみの場合
			else
			{
				if(outputMap.containsKey("CRSV010401SC")){
					parentMap3 = (HashMap)outputMap.get("CRSV010401SC");
				}
				ArrayList FamilymemberList = null;
				if( parentMap3.containsKey("ECK0011A010CBSMsg1List"))
				{
					FamilymemberList = (ArrayList)parentMap3.get("ECK0011A010CBSMsg1List");
				}
				if( FamilymemberList.size() != 0)
				{
					for(int j = 0; j < FamilymemberList.size(); j++)
					{
						HashMap memberMap = (HashMap)FamilymemberList.get(j);
						if (memberMap != null) 
						{
							if ( !sysidWork.equals((String)memberMap.get("sysid")))
							{
								if(Sysidjoiner.length() > 0)
								{
									Sysidjoiner.append(",");
								}
								Sysidjoiner.append((String)memberMap.get("sysid"));
								SysidMap.put((String)memberMap.get("sysid"), (String)memberMap.get("member_sbt_cd_nm"));
								sysidWork = (String)memberMap.get("sysid");
							}
						}
					}
				}
			}

			String sysidList = Sysidjoiner.toString();
			String[] sysidStr = sysidList.split(",");
			Arrays.sort(sysidStr);
			for (int k = 0; k < sysidStr.length; k++)
			{
				// 会員種別リスト.SYSID ← 会員種別照会マップ.会員種別一覧照会リスト.SYSID
				subbean.sendMessageString("ＳＹＳＩＤリスト", X31CWebConst.DATABEAN_ADD_VALUE, sysidStr[k]);
				// 会員種別リスト.SYSID会員種別 ← 会員種別照会マップ.会員種別一覧照会リスト.SYSID＋会員種別
				subbean.sendMessageString("ＳＹＳＩＤ会員種別リスト",X31CWebConst.DATABEAN_ADD_VALUE, sysidStr[k] + " " + SysidMap.get(sysidStr[k]));
				if (k == 0)
				{
					subbean.sendMessageString("ＳＹＳＩＤ会員種別選択", X31CWebConst.DATABEAN_SET_VALUE, "0");
				}
			}
		}
			// ANK-4346-00-00 ADD END
		


		return bean;
	}


}