/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CKSV0006_CKSV0006OPDBMapper
*	ソースファイル名：CKSV0006_CKSV0006OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2011年09月20日
*＜機能概要＞
*	BP（お客様情報登録_検索OP）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/20	Fujitsu		新規作成
*	v4.00.01	2012/12/10	FJ）庭山	【IT1-2012-0002197】対応
*	v4.00.02	2012/12/21	FJ）庭山	【IT1-2012-0002526】対応
*	v8.00.00	2014/03/26	FJ）石橋	【IT2-2014-0000154】対応
**********************************************************************/
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 eo.common.util.JPCUtilCommon;
import eo.common.util.JZMCommonUtil;
import eo.web.webview.CKW00201SF.CKW00201SFConst;
import eo.web.webview.common.JCKCommonConst;
import eo.web.webview.common.JCKWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class CKSV0006_CKSV0006OPDBMapper {
	
	/** ＫＥＹ＿機能コード："1"グループ入会コード検索 */
	private static final String KEY_GRP_JOIN_CD_SEARCH = "1";
	
	/**
	 * コンストラクタ
	 */
	public CKSV0006_CKSV0006OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様情報登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV000601SC(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);

		// ファミリーコード／POPID → ファミリー会員グループ一覧照会（グループ入会コード）マップ.ＫＥＹ＿グループ入会コード
		parentMap.put("key_grp_join_cd", bean[0].sendMessageString(CKW00201SFConst.FAMILY_CD_POPID, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CKSV000601SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様情報登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV000602SC(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_rsv_aply_ymd", bean[0].sendMessageString(CKW00201SFConst.OPEDATE, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CKSV000602SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様情報登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV000603SC(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);

		// ファミリーコード／POPID → グループリーダー一覧照会（POPID）マップ.ＫＥＹ＿POPID
		parentMap.put("key_pop_id", bean[0].sendMessageString(CKW00201SFConst.FAMILY_CD_POPID, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CKSV000603SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様情報登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param familyNinshoWay
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV000605SC(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);
		
		// ファミリー会員登録件数照会（PMP連携用）＿ファミリーコードマップ.ＫＥＹ＿機能コード
		parentMap.put("key_func_code", func_code);
		
		if (KEY_GRP_JOIN_CD_SEARCH.equals(func_code))
		{
			// ファミリーコード／ＰＯＰＩＤ → ファミリー会員登録件数照会（PMP連携用）＿ファミリーコードマップ.ＫＥＹ＿グループ入会コード
			parentMap.put("key_grp_join_cd", bean[0].sendMessageString(CKW00201SFConst.FAMILY_CD_POPID, X31CWebConst.DATABEAN_GET_VALUE));
		}
		else
		{
			// ファミリーコード／ＰＯＰＩＤ → ファミリー会員登録件数照会（PMP連携用）＿ＰＯＰＩＤマップ.ＫＥＹ＿ＰＯＰＩＤ
			parentMap.put("key_pop_id", bean[0].sendMessageString(CKW00201SFConst.FAMILY_CD_POPID, X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		outputMap.put("CKSV000605SC", parentMap);
						
		return outputMap;
	}

	/* ++++++++++ v8.00.00 追加開始 ++++++++++ */
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様情報登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV000606SC(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);

		// ファミリーコード／POPID → ファミリー会員グループ一覧照会（グループ入会コード）マップ.ＫＥＹ＿グループ入会コード
		parentMap.put("key_grp_join_cd", bean[0].sendMessageString(CKW00201SFConst.FAMILY_CD_POPID, X31CWebConst.DATABEAN_GET_VALUE));
		// ソート項目No(8:世代登録年月日時分秒)
		parentMap.put("key_sort_item_no", "8");
		// ソート区分(2:降順)
		parentMap.put("key_sort_kbn", "2");
		// 最大検索件数
		parentMap.put("max_search_num", "1");
		// 表示件数
		parentMap.put("display_num", "1");
		// 表示ページ番号
		parentMap.put("display_page_num", "1");
		
		outputMap.put("CKSV000606SC", parentMap);

		return outputMap;
	}
	/* ++++++++++ v8.00.00 追加終了 ++++++++++ */

	/**
	 * 下りマッピング
	 * @param bean　[0]：お客様情報登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public boolean getCKSV0006WORK01(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = (HashMap)outputMap.get("CKSV0006WORK01");
		String sysid = (String)parentMap.get("grp_leader_sysid");
		
		if (sysid == null || sysid.length() == 0)
		{
			return true;
		}
		
		// グループコード
		bean[0].sendMessageString(CKW00201SFConst.GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("grp_cd"));
		// マスタ会員＿ＳＹＳＩＤ
		bean[0].sendMessageString(CKW00201SFConst.MASTER_SYSID, X31CWebConst.DATABEAN_SET_VALUE, sysid);
		
		return false;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：お客様情報登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCKSV000602SC(X31SDataBeanAccess[] bean, HashMap outputMap){
		
		HashMap parentMap = null;
		if(outputMap.containsKey("CKSV000602SC")){
			parentMap = (HashMap)outputMap.get("CKSV000602SC");
		}
		
		ArrayList childList = null;
		
		if(parentMap.containsKey("ECK0011A010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("ECK0011A010CBSMsg1List");
			
			HashMap childMap = (HashMap)childList.get(0);
			
			String strPcd = (String)childMap.get("keisha_pcd");
			
			// お客様情報登録.コンテンツお客様郵便番号 ← お客様一意照会マップ.契約者郵便番号
			bean[0].sendMessageString(CKW00201SFConst.CONT_CUST_PCD, X31CWebConst.DATABEAN_SET_VALUE, strPcd);
			
			if(strPcd != null && strPcd.length() == 7){
				bean[0].sendMessageString(CKW00201SFConst.CONT_CUST_PCD_KAMI3, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toTopThreeDigitFromPcd(strPcd));
				bean[0].sendMessageString(CKW00201SFConst.CONT_CUST_PCD_SHIMO4, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toUnderFourDigitFromPcd(strPcd));
			}
			
			String[] adInf = JZMCommonUtil.getPtn04((String)childMap.get("keisha_state_nm"),
													(String)childMap.get("keisha_city_nm"),
													(String)childMap.get("keisha_oaztsu_nm"),
													(String)childMap.get("keisha_azcho_nm"),
													(String)childMap.get("keisha_bnchigo"),
													(String)childMap.get("keisha_adrttm"),
													(String)childMap.get("keisha_adrrm"));
			
			// お客様情報登録.コンテンツお客様住所（都道府県／市区町村名称） ← お客様一意照会マップ.契約者都道府県名 + 契約者市区町村名
			bean[0].sendMessageString(CKW00201SFConst.CONT_CUST_AD_STATE_CITY, X31CWebConst.DATABEAN_SET_VALUE, adInf[0]);
			// お客様情報登録.コンテンツお客様住所（上記以外） ← お客様一意照会マップ.契約者大字通称名 + 契約者字丁目名 + 契約者番地号
			bean[0].sendMessageString(CKW00201SFConst.CONT_CUST_AD_OTHER, X31CWebConst.DATABEAN_SET_VALUE, adInf[1]);
			// お客様情報登録.コンテンツお客様住所（マンション名等） ← お客様一意照会マップ.契約者住所補記・建物名 + 契約者住所補記・部屋番号
			bean[0].sendMessageString(CKW00201SFConst.CONT_CUST_AD_MANS, X31CWebConst.DATABEAN_SET_VALUE, adInf[2]);
			
			//-------------------------------------------------------------
			// 取得値で会員種別プルダウン内の項目を選択
			// 
			// マスター会員（個人）= 11:ファミリー会員（個人）
			// マスター会員（法人）= 21:ファミリー会員（法人）
			//-------------------------------------------------------------
			String selectItemName = "";
			
			// お客様一意照会マップ.会員種別コード
			String memberSbtCd = (String)childMap.get("member_sbt_cd");
			
			// 取得会員種別コードがマスター会員（個人）
			if (JCKCommonConst.CD00039_MASTER_KOJIN.equals(memberSbtCd))
			{
				selectItemName = JCKCommonConst.CD00039_FAMILY_KOJIN;
			}
			// 取得会員種別コードがマスター会員（法人）
			else if(JCKCommonConst.CD00039_MASTER_HOJIN.equals(memberSbtCd))
			{
				selectItemName = JCKCommonConst.CD00039_FAMILY_HOJIN;
			}
			
			// 会員種別プルダウン
			X31SDataBeanAccess subBean = bean[0].getDataBeanArray(CKW00201SFConst.MEMBER_SBT).getDataBean(0);
			String idx = JCKWebCommon.getPullDownIndex(bean[0], selectItemName, CKW00201SFConst.MEMBER_SBT, CKW00201SFConst.CD_DIV_CD_LIST_01);
			subBean.sendMessageString(CKW00201SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, idx);
		}
		
		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：お客様情報登録
	 * @param outputMap
	 * @param flg
	 */
	@SuppressWarnings("unchecked")
	public boolean getCKSV000605SC(X31SDataBeanAccess[] bean, HashMap outputMap, boolean flg)
	{
		String maxCnt = "0";
		String familyCnt = "0";
		HashMap parentMap = null;
		if(outputMap.containsKey("CKSV000605SC"))
		{
			parentMap = (HashMap)outputMap.get("CKSV000605SC");
		}
		
		if(parentMap.containsKey("ECK0121B030CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("ECK0121B030CBSMsg1List");
			
			if(0 < childList.size())
			{
				HashMap childMap = (HashMap)childList.get(0);
				
				// お客様情報登録.ファミリー会員数 ← ファミリー会員登録件数照会（PMP連携用）マップ.ファミリー会員登録件数リスト.ファミリー会員数
				familyCnt = (String)childMap.get("family_cnt");
			}
		}
		
		// ファミリー会員（個人）
		if (flg)
		{
			// ファミリー会員＿個人＿登録上限数
			maxCnt = bean[0].sendMessageString(CKW00201SFConst.FAMILY_KJ_ADD_LIMIT, X31CWebConst.DATABEAN_GET_VALUE);
		}
		// ファミリー会員（法人）
		else
		{
			// ファミリー会員＿法人＿登録上限数
			maxCnt = bean[0].sendMessageString(CKW00201SFConst.FAMILY_HJ_ADD_LIMIT, X31CWebConst.DATABEAN_GET_VALUE);
		}
		
		// ファミリー会員数 = ファミリー会員＿個人＿登録上限数
		if(Integer.parseInt(familyCnt) >= Integer.parseInt(maxCnt))
		{
			return true;
		}
		
		return false;
	}

	/* ++++++++++ v8.00.00 追加開始 ++++++++++ */
	/**
	 * 下りマッピング
	 * @param bean　[0]：お客様情報登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public boolean getCKSV000606SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		String sysid = "";
		HashMap parentMap = null;
		if(outputMap.containsKey("CKSV000606SC")){
			parentMap = (HashMap)outputMap.get("CKSV000606SC");
		}
		
		//-------------------------------------------------------------------------------------------
		// グループ一覧照会（複合検索）マップ.総検索件数
		// グループ一覧照会（複合検索）マップ.総ページ数
		// グループ一覧照会（複合検索）マップ.検索エラーフラグ
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.グループ入会コード
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.グループ種別コード
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.グループ種別コード名称
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.グループ名
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.お客様名
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.グループ適用開始年月日
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.グループ適用終了年月日
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.最終更新年月日時分秒
		// は本処理では使用しない。
		//-------------------------------------------------------------------------------------------

		ArrayList childList = null;
		
		if(parentMap.containsKey("ECK0111B070CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("ECK0111B070CBSMsg1List");
			
			HashMap childMap = (HashMap)childList.get(0);

			sysid = (String)childMap.get("grp_leader_sysid");

			// お客様情報登録.グループコード ← グループ一覧照会（複合検索）明細.グループコード
			bean[0].sendMessageString(CKW00201SFConst.GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_cd"));
			// お客様情報登録.マスタ会員_SYSID ← グループ一覧照会（複合検索）明細.グループリーダーSYSID
			bean[0].sendMessageString(CKW00201SFConst.MASTER_SYSID, X31CWebConst.DATABEAN_SET_VALUE, sysid);
		}

		if (sysid == null || sysid.length() == 0)
		{
			return true;
		}

		return false;
	}
	/* ++++++++++ v8.00.00 追加終了 ++++++++++ */
}
