/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：KKSV0910_KKSV0910OPDBMapper
 *	ソースファイル名：KKSV0910_KKSV0910OPDBMapper.java
 *	作成者			：FJ
 *	日付			：2018年06月29日
 *＜機能概要＞
 *	BP（サービス契約一覧照会）へのＤ−Ｂマッピングクラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 * v38.00.00	2018/06/29	FJ)和田(さ)	【ANK-3436-00-00】mineoセット割
 * v40.00.00	2018/12/25	FJ)吉田		【ANK-3521-00-00】セット割参照機能の追加
 * v57.00.00	2022/01/24	FJ)南		【ANK-4195-00-00】eo光ネット×mineoセット割施策開始対応
 **********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.JPCModelConstant;
import eo.common.constant.JZM0171Constant;
import eo.common.util.JKKStringUtil;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.ZMW12401SF.ZMW12401SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JZMWebCommon;
import eo.web.webview.common.JZMWebConst;
import eo.web.webview.KKW00804SF.KKW00804SFConst;
import eo.web.webview.KKW01023SF.KKW01023SFConst;
import eo.web.webview.KKW01101SF.KKW01101SFConst;
import eo.web.webview.KKW21901SF.KKW21901SFConst;
import eo.web.webview.KKW22301SF.KKW22301SFConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0910_KKSV0910OPDBMapper {

	/**
	 * コンストラクタ
	 */
	public KKSV0910_KKSV0910OPDBMapper(){
	}


	/**
	 * 上りマッピングをする
	 * @param bean　[0]：セット割登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV091001SC(X31SDataBeanAccess[] bean, HashMap outputMap, String opedate, 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);

		X31SDataBeanAccess beanTemp = null;
		X31SDataBeanAccessArray arraybean = null;

		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("顧客契約引継リスト");
		
		if (arraybean.getCount() == 1)
		{
			// 顧客契約引継リストの取得
			X31SDataBeanAccess subbean = arraybean.getDataBean(0);
			// ＳＹＳＩＤ → お客様一意照会.ＫＥＹ＿ＳＹＳＩＤ
			parentMap.put("key_sysid", subbean.sendMessageString(KKW22301SFConst.SYSID_01,X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		// 運用年月日 → お客様一意照会.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", opedate);

		outputMap.put("KKSV091001SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：セット割登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV091002SC(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);
		
		X31SDataBeanAccess beanTemp = null;
		X31SDataBeanAccessArray arraybean = null;
		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("顧客契約引継リスト");
		if (arraybean.getCount() == 1)
		{
			// 顧客契約引継リストの取得
			X31SDataBeanAccess subbean = arraybean.getDataBean(0);
			// サービス契約番号 → サービス契約回線内訳一覧照会（現在利用中）.ＫＥＹ＿サービス契約番号
			parentMap.put("key_svc_kei_no", subbean.sendMessageString(KKW22301SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		outputMap.put("KKSV091002SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：セット割登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV091003SC(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);

		X31SDataBeanAccess beanTemp = null;
		X31SDataBeanAccessArray arraybean = null;
		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("顧客契約引継リスト");
		if (arraybean.getCount() == 1)
		{
			// 顧客契約引継リストの取得
			X31SDataBeanAccess subbean = arraybean.getDataBean(0);
			// ＳＹＳＩＤ → 割引サービス契約一覧照会（SYSID）.ＫＥＹ＿ＳＹＳＩＤ
			parentMap.put("key_sysid", subbean.sendMessageString(KKW22301SFConst.SYSID_01, X31CWebConst.DATABEAN_GET_VALUE));
		}
		outputMap.put("KKSV091003SC", parentMap);

		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：セット割登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV091004CC(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_chk_kbn", "1");
		outputMap.put("KKSV091004CC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：セット割登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV091005SC(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_cd_sbt_cd", String.valueOf(JZM0171Constant.CD01731));

		outputMap.put("KKSV091005SC", parentMap);
						
		return outputMap;
	}

 
	// ANK-3521-00-00 2018/12/21 ADD START
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：セット割登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV091006SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opedate) {
		
		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);

		X31SDataBeanAccess beanTemp = null;
		X31SDataBeanAccessArray arraybean = null;
		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("顧客契約引継リスト");
		if (arraybean.getCount() == 1)
		{
			// 顧客契約引継リストの取得
			X31SDataBeanAccess subbean = arraybean.getDataBean(0);
			// サービス契約番号 → サービス契約一意照会.ＫＥＹ＿サービス契約番号
			parentMap.put("key_svc_kei_no", subbean.sendMessageString(KKW22301SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		// 運用日 → サービス契約一意照会.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", opedate);

		outputMap.put("KKSV091006SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean セット割登録画面
	 * @param outputMap outputMap
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV091007CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate) {

		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		X31SDataBeanAccess beanTemp = null;
		X31SDataBeanAccessArray arraybean = null;
		
		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("顧客契約引継リスト");
		X31SDataBeanAccess subbean = arraybean.getDataBean(0);
		
		parentMap.put("func_code", func_code);
		// 運用日時
		parentMap.put("key_ope_date_time", opeDate);
		
		// サービス契約番号
		parentMap.put("key_svc_kei_no", subbean.sendMessageString(KKW22301SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV091007CC", parentMap);

		return outputMap;
	}
	// ANK-3521-00-00 2018/12/21 ADD END
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：お客様一意照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV091001SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV091001SC")){
			parentMap = (HashMap)outputMap.get("KKSV091001SC");
		}

		ArrayList childList = null;
		if(parentMap != null && parentMap.containsKey("ECK0011A010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("ECK0011A010CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				HashMap childMap = (HashMap)childList.get(i);

				// 契約者住所コード ← お客様一意照会.お客様一意照会明細.契約者住所コード
				if (childMap != null) {
					bean[0].sendMessageString("契約者住所コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("keisha_ad_cd"));
				} else {
					bean[0].sendMessageString("契約者住所コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}
		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：サービス契約回線内訳一覧照会（現在利用中）
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV091002SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV091002SC")){
			parentMap = (HashMap)outputMap.get("KKSV091002SC");
		}

		ArrayList childList = null;
		if(parentMap != null && parentMap.containsKey("EKK0251B003CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK0251B003CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				HashMap childMap = (HashMap)childList.get(i);

				// 回線場所住所コード ← サービス契約回線内訳一意照会マップ.回線場所住所コード
				if (childMap != null) {
					bean[0].sendMessageString("回線場所住所コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kaisen_place_ad_cd"));
				} else {
					bean[0].sendMessageString("回線場所住所コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// サービス契約回線内訳番号 ← サービス契約回線内訳一意照会マップ.サービス契約回線内訳番号
				if (childMap != null) {
					bean[0].sendMessageString("サービス契約回線内訳番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_kaisen_ucwk_no"));
				} else {
					bean[0].sendMessageString("サービス契約回線内訳番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}
		return bean;
	}

	// ANK-3521-00-00 2018/12/21 ADD START
	/**
	 * 下りマッピング
	 * @param bean　[0]：サービス契約一意照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV091006SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV091006SC")){
			parentMap = (HashMap)outputMap.get("KKSV091006SC");
		}

		ArrayList childList = null;
		if(parentMap != null && parentMap.containsKey("EKK0081A010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK0081A010CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				HashMap childMap = (HashMap)childList.get(i);

				// サービスコード ← サービス契約一意照会.サービスコード
				if (childMap != null) {
					bean[0].sendMessageString("サービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_cd"));
				} else {
					bean[0].sendMessageString("サービスコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}
		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV091007CC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV091007CC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV091007CC");
		}
		
		ArrayList childList = null;
		if(parentMap != null && parentMap.containsKey("wribList"))
		{
			childList = (ArrayList)parentMap.get("wribList");
			
			X31SDataBeanAccess subbean = null;
			// ANK-4195-00-00 ADD START
			X31SDataBeanAccessArray arraybean = null;
			X31SDataBeanAccess subbean2 = null;
			// ANK-4195-00-00 ADD END
			
			for(int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
				
				subbean = bean[0].getDataBeanArray("キャンペーン一覧").addDataBean();
				// ANK-4195-00-00 ADD START
				arraybean = bean[0].getDataBeanArray("顧客契約引継リスト");
				subbean2 = arraybean.getDataBean(0);
				// ANK-4195-00-00 ADD END
				
				// キャンペーン一覧_表示用キャンペーンコード
				if (childMap != null)
				{
					subbean.sendMessageString(KKW22301SFConst.DSP_CAMPAIGN_CD_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("campaign_code"));
				}
				else
				{
					subbean.sendMessageString(KKW22301SFConst.DSP_CAMPAIGN_CD_02, X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// キャンペーン一覧_割引サービス名称
				if (childMap != null)
				{
					subbean.sendMessageString(KKW22301SFConst.WRIB_SVC_NM_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_nm"));
				}
				else
				{
					subbean.sendMessageString(KKW22301SFConst.WRIB_SVC_NM_02, X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// キャンペーン一覧_申込年月日
				if (childMap != null)
				{
					subbean.sendMessageString(KKW22301SFConst.MSKM_YMD_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("entry_date"));
				}
				else
				{
					subbean.sendMessageString(KKW22301SFConst.MSKM_YMD_02, X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// キャンペーン一覧_関連お客さまＩＤ
				if (childMap != null)
				{
					subbean.sendMessageString(KKW22301SFConst.KNRN_SVC_KEI_NO_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("relevant_service_num"));
				}
				else
				{
					subbean.sendMessageString(KKW22301SFConst.KNRN_SVC_KEI_NO_02, X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				// ANK-4195-00-00 ADD START
				// キャンペーン一覧_ステータス名
				if (childMap != null)
				{
					subbean.sendMessageString(KKW22301SFConst.STATUS_NM_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("status_nm"));
				}
				else
				{
					subbean.sendMessageString(KKW22301SFConst.STATUS_NM_02, X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// キャンペーン一覧_割引開始日
				if (childMap != null)
				{
					subbean.sendMessageString(KKW22301SFConst.WRIB_STAYMD_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_staymd"));
				}
				else
				{
					subbean.sendMessageString(KKW22301SFConst.WRIB_STAYMD_02, X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// キャンペーン一覧_割引終了日
				if (childMap != null)
				{
					subbean.sendMessageString(KKW22301SFConst.WRIB_ENDYMD_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_endymd"));
				}
				else
				{
					subbean.sendMessageString(KKW22301SFConst.WRIB_ENDYMD_02, X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// キャンペーン一覧_セット割申請経路名
				if (childMap != null)
				{
					subbean.sendMessageString(KKW22301SFConst.WRIB_SHIN_ROUTE_NM_02, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("apply_method_nm"));
				}
				else
				{
					subbean.sendMessageString(KKW22301SFConst.WRIB_SHIN_ROUTE_NM_02, X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// キャンペーン一覧_セット割対象区分
				if (childMap != null)
				{
					String svcInfSysid = subbean2.sendMessageString(KKW22301SFConst.SYSID_01,X31CWebConst.DATABEAN_GET_VALUE);
					String relevantSysid = (String)childMap.get("relevant_sysid");
					if ((null != svcInfSysid && !("".equals(svcInfSysid))) && (null != relevantSysid && !("".equals(relevantSysid))))
					{
						if (svcInfSysid.equals(relevantSysid))
						{
							subbean.sendMessageString(KKW22301SFConst.WRIB_TRGT_DIV_02, X31CWebConst.DATABEAN_SET_VALUE, KKW22301SFConst.WRIB_TRGT_DIV_NM_01);
						}
						else
						{
							subbean.sendMessageString(KKW22301SFConst.WRIB_TRGT_DIV_02, X31CWebConst.DATABEAN_SET_VALUE, KKW22301SFConst.WRIB_TRGT_DIV_NM_02);
						}
					}
					else
					{
						subbean.sendMessageString(KKW22301SFConst.WRIB_TRGT_DIV_02, X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
				}
				else
				{
					subbean.sendMessageString(KKW22301SFConst.WRIB_TRGT_DIV_02, X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// ANK-4195-00-00 ADD END
			}
		}
		return bean;
	}
	// ANK-3521-00-00 2018/12/21 ADD END
}