/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CKSV0010_CKSV0010OPDBMapper
*	ソースファイル名：CKSV0010_CKSV0010OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2011年08月10日
*＜機能概要＞
*	BP（お客様情報変更_検索サービス）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/10	Fujitsu		新規作成
*	v4.00.00	2012/07/10	FJ）庭山	【ANK-0384-00-00】対応
*	v8.00.00	2014/03/25	FJ) 石橋	【IT2-2014-0000154】対応
*   v18.00.00   2015/08/11  FJ) 寺園    【ANK-2631-00-00】ワンストップ案件（ＳＴＥＰ１）※koptWebBからkoptWebAへコピー
**********************************************************************/
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.common.constant.JKKStrConst;
import eo.web.webview.CKA90701SF.CKW00401SFConst;

/**
 * DataBean-BPマッピングをする。
 * 
 * <BR>
 * @author 富士通
 */
public class CKSV0010_CKSV0010OPDBMapper 
{
	
	/**
	 * コンストラクタ
	 */
	public CKSV0010_CKSV0010OPDBMapper()
	{
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様情報変更
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV001001SC(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);
		
		X31SDataBeanAccessArray list = null;
		X31SDataBeanAccess subBean = null;
		int selectIndex = 0;
		String str = null;
		
		// 家族認証方法
		list = bean[0].getDataBeanArray(CKW00401SFConst.FAMILY_NINSHO_WAY);
		subBean = list.getDataBean(0);
		
		selectIndex = Integer.parseInt(subBean.sendMessageString(CKW00401SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_GET_VALUE));
		str = subBean.sendMessageString(CKW00401SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, selectIndex);
		
		// 家族認証方法選択肢
		parentMap.put("family_ninsho", str);

		// ファミリーコード／ＰＯＰＩＤ → ファミリー会員グループ一覧照会（グループ入会コード）マップ.ＫＥＹ＿グループ入会コード
		parentMap.put("key_grp_join_cd", bean[0].sendMessageString("ファミリーコード／ＰＯＰＩＤ", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CKSV001001SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様情報変更
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV001002SC(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(CKW00401SFConst.STDARDYMD, X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("CKSV001002SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様情報変更
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV001003SC(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
		parentMap.put("key_pop_id", bean[0].sendMessageString("ファミリーコード／ＰＯＰＩＤ", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CKSV001003SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様情報変更
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV001005SC(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);

		outputMap.put("CKSV001005SC", parentMap);
		
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様情報変更
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV001006SC(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);

		outputMap.put("CKSV001006SC", parentMap);
		
		return outputMap;
	}
	
	/* ++++++++++ v8.00.00 追加開始 ++++++++++ */
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：お客様情報変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV001007SC(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(CKW00401SFConst.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("CKSV001007SC", parentMap);

		return outputMap;
	}
	/* ++++++++++ v8.00.00 追加終了 ++++++++++ */

	/**
	 * 下りマッピング
	 * @param bean　[0]：お客様情報変更
	 * @param outputMap
	 * 
	 * @return bean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCKSV001001SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey("CKSV001001SC"))
		{
			parentMap = (HashMap)outputMap.get("CKSV001001SC");
		}

		ArrayList childList = null;
		if (parentMap.containsKey("ECK0111B003CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("ECK0111B003CBSMsg1List");
			if (childList != null && childList.size() > 0)
			{
				HashMap childMap = (HashMap)childList.get(0);
				
				// お客様情報変更.グループコード ←
				// ファミリー会員グループ一覧照会（グループ入会コード）マップ.ファミリー会員グループ一覧照会（グループ入会コード）明細.グループコード
				bean[0].sendMessageString(CKW00401SFConst.GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_cd"));
				// グループリーダーＳＹＳＩＤ
				bean[0].sendMessageString(CKW00401SFConst.GRP_LEADER_SYSID, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_leader_sysid"));
			}
		}
		
		return bean;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：お客様情報変更
	 * @param outputMap
	 * 
	 * @return bean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCKSV001002SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey("CKSV001002SC"))
		{
			parentMap = (HashMap)outputMap.get("CKSV001002SC");
		}

		ArrayList childList = null;
		if (parentMap.containsKey("ECK0011A010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("ECK0011A010CBSMsg1List");
			if (childList != null && childList.size() > 0)
			{
				HashMap childMap = (HashMap)childList.get(0);
				
				// マスター会員情報の転記
				bean[0].sendMessageString(CKW00401SFConst.MASTER_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("member_sbt_cd"));
				bean[0].sendMessageString(CKW00401SFConst.MASTER_ISP_KSSAI_USE,
											X31CWebConst.DATABEAN_SET_VALUE,
											(String)childMap.get("cont_isp_use_fail_flg"));
			}
		}
		
		return bean;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：お客様情報変更
	 * @param outputMap
	 * 
	 * @return bean
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCKSV001003SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey("CKSV001003SC"))
		{
			parentMap = (HashMap)outputMap.get("CKSV001003SC");
		}

		ArrayList childList = null;
		if (parentMap.containsKey("ECK0111B001CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("ECK0111B001CBSMsg1List");
			if (childList != null && childList.size() > 0)
			{
				HashMap childMap = (HashMap)childList.get(0);
				
				// お客様情報変更.グループコード ← グループリーダー一覧照会（POPID）マップ.グループリーダー一覧照会（POPID）明細.グループコード
				bean[0].sendMessageString(CKW00401SFConst.GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_cd"));
				// グループリーダーＳＹＳＩＤ
				bean[0].sendMessageString(CKW00401SFConst.GRP_LEADER_SYSID, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_leader_sysid"));
			}
		}
		
		return bean;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：お客様情報変更
	 * @param outputMap
	 * 
	 * @return bean
	 */
	@SuppressWarnings("unchecked")
	public int getCKSV001005SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey("CKSV001005SC"))
		{
			parentMap = (HashMap)outputMap.get("CKSV001005SC");
		}

		X31SDataBeanAccess subbean = bean[0].getDataBeanArray(CKW00401SFConst.CUST_KEI_HKTGI_LIST).getDataBean(0);
		String sysid = 	subbean.sendMessageString(CKW00401SFConst.SYSID_05, X31CWebConst.DATABEAN_GET_VALUE);
		int familyCnt = 0;
		
		if (parentMap.containsKey("ECK0011B003CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("ECK0011B003CBSMsg1List");
			
			if (childList != null && childList.size() > 0)
			{
				for (int i = 0; i < childList.size(); i++)
				{
					HashMap childMap = (HashMap)childList.get(i);
					
					String mmbSysid = (String)childMap.get("sysid");
					String mmbSbtCd = (String)childMap.get("member_sbt_cd");
					
					// 自分以外のファミリー会員数をカウント
					if (sysid.equals(mmbSysid))
					{
						continue;
					}
					
					if (JKKStrConst.CD00039_11.equals(mmbSbtCd) || JKKStrConst.CD00039_21.equals(mmbSbtCd))
					{
						familyCnt++;
					}
				}
			}
		}
		
		return familyCnt;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：お客様情報変更
	 * @param outputMap
	 * 
	 * @return bean
	 */
	@SuppressWarnings("unchecked")
	public String getCKSV001006SC(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap)
	{
		HashMap parentMap = null;
		String rtnVal = null;
		if (outputMap.containsKey("CKSV001006SC"))
		{
			parentMap = (HashMap)outputMap.get("CKSV001006SC");
		}

		ArrayList childList = null;
		if (parentMap.containsKey("EZM0321A010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EZM0321A010CBSMsg1List");
			if (childList != null && childList.size() > 0)
			{
				HashMap childMap = (HashMap)childList.get(0);
				
				// 業務パラメータ管理一意照会マップ.業務パラメータ管理一意照会明細.業務パラメータ設定値
				rtnVal = (String)childMap.get("work_param_sette_value");
			}
		}
		
		return rtnVal;
	}

	/* ++++++++++ v8.00.00 追加開始 ++++++++++ */
	/**
	 * 下りマッピング
	 * @param bean　[0]：お客様情報変更
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public boolean getCKSV001007SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		String sysid = "";
		HashMap parentMap = null;
		if(outputMap.containsKey("CKSV001007SC")){
			parentMap = (HashMap)outputMap.get("CKSV001007SC");
		}
		
		//-------------------------------------------------------------------------------------------
		// グループ一覧照会（複合検索）マップ.総検索件数
		// グループ一覧照会（複合検索）マップ.総ページ数
		// グループ一覧照会（複合検索）マップ.検索エラーフラグ
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.グループ入会コード
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.グループ種別コード
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.グループ種別コード名称
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.グループ名
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.お客様名
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.グループ適用開始年月日
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.グループ適用終了年月日
		// グループ一覧照会（複合検索）マップ.グループ一覧照会（複合検索）明細.最終更新年月日時分秒
		// は本処理では使用しない。
		//-------------------------------------------------------------------------------------------

		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(CKW00401SFConst.GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("grp_cd"));
			// お客様情報変更.グループリーダーSYSID ← グループ一覧照会（複合検索）明細.グループリーダーSYSID
			bean[0].sendMessageString(CKW00401SFConst.GRP_LEADER_SYSID, X31CWebConst.DATABEAN_SET_VALUE, sysid);
		}

		if (sysid == null || sysid.length() == 0)
		{
			return true;
		}

		return false;
	}
	/* ++++++++++ v8.00.00 追加終了 ++++++++++ */
}
