/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0191_KKSV0191OPDBMapper
*	ソースファイル名：KKSV0191_KKSV0191OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2011年08月05日
*＜機能概要＞
*	BP（eo光テレビオプションチャンネル登録検索）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/05	Fujitsu		新規作成
*	v4.00.00	2012/08/29	Fujitsu		ANK-0524-00-00,ANK-0531-00-00対応
*	v74.00.00	2025/01/22	FJ）佐々木	【ANK-4592-00-00】テレビ新コース（スカパー用）導入対応
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

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.JKKStringUtil;
import eo.common.util.JPCDateChecker;
import eo.web.webview.KKW00831SF.KKW00831SFConst;

/**
 * DataBean-BPマッピングをする。
 * 
 * @author 富士通
 */
public class KKSV0191_KKSV0191OPDBMapper
{
	
	/**
	 * コンストラクタ
	 */
	public KKSV0191_KKSV0191OPDBMapper()
	{
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV019100SC(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 selectName = bean[0].sendMessageString(KKW00831SFConst.KIKI_SEIZO_NO, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccessArray arraybean = bean[0].getDataBeanArray("機器提供サービス契約情報");
		if(arraybean.getCount() > 0)
		{
			for(int i = 0; i < arraybean.getCount(); i++)
			{
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				// 選択した機器製造番号の機器提供サービス契約情報を設定
				if (selectName.equals(subbean.sendMessageString("機器製造番号", X31CWebConst.DATABEAN_GET_VALUE)))
				{
					// 機器提供サービス契約情報.サービス契約内訳番号 → サービス契約内訳一意照会マップ.ＫＥＹ＿サービス契約内訳番号
					parentMap.put("key_svc_kei_ucwk_no", subbean.sendMessageString("サービス契約内訳番号", X31CWebConst.DATABEAN_GET_VALUE));
					
					break;
				}
			}
		}
		
		// ＫＥＹ＿予約適用年月日 → サービス契約内訳一意照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString("ＫＥＹ＿予約適用年月日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV019100SC", parentMap);
		
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV019101SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}


		X31SDataBeanAccessArray arrayBean = bean[0].getDataBeanArray("サービス契約情報");
		X31SDataBeanAccess subbean = arrayBean.getDataBean(0);
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		/* ++++++++++ v4.00.00 変更開始 ++++++++++ */
//		// 機器製造番号 → eo光テレビオプションチャンネル情報一覧照会マップ.ＫＥＹ＿機器製造番号
//		parentMap.put("key_kiki_seizo_no", bean[0].sendMessageString("機器製造番号", X31CWebConst.DATABEAN_GET_VALUE));
//		
//		// 料金コースコード → eo光テレビオプションチャンネル情報一覧照会マップ.ＫＥＹ＿料金コースコード ※サービスのワークから設定するように変更
////		parentMap.put("key_pcrs_cd", bean[0].sendMessageString("料金コースコード", X31CWebConst.DATABEAN_GET_VALUE));
//		
//		parentMap.put("cnt", "1");
		// STBが紐づいているオプションチャンネルを検索した場合、機器製造番号と内訳の料金コース（KKSV019100SCで取得）でチャンネル一覧を取得する
		if("1".equals(func_code))
		{
			// 機器製造番号 → eo光テレビオプションチャンネル情報一覧照会マップ.ＫＥＹ＿機器製造番号
			parentMap.put("key_kiki_seizo_no", bean[0].sendMessageString("機器製造番号", X31CWebConst.DATABEAN_GET_VALUE));
			// サービス契約情報.サービス契約番号 → eo光テレビオプションチャンネル情報一覧照会マップ.ＫＥＹ＿サービス契約番号
			parentMap.put("key_svc_kei_no", subbean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		}
		// STBに紐付かないオプションチャンネルを検索した場合、サービス契約番号と料金コースコードでチャンネル一覧を取得する
		else if("2".equals(func_code))
		{
			// サービス契約情報.料金コースコード → eo光テレビオプションチャンネル情報一覧照会マップ.ＫＥＹ＿料金コースコード
			parentMap.put("key_pcrs_cd", subbean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_GET_VALUE));
			// サービス契約情報.サービス契約番号 → eo光テレビオプションチャンネル情報一覧照会マップ.ＫＥＹ＿サービス契約番号
			parentMap.put("key_svc_kei_no", subbean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		/* ++++++++++ v4.00.00 変更終了 ++++++++++ */

		outputMap.put("KKSV019101SC", parentMap);
		
		return outputMap;
	}
	
	/* ++++++++++ v4.00.00 削除開始 ++++++++++ */
//	/**
//	 * 上りマッピングをする
//	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル登録
//	 * @param outputMap
//	 * @param func_code　機能コード
//	 * @return outputMap
//	 */
//	@SuppressWarnings("unchecked")
//	public HashMap setKKSV019102CC(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_gene_add_dtm", "");
//
//		// ＫＥＹ＿予約適用年月日 → オプションサービス一意照会マップ.ＫＥＹ＿予約適用年月日
//		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString("ＫＥＹ＿予約適用年月日", X31CWebConst.DATABEAN_GET_VALUE));
//
//		outputMap.put("KKSV019102CC", parentMap);
//		
//		return outputMap;
//	}
	/* ++++++++++ v4.00.00 削除終了 ++++++++++ */


	/**
	 * 下りマッピング
	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル登録
	 * @param outputMap
	 * @return bean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV019101SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV019101SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV019101SC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listKKSV019101SC_eo_op_list_EKK0341B004CBSMsg1List = bean[0].getDataBeanArray("ｅｏ光テレビオプションチャンネル情報リスト");
		listKKSV019101SC_eo_op_list_EKK0341B004CBSMsg1List.clearArray();
		childList = null;
		
		/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
		// 備考の表示判定に使用する運用日を取得する
		String opeDate = bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE);
		/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
		
		// ANK-4592-00-00 ADD START
		// CS用オプションチャンネルのオプションサービスコードを取得する
		String workSetteValue = bean[0].sendMessageString(KKW00831SFConst.CS_COURSE_OPCH, X31CWebConst.DATABEAN_GET_VALUE);
		List<String> csCorseOpchList = new ArrayList<String>();
		
		if(!JKKStringUtil.isNullBlank(workSetteValue))
		{
			// 業務パラメータ管理一照会の結果をカンマ区切りにする
			csCorseOpchList = Arrays.asList(workSetteValue.split(","));
		}
		// ANK-4592-00-00 ADD END
		if(parentMap.containsKey("EKK0341B004CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0341B004CBSMsg1List");
			X31SDataBeanAccess subbean = null;
			for(int i = 0; i < childList.size(); i++)
			{
				// ANK-4592-00-00 MOD STRAT
				//subbean = listKKSV019101SC_eo_op_list_EKK0341B004CBSMsg1List.addDataBean();
				//HashMap childMap = (HashMap)childList.get(i);
				
				HashMap childMap = (HashMap)childList.get(i);
				// eo光テレビオプションチャンネル情報一覧照会明細.オプションサービスコードが
				// CSコース用オプションサービスコードであればマッピング処理をスキップ
				if(csCorseOpchList.contains((String)childMap.get("op_svc_cd")))
				{
					continue;
				}
				subbean = listKKSV019101SC_eo_op_list_EKK0341B004CBSMsg1List.addDataBean();
				// ANK-4592-00-00 MOD END
				
				/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
				// 備考の表示判定に使用する各自年月日を取得する
				String bikoScreenDspStaymd = (String)childMap.get("biko_screen_dsp_staymd");
				if(bikoScreenDspStaymd == null || "".equals(bikoScreenDspStaymd))
				{
					bikoScreenDspStaymd = "19000101";
				}
				String bikoScreenDspEndymd = (String)childMap.get("biko_screen_dsp_endymd");
				if(bikoScreenDspEndymd == null || "".equals(bikoScreenDspEndymd))
				{
					bikoScreenDspEndymd = "20991231";
				}
				/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
				
				// ｅｏ光テレビオプションチャンネル情報リスト.ＢＣＡＳ−ＩＤ
				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.機器製造番号（BCAS）
				subbean.sendMessageString("ＢＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kiki_seizo_no_bcas"));
				// ｅｏ光テレビオプションチャンネル情報リスト.ＣＣＡＳ−ＩＤ
				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.機器製造番号（CCAS）
				subbean.sendMessageString("ＣＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kiki_seizo_no_ccas"));
				// ｅｏ光テレビオプションチャンネル情報リスト.オプションサービスコード
				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.オプションサービスコード
				subbean.sendMessageString("オプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_cd"));
				// ｅｏ光テレビオプションチャンネル情報リスト.チャンネル名
				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.オプションサービス名
				subbean.sendMessageString("チャンネル名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_nm"));
				/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
				// ｅｏ光テレビオプションチャンネル情報リスト.デジタルティアグループコード
				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.デジタルティアグループコード
				subbean.sendMessageString("デジタルティアグループコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dgtia_grp_cd"));
				// ｅｏ光テレビオプションチャンネル情報リスト.オプションチャンネルオペレーション方法コード
				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.オプションチャンネルオペレーション方法コード
				subbean.sendMessageString("オプションチャンネルオペレーション方法コード", X31CWebConst.DATABEAN_SET_VALUE, 
						(String)childMap.get("op_channel_oprtn_way_cd"));
				/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
				
				/* ++++++++++ v4.00.00 変更開始 ++++++++++ */
//				// ｅｏ光テレビオプションチャンネル情報リスト.備考
//				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.オプションチャンネル備考
//				subbean.sendMessageString("備考", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_channel_biko"));
				// 備考画面表示開始年月日 ≦ 運用日 ≦ 備考画面表示終了年月日 の場合
				if(JPCDateChecker.isPastDate(bikoScreenDspStaymd, opeDate, "1") && JPCDateChecker.isFutureDate(bikoScreenDspEndymd, opeDate, "1"))
				{
					// ｅｏ光テレビオプションチャンネル情報リスト.備考
					// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.オプションチャンネル備考
					subbean.sendMessageString("備考", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_channel_biko"));
				}
				/* ++++++++++ v4.00.00 変更終了 ++++++++++ */
				
				// ｅｏ光テレビオプションチャンネル情報リスト.オプションサービス契約番号（カレント情報）
				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.オプションサービス契約番号（カレント情報）
				subbean.sendMessageString("オプションサービス契約番号（カレント情報）", 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_kei_no_cre"));
				// ｅｏ光テレビオプションチャンネル情報リスト.オプションサービス契約ステータス（カレント情報）
				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.
				// オプションサービス契約ステータス（カレント情報）
				subbean.sendMessageString("オプションサービス契約ステータス（カレント情報）", 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_kei_stat_cre"));
				// ｅｏ光テレビオプションチャンネル情報リスト.サービス開始年月日（カレント情報）
				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.サービス開始年月日（カレント情報）
				subbean.sendMessageString("サービス開始年月日（カレント情報）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_staymd_cre"));
				// ｅｏ光テレビオプションチャンネル情報リスト.オプションサービス契約番号（予約情報）
				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.オプションサービス契約番号（予約情報）
				subbean.sendMessageString("オプションサービス契約番号（予約情報）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_kei_no_res"));
				// ｅｏ光テレビオプションチャンネル情報リスト.オプションサービス契約ステータス（予約情報）
				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.オプションサービス契約ステータス（予約情報）
				subbean.sendMessageString("オプションサービス契約ステータス（予約情報）", 
						X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_kei_stat_res"));
				// ｅｏ光テレビオプションチャンネル情報リスト.サービス開始年月日（予約情報）
				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.サービス開始年月日（予約情報）
				subbean.sendMessageString("サービス開始年月日（予約情報）", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_staymd_res"));
				/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
				// ｅｏ光テレビオプションチャンネル情報リスト.オプションチャンネル解約対象抽出フラグ
				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.オプションチャンネル解約対象抽出フラグ
				subbean.sendMessageString("オプションチャンネル解約対象抽出フラグ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("opch_dsl_tg_chsht_flg"));
				// ｅｏ光テレビオプションチャンネル情報リスト.相関チェック開始年月日
				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.相関チェック開始年月日
				subbean.sendMessageString("相関チェック開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sokan_chk_staymd"));
				// ｅｏ光テレビオプションチャンネル情報リスト.相関チェック終了年月日
				// ↑ eo光テレビオプションチャンネル情報一覧照会マップ.eo光テレビオプションチャンネル情報一覧照会明細.相関チェック終了年月日
				subbean.sendMessageString("相関チェック終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sokan_chk_endymd"));
				/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
			}
		}
		return bean;
	}

	/* ++++++++++ v4.00.00 削除開始 ++++++++++ */
//	/**
//	 * 下りマッピング
//	 * @param bean　[0]：ｅｏ光テレビオプションチャンネル登録
//	 * @param outputMap
//	 * @return bean
//	 */
//	@SuppressWarnings("unchecked")
//	public X31SDataBeanAccess[] getKKSV019102CC(X31SDataBeanAccess[] bean, HashMap outputMap)
//	{
//
//		HashMap parentMap = null;
//		if(outputMap.containsKey("KKSV019102CC"))
//		{
//			parentMap = (HashMap)outputMap.get("KKSV019102CC");
//		}
//
//		ArrayList childList = null;
//		
//
//		X31SDataBeanAccessArray listKKSV019102CC_eo_op_list_EKK0821A010CBSMsg1List = bean[0].getDataBeanArray("ｅｏ光テレビオプションチャンネル情報リスト");
//		childList = null;
//		if(parentMap.containsKey("EKK0821A010CBSMsg1List"))
//		{
//			childList = (ArrayList)parentMap.get("EKK0821A010CBSMsg1List");
//			X31SDataBeanAccess subbean = null;
//			for(int i = 0; i < childList.size(); i++)
//			{
//				subbean = listKKSV019102CC_eo_op_list_EKK0821A010CBSMsg1List.getDataBean(i);
//				HashMap childMap = (HashMap)childList.get(i);
//			
//				// ｅｏ光テレビオプションチャンネル情報リスト.デジタルティアグループコード
//				//↑  オプションサービス一意照会マップ.オプションサービス一意照会明細.デジタルティアグループコード
//				subbean.sendMessageString("デジタルティアグループコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dgtia_grp_cd"));
//				// ｅｏ光テレビオプションチャンネル情報リスト.オプションチャンネルオペレーション方法コード
//				//↑  オプションサービス一意照会マップ.オプションサービス一意照会明細.オプションチャンネルオペレーション方法コード
//				subbean.sendMessageString("オプションチャンネルオペレーション方法コード", X31CWebConst.DATABEAN_SET_VALUE, 
//						(String)childMap.get("op_channel_oprtn_way_cd"));
//			}
//		}
//		return bean;
//	}
	/* ++++++++++ v4.00.00 削除終了 ++++++++++ */
}
