/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0781_KKSV0781OPDBMapper
*	ソースファイル名：KKSV0781_KKSV0781OPDBMapper.java
*	作成者			：FJ
*	日付			：2014年01月25日
*＜機能概要＞
*	BP（紹介コード更新初期表示）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v7.00.00	2014/01/25	FJ		新規作成
*	v26.00.00	2016/08/10	FJ)澤田	【ANK-2755-00-00】紹介CP適用漏れ防止
*	v68.00.00	2023/11/07	FJ)北谷	【ANK-4416-00-00】紹介コード、提携先企業向けエントリーコード同時入力対応
**********************************************************************/
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.web.webview.KKW00801SF.KKW00801SFConst;
import eo.web.webview.KKW01033SF.KKW01033SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0781_KKSV0781OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0781_KKSV0781OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：紹介コード更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV078101SC(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);

		// 被紹介者お客さまＩＤ → サービス契約一意照会マップ.被紹介者お客さまID
		parentMap.put("hi_svc_kei_no", bean[0].sendMessageString("被紹介者お客さまＩＤ", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV078101SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：紹介コード更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setcommonInfoCC(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);

		// 被紹介者お客さまＩＤ → サービス契約照会画面共通情報CC.サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString("被紹介者お客さまＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// 異動区分 → サービス契約照会画面共通情報CC.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("commonInfoCC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：紹介コード更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setIntrInfoCfmCC(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);

		// 被紹介者お客さまＩＤ → 紹介コード更新CC.被紹介者お客さまID
		parentMap.put("hi_svc_kei_no", bean[0].sendMessageString("被紹介者お客さまＩＤ", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("IntrInfoCfmCC", parentMap);
						
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：紹介コード更新
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getIntrInfoCfmCC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("IntrInfoCfmCC")){
			parentMap = (HashMap)outputMap.get("IntrInfoCfmCC");
		}

		
		// 更新前紹介者お客さまＩＤ ← 紹介コード更新CC.紹介者お客さまID
		if (parentMap != null) {
			bean[0].sendMessageString("更新前紹介者お客さまＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sho_svc_kei_no"));
		} else {
			bean[0].sendMessageString("更新前紹介者お客さまＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
		}
		// 更新前紹介者ＳＹＳＩＤ ← 紹介コード更新CC.紹介者SYSID
		if (parentMap != null) {
			bean[0].sendMessageString("更新前紹介者ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sho_sysid"));
		} else {
			bean[0].sendMessageString("更新前紹介者ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
		}
		// 更新前紹介者料金グループ名 ← 紹介コード更新CC.紹介者料金グループ名
		if (parentMap != null) {
			bean[0].sendMessageString("更新前紹介者料金グループ名", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sho_prg_grp_nm"));
		} else {
			bean[0].sendMessageString("更新前紹介者料金グループ名", X31CWebConst.DATABEAN_SET_VALUE, new String());
		}
		// 更新前紹介者契約者名 ← 紹介コード更新CC.紹介者契約者名
		if (parentMap != null) {
			bean[0].sendMessageString("更新前紹介者契約者名", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sho_cust_nm"));
		} else {
			bean[0].sendMessageString("更新前紹介者契約者名", X31CWebConst.DATABEAN_SET_VALUE, new String());
		}
		// 紹介コード ← 紹介コード更新CC.紹介コード
		if (parentMap != null) {
			bean[0].sendMessageString("紹介コード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("intr_cd"));
		} else {
			bean[0].sendMessageString("紹介コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
		}
		// ANK-2755-00-00 2016/08/10 ADD START
		// 紹介キャンペーンコード存在フラグを設定
		if ((String)parentMap.get("intr_cd") != null) {
			bean[0].sendMessageBoolean("紹介キャンペーンコード存在フラグ", X31CWebConst.DATABEAN_SET_VALUE, true);
		} else {
			bean[0].sendMessageBoolean("紹介キャンペーンコード存在フラグ", X31CWebConst.DATABEAN_SET_VALUE, false);
		}
		// ANK-2755-00-00 2016/08/10 ADD END
		// ANK-4416-00-00 ADD START
		// クーポンコード ← 紹介コード更新CC.クーポンコード
		if (parentMap != null) {
			bean[0].sendMessageString("クーポンコード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("coupon_cd"));
		} else {
			bean[0].sendMessageString("クーポンコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
		}
		// クーポンキャンペーンコード存在フラグを設定
		if ((String)parentMap.get("coupon_cd") != null) {
			bean[0].sendMessageBoolean("クーポンキャンペーンコード存在フラグ", X31CWebConst.DATABEAN_SET_VALUE, true);
		} else {
			bean[0].sendMessageBoolean("クーポンキャンペーンコード存在フラグ", X31CWebConst.DATABEAN_SET_VALUE, false);
		}
		// ANK-4416-00-00 ADD END
		
		return bean;
	}
	// ANK-2755-00-00 2016/08/10 ADD START
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：紹介コード更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV078103SC(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);

		// サービス契約番号 → サービス契約一意照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("被紹介者お客さまＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// 世代登録年月日時分秒 → サービス契約一意照会マップ.ＫＥＹ＿世代登録年月日時分秒
		//parentMap.put("key_gene_add_dtm", bean[0].sendMessageString("世代登録年月日時分秒", X31CWebConst.DATABEAN_GET_VALUE));
		// 予約適用年月日 → サービス契約一意照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", OpeDate);

		outputMap.put("KKSV078103SC", parentMap);

		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：紹介コード更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV022901CCKKW01033(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(null==bean || bean.length != 1){
			return null;
		}
		X31SDataBeanAccess sfBean=bean[0];
		// SFBean書き出し
		BeanMap beanMap = Mover.getBeanMapFromDataBean(sfBean, KKW01033SFConst.SFBEAN);
		// 顧客契約引継リスト
		ArrayList<BeanMap> custKeiHktgiList = (ArrayList<BeanMap>)beanMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		BeanMap custKeiHktgi=custKeiHktgiList.get(0);
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// ＳＹＳＩＤ
		parentMap.put("sysid",custKeiHktgi.take(JKKCommonConst.HKTGI_SYSID));
		// サービス契約番号
		parentMap.put("svc_kei_no",custKeiHktgi.take(JKKCommonConst.HKTGI_SVC_KEI_NO));
		// 異動区分
		parentMap.put("ido_div",custKeiHktgi.take(JKKCommonConst.HKTGI_IDO_DIV));

		// 選択変更
		parentMap.put("selectedChange", beanMap.take("選択変更"));
		
		outputMap.put("KKSV022901CC", parentMap);
						
		return outputMap;
	}
	/**
	 * 下りマッピング
	 * @param bean　[0]：紹介コード更新
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV078103SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV078103SC")){
			parentMap = (HashMap)outputMap.get("KKSV078103SC");
		}

		ArrayList childList = null;

		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_kei_stat"));
				} else {
					bean[0].sendMessageString("サービス契約ステータス", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				// サービスコード ← サービス契約一意照会マップ.サービス契約共通情報一覧照会明細.サービスコード
				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());
				}
				
				// 料金グループコード ← サービス契約一意照会マップ.サービス契約共通情報一覧照会明細.料金グループコード
				if (childMap != null) {
					bean[0].sendMessageString("料金グループコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prc_grp_cd"));
				} else {
					bean[0].sendMessageString("料金グループコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				// 料金コースコード ← サービス契約一意照会マップ.サービス契約共通情報一覧照会明細.料金コースコード
				if (childMap != null) {
					bean[0].sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcrs_cd"));
				} else {
					bean[0].sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				// 料金プランコード ← サービス契約一意照会マップ.サービス契約共通情報一覧照会明細.料金プランコード
				if (childMap != null) {
					bean[0].sendMessageString("料金プランコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd"));
				} else {
					bean[0].sendMessageString("料金プランコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}

		return bean;
	}
	
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：紹介コード更新
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV078105SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV078105SC")){
			parentMap = (HashMap)outputMap.get("KKSV078105SC");
		}

		ArrayList childList = null;

		childList = null;
		if(parentMap != null && parentMap.containsKey("EKK0011A010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK0011A010CBSMsg1List");
			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("mskm_ymd"));
				} else {
					bean[0].sendMessageString("申込年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}

		return bean;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：紹介コード更新画面
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV078106SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		if(!outputMap.containsKey("KKSV078106SC")) 
		{
			return bean;
		}

		HashMap parentMap = (HashMap)outputMap.get("KKSV078106SC");
		
		if (!parentMap.containsKey("EKK2311B502CBSMsg1List")) 
		{
			return bean;
		}

		ArrayList childList = (ArrayList)parentMap.get("EKK2311B502CBSMsg1List");

		if (childList.size() == 0) 
		{
			return bean;
		}
		
		HashMap childMap = (HashMap)childList.get(0);
		
		if (parentMap != null) {
			bean[0].sendMessageString("表示用キャンペーンコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dsp_campaign_cd"));
		}
		
		if (parentMap != null) {
			bean[0].sendMessageString("割引サービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_cd"));
		}
		
		if (parentMap != null) {
			bean[0].sendMessageString("割引サービス名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_nm"));
		}
		
		return bean;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：紹介コード更新
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV078107SC(X31SDataBeanAccess[] bean,
			HashMap outputMap) {

		HashMap parentMap = null;
		if (outputMap.containsKey("KKSV078107SC")) {
			parentMap = (HashMap) outputMap.get("KKSV078107SC");
		}

		if (parentMap != null
				&& parentMap.containsKey("EKK0451B010CBSMsg1List")) {
			ArrayList childList = (ArrayList) parentMap
					.get("EKK0451B010CBSMsg1List");

			//対象の紹介キャンペーンが登録済の場合
			if (childList != null && childList.size() > 0) {
				bean[0].sendMessageBoolean("割引サービスコード存在フラグ",
						X31CWebConst.DATABEAN_SET_VALUE, true);
			//対象の紹介キャンペーンが未録済の場合
			} else {
				bean[0].sendMessageBoolean("割引サービスコード存在フラグ",
						X31CWebConst.DATABEAN_SET_VALUE, false);
				//表示用キャンペーンコードを初期化
				bean[0].sendMessageString("表示用キャンペーンコード", X31CWebConst.DATABEAN_SET_VALUE,  new String());
				//割引サービスコードを初期化
				bean[0].sendMessageString("割引サービスコード", X31CWebConst.DATABEAN_SET_VALUE,  new String());
				//割引サービス名称を初期化
				bean[0].sendMessageString("割引サービス名称", X31CWebConst.DATABEAN_SET_VALUE,  new String());
			}
		}

		return bean;
	}

	// ANK-2755-00-00 2016/08/10 ADD END
	
	// ANK-4416-00-00 ADD START
	/**
	 * 下りマッピング
	 * @param bean　[0]：紹介コード更新画面
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV078108SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		if(!outputMap.containsKey("KKSV078108SC")) 
		{
			return bean;
		}

		HashMap parentMap = (HashMap)outputMap.get("KKSV078108SC");
		
		if (!parentMap.containsKey("EKK2311B502CBSMsg1List")) 
		{
			return bean;
		}

		ArrayList childList = (ArrayList)parentMap.get("EKK2311B502CBSMsg1List");

		if (childList.size() == 0) 
		{
			return bean;
		}
		
		HashMap childMap = (HashMap)childList.get(0);
		
		if (parentMap != null) {
			bean[0].sendMessageString("表示用キャンペーンコード2", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dsp_campaign_cd"));
		}
		
		if (parentMap != null) {
			bean[0].sendMessageString("割引サービスコード2", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_cd"));
		}
		
		if (parentMap != null) {
			bean[0].sendMessageString("割引サービス名称2", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_nm"));
		}
		
		return bean;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：紹介コード更新
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV078109SC(X31SDataBeanAccess[] bean,
			HashMap outputMap) {

		HashMap parentMap = null;
		if (outputMap.containsKey("KKSV078109SC")) {
			parentMap = (HashMap) outputMap.get("KKSV078109SC");
		}

		if (parentMap != null
				&& parentMap.containsKey("EKK0451B010CBSMsg1List")) {
			ArrayList childList = (ArrayList) parentMap
					.get("EKK0451B010CBSMsg1List");

			//対象のクーポンキャンペーンが登録済の場合
			if (childList != null && childList.size() > 0) {
				bean[0].sendMessageBoolean("割引サービスコード存在フラグ2",
						X31CWebConst.DATABEAN_SET_VALUE, true);
			//対象のクーポンキャンペーンが未録済の場合
			} else {
				bean[0].sendMessageBoolean("割引サービスコード存在フラグ2",
						X31CWebConst.DATABEAN_SET_VALUE, false);
				//表示用キャンペーンコードを初期化
				bean[0].sendMessageString("表示用キャンペーンコード2", X31CWebConst.DATABEAN_SET_VALUE,  new String());
				//割引サービスコードを初期化
				bean[0].sendMessageString("割引サービスコード2", X31CWebConst.DATABEAN_SET_VALUE,  new String());
				//割引サービス名称を初期化
				bean[0].sendMessageString("割引サービス名称2", X31CWebConst.DATABEAN_SET_VALUE,  new String());
			}
		}

		return bean;
	}
	// ANK-4416-00-00 ADD END

}