/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV1002_KKSV1002OPDBMapper
*	ソースファイル名：KKSV1002_KKSV1002OPDBMapper.java
*	作成者			：GDC)J.Hortilano
*	日付			：2022年06月20日
*＜機能概要＞
*	BP（取扱コードマスタ一覧照会検索）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン   修正日       修正者                   修正内容
*   v58.00.00   2022/06/14   GDC)J.Hortilano         ANK-3846-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.KKW01605SF.KKW01605SFConst;
import eo.web.webview.common.JCCWebCommon;

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

	/** 一時金一覧照会ページング_検索処理パターン */
	private static final String PAGING_SEARCH_PATTERN = "1";

	/** 検索処理パターン */
	private static final String SEARCH_TYPE = "search_type";
	/** 最大検索件数 */
	private static final String MAX_SEARCH_NUM = "max_search_num";
	/** 表示件数 */
	private static final String DISPLAY_NUM = "display_num";
	/** 表示ページ番号 */
	private static final String DISPLAY_PAGE_NUM = "display_page_num";
	/** 処理区分 */
	private static final String TRAN_DIV = "tran_div";
	/** お客様名カナ */
	private static final String CUST_KANA = "cust_kana";
	/** 請求契約番号 */
	private static final String SEIKY_KEI_NO = "seiky_kei_no";
	/** 共通ヘッダーＳＹＳＩＤ */
	private static final String H_SYSID = "h_sysid";
	/** 未来請求契約有無 */
	private static final String FUTURE_SEIKY_KEI_UM = "future_seiky_kei_um";
	/** オーソリ情報登録結果 */
	private static final String AUTHORI_INFO_ADD_RSLT = "authori_info_add_rslt";
	/** お客さまＩＤ*/
	private static final String SVC_KEI_NO = "svc_kei_no";
	/** 契約サービス名称 */
	private static final String SVC_KEI_NM = "svc_kei_nm";
	/** 料金コース名称 */
	private static final String PCRS_NM = "pcrs_nm";
	/** 利用場所住所 */
	private static final String USE_PLACE = "use_place";
	/** 契約状態 */
	private static final String SVC_KEI_STAT = "svc_kei_stat";
	/** ＳＹＳＩＤ */
	private static final String SYSID = "sysid";
	/** 識別ＩＤ */
	private static final String SKBT_ID = "skbt_id";
	/** 状況 */
	private static final String JOKYO = "jokyo";
	/** ＩＶＲ結果 */
	private static final String IVR_RSLT = "ivr_rslt";
	/** ｅｏ顧客結果 */
	private static final String EO_CUST_RSLT = "eo_cust_rslt";
	/** カード預りＩＤ */
	private static final String CARD_AZKRI_ID = "card_azkri_id";
	/** 電話番号 */
	private static final String TELNO = "telno";
	/** 着信日時 */
	private static final String INCOMING_DATE = "incoming_date";
	/** 処理実行日時 */
	private static final String TRAN_RUN_DATE = "tran_run_date";
	/** 受付番号 */
	private static final String UK_NO = "uk_no";
// ANK-3846-00-00 ADD START
	/** 支払方法名称 */
	private static final String PAYWAY_NM = "payway_nm";
// ANK-3846-00-00 ADD END
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV100201CC(X31SDataBeanAccess[] bean, HashMap outputMap) 
	{
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 検索処理パターン
		parentMap.put(SEARCH_TYPE, PAGING_SEARCH_PATTERN);
		// 最大検索件数
		String maxShowCnt = JCCWebCommon.getSearchConst("KKW01605_MAX_SHOW_CNT");
		parentMap.put(MAX_SEARCH_NUM, maxShowCnt);
		// 最大検索件数
		String dispNum = JCCWebCommon.getSearchConst("KKW01605_ROW_PER_PAGE");
		parentMap.put(DISPLAY_NUM, dispNum);
		// 	表示ページ番号
		parentMap.put(DISPLAY_PAGE_NUM, "1");


		String tranDiv = bean[0].sendMessageString(KKW01605SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		String seikyKeiNo = bean[0].sendMessageString(KKW01605SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String custKana = bean[0].sendMessageString(KKW01605SFConst.CUST_KANA, X31CWebConst.DATABEAN_GET_VALUE);
		String HSysid = bean[0].sendMessageString(KKW01605SFConst.H_SYSID, X31CWebConst.DATABEAN_GET_VALUE);

		parentMap.put(TRAN_DIV, tranDiv);
		parentMap.put(SEIKY_KEI_NO, seikyKeiNo);
		parentMap.put(CUST_KANA, custKana);
		parentMap.put(H_SYSID, HSysid);
		
		// ＩＶＲ情報登録状況確認マップ
		outputMap.put("KKSV100201CC", parentMap);
		
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV100201CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV100201CC")){
			parentMap = (HashMap)outputMap.get("KKSV100201CC");
		}

//		bean[0].sendMessageString("処理区分", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get(TRAN_DIV));
//		bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get(SEIKY_KEI_NO));
//		bean[0].sendMessageString("お客様名カナ", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get(CUST_KANA));
//		bean[0].sendMessageString("共通ヘッダーＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get(H_SYSID));
		bean[0].sendMessageString("未来請求契約有無", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get(FUTURE_SEIKY_KEI_UM));
		bean[0].sendMessageString("オーソリ情報登録結果", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get(AUTHORI_INFO_ADD_RSLT));
// ANK-3846-00-00 ADD START
		bean[0].sendMessageString(KKW01605SFConst.SEIKY_WAY, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get(PAYWAY_NM));
// ANK-3846-00-00 ADD END
		
		ArrayList childList = null;

		// サービス契約リスト (svc_kei_list)
		X31SDataBeanAccessArray svcKeiList = bean[0].getDataBeanArray("サービス契約リスト");

		if (null != svcKeiList && null != parentMap)
		{
			svcKeiList.clearArray();
			
			childList = (ArrayList)parentMap.get("svc_kei_list");

			if (null != childList && childList.size() > 0)
			{
				for (int i = 0; i < childList.size(); i++)
				{
					X31SDataBeanAccess subbean = null;

					if (svcKeiList.getCount() - 1 >= i)
					{
						subbean = svcKeiList.getDataBean(i);
					}
					else
					{
						subbean = svcKeiList.addDataBean();
					}

					HashMap childMap = (HashMap)childList.get(i);
					if (subbean == null)
					{
						continue;
					}

					// 表示制御値
					String dspCntrlValue = "even";
					if (i % 2 == 0)
					{
						dspCntrlValue = "odd";
					} 

					if (childMap != null)
					{
						subbean.sendMessageString("お客さまＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(SVC_KEI_NO));
						subbean.sendMessageString("契約サービス名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(SVC_KEI_NM));
						subbean.sendMessageString("料金コース名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(PCRS_NM));
						subbean.sendMessageString("利用場所住所", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(USE_PLACE));
						subbean.sendMessageString("契約状態", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(SVC_KEI_STAT));
						subbean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(SYSID));
						subbean.sendMessageString("スタイル制御", X31CWebConst.DATABEAN_SET_VALUE, dspCntrlValue);

					}
					else
					{
						subbean.sendMessageString("お客さまＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("契約サービス名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("料金コース名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("利用場所住所", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("契約状態", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("スタイル制御", X31CWebConst.DATABEAN_SET_VALUE, dspCntrlValue);
					}
				}

			}
		}

		// サービス契約リスト (svc_kei_list)
		X31SDataBeanAccessArray cardksIvrjkList = bean[0].getDataBeanArray("カード決済ＩＶＲ状況リスト");

		if (null != cardksIvrjkList && null != parentMap)
		{
			cardksIvrjkList.clearArray();
			
			childList = (ArrayList)parentMap.get("cardks_ivrjk_list");

			if (null != childList && childList.size() > 0)
			{
				for (int i = 0; i < childList.size(); i++)
				{
					X31SDataBeanAccess subbean = null;

					if (cardksIvrjkList.getCount() - 1 >= i)
					{
						subbean = cardksIvrjkList.getDataBean(i);
					}
					else
					{
						subbean = cardksIvrjkList.addDataBean();
					}

					HashMap childMap = (HashMap)childList.get(i);
					if (subbean == null)
					{
						continue;
					}

					// 表示制御値
					String dspCntrlValue = "even";
					if (i % 2 == 0)
					{
						dspCntrlValue = "odd";
					} 

					if (childMap != null)
					{
						subbean.sendMessageString("識別ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(SKBT_ID));
						subbean.sendMessageString("状況", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(JOKYO));
						subbean.sendMessageString("ＩＶＲ結果", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(IVR_RSLT));
						subbean.sendMessageString("ｅｏ顧客結果", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(EO_CUST_RSLT));
						subbean.sendMessageString("カード預りＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(CARD_AZKRI_ID));
						subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(TELNO));
						subbean.sendMessageString("着信日時", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(INCOMING_DATE));
						subbean.sendMessageString("処理実行日時", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(TRAN_RUN_DATE));
						subbean.sendMessageString("受付番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get(UK_NO));
						subbean.sendMessageString("スタイル制御", X31CWebConst.DATABEAN_SET_VALUE, dspCntrlValue);

					}
					else
					{
						subbean.sendMessageString("識別ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("状況", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("ＩＶＲ結果", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("ｅｏ顧客結果", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("カード預りＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("着信日時", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("処理実行日時", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("受付番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
						subbean.sendMessageString("スタイル制御", X31CWebConst.DATABEAN_SET_VALUE, dspCntrlValue);
					}
				}

			}

		}

		return bean;
	}
}