/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0176_KKSV0176OPDBMapper
*	ソースファイル名：KKSV0176_KKSV0176OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年12月05日
*＜機能概要＞
*	BP（照査前登録（サービス選択）情報変更）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/12/05	FJ		新規作成
*
**********************************************************************/
package eo.web.webview.mapping;

import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.MSKM_KIND_MANSION;

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.JCCWebBusinessLogic;
import eo.web.webview.KKW00121SF.KKW00121SFConst;
import eo.web.webview.KKW00121SF.KKW00121SFLogic;
import eo.web.webview.common.JKKKeiNewCmnLogicUtil;
import eo.web.webview.common.JKKWebCommon;

/**
 * DataBean-BPマッピングをする。
 * @author 富士通
 */
public class KKSV0176_KKSV0176OPDBMapper
{
	
	/**
	 * コンストラクタ
	 */
	public KKSV0176_KKSV0176OPDBMapper()
	{
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：照査前登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return データ格納マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV017601SC(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);

		// 申込年月日
		String mskmY = bean[0].sendMessageString(KKW00121SFConst.MSKM_YMD_Y, X31CWebConst.DATABEAN_GET_VALUE);
		String mskmM = bean[0].sendMessageString(KKW00121SFConst.MSKM_YMD_M, X31CWebConst.DATABEAN_GET_VALUE);
		String mskmD = bean[0].sendMessageString(KKW00121SFConst.MSKM_YMD_D, X31CWebConst.DATABEAN_GET_VALUE);
		String mskmYmd = mskmY + mskmM + mskmD;

		// 受付年月日
		String mskmUkY = bean[0].sendMessageString(KKW00121SFConst.MSKM_UK_DTM_Y, X31CWebConst.DATABEAN_GET_VALUE);
		String mskmUkM = bean[0].sendMessageString(KKW00121SFConst.MSKM_UK_DTM_M, X31CWebConst.DATABEAN_GET_VALUE);
		String mskmUkD = bean[0].sendMessageString(KKW00121SFConst.MSKM_UK_DTM_D, X31CWebConst.DATABEAN_GET_VALUE);
		String mskmUkYmd = mskmUkY + mskmUkM + mskmUkD;

		parentMap.put("mskm_ymd", mskmYmd);
		parentMap.put("mskmsho_ariv_ymd", mskmUkYmd);

		// 申込登録明細
		ArrayList<HashMap<String, Object>> childList = new ArrayList<HashMap<String, Object>>();
		parentMap.put("EKK0011D010CBSMsg1List", childList);
		
		// 申込書番号 → 申込登録マップ.申込登録明細.申込書番号
		HashMap<String, Object> childMap = new HashMap<String, Object>();
		childMap.put("mskmsho_no", bean[0].sendMessageString("申込書番号", X31CWebConst.DATABEAN_GET_VALUE));

		childList.add(childMap);

		outputMap.put("KKSV017601SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：照査前登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return データ格納マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV017602SC(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);

		if (JKKStrConst.CD00682_002.equals(bean[0].sendMessageString("内販外販区分", X31CWebConst.DATABEAN_GET_VALUE))
				&& !"".equals(bean[0].sendMessageString("内販コード", X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 内販コード → お客様＜個人＞登録マップ.内販企業識別コード
			parentMap.put("naihan_comp_skbt_cd", JKKKeiNewCmnLogicUtil.NAIHAN_COMP_SKBT_HUKA_CD + 
					bean[0].sendMessageString("内販コード", X31CWebConst.DATABEAN_GET_VALUE));
		}

		outputMap.put("KKSV017602SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：照査前登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return データ格納マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV017603SC(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);

		if (JKKStrConst.CD00682_002.equals(bean[0].sendMessageString("内販外販区分", X31CWebConst.DATABEAN_GET_VALUE))
				&& !"".equals(bean[0].sendMessageString("内販コード", X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// コード種別コード → コード名称管理一意照会マップ.ＫＥＹ＿コード種別コード
			parentMap.put("key_cd_sbt_cd", "CD00669");
			// 内販コード → コード名称管理一意照会マップ.ＫＥＹ＿コード区分
			parentMap.put("key_cd_div", bean[0].sendMessageString("内販コード", X31CWebConst.DATABEAN_GET_VALUE));
		}

		outputMap.put("KKSV017603SC", parentMap);
						
		return outputMap;
	}
	
	/**
	 * 申込書番号存在チェック一覧照会SCの上りマッピングを行います。
	 * @param bean DataBean
	 * @param outputMap 上りマップ
	 * @param mskmInfoMap 照会マップ
	 * @param func_code 機能コード
	 */
	@SuppressWarnings("unchecked")
	public void setKKSV017604SC(X31SDataBeanAccess bean,
			HashMap<String, Object> outputMap,
			HashMap<String, Object> mskmInfoMap,
			String func_code)
	{
		if (bean == null)
		{
			return;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		if (mskmInfoMap == null)
		{
			return;
		}
		HashMap<String, Object> map01 = (HashMap<String, Object>)mskmInfoMap.get("KKSV008101CC");
		if (map01 == null)
		{
			return;
		}
		ArrayList<HashMap<String, Object>> mskmSvcKeiUcwkList = (ArrayList<HashMap<String, Object>>)map01.get("mskm_svc_kei_ucwk_list");
		if (mskmSvcKeiUcwkList == null || mskmSvcKeiUcwkList.size() == 0)
		{
			return;
		}
		HashMap<String, Object> mskmMap = (HashMap<String, Object>)mskmSvcKeiUcwkList.get(0);
		if (mskmMap == null)
		{
			return;
		}
		ArrayList<HashMap<String, Object>> mskmDtlList = (ArrayList<HashMap<String, Object>>)mskmMap.get("mskm_dtl_list");
		if (mskmDtlList == null || mskmDtlList.size() == 0)
		{
			return;
		}
		HashMap<String, Object> mskmDtlMap = (HashMap<String, Object>)mskmDtlList.get(0);
		if (mskmDtlMap == null)
		{
			return;
		}
		
		String mskmshoNo = bean.sendMessageString(KKW00121SFConst.MSKMSHO_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (!mskmshoNo.equals(mskmDtlMap.get("mskmsho_no")))
		{
			// ＫＥＹ＿申込書番号
			parentMap.put("key_mskmsho_no", mskmshoNo);
		}

		outputMap.put("KKSV017604SC", parentMap);
	}
	
	/**
	 * 工事案件ステータス一覧照会部品の上りマッピングを行います。
	 * @param bean [0]:データBean
	 * @param outputMap 工事案件ステータス一覧照会マップ
	 * @param func_code 機能コード
	 * @param viewLogic ビューロジック
	 * @param usePlaceMap 利用場所情報照会マップ
	 * @return データ格納マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV017601CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, JCCWebBusinessLogic viewLogic,
			HashMap<String, Object> usePlaceMap)
	{
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		X31SDataBeanAccess dataBean = bean[0];
		int[] tabIndexs = {KKW00121SFLogic.KKW00124_TAB_INDEX, KKW00121SFLogic.KKW00125_TAB_INDEX, KKW00121SFLogic.KKW00180_TAB_INDEX};
		X31SDataBeanAccessArray dataBeanArray = dataBean.getDataBeanArray(KKW00121SFConst.SVC_MSKM_INFO);
		String svcKeiNo = "";
		boolean isSvc = false;
		
		for(int index : tabIndexs)
		{
			svcKeiNo = dataBeanArray.getDataBean(index).sendMessageString(KKW00121SFConst.SVC_KEI_NO_22, X31CWebConst.DATABEAN_GET_VALUE);
			
			if (svcKeiNo != null && 0 < svcKeiNo.length())
			{
				isSvc = true;
				break;
			}
		}
		
		// eo光ネット、eo光電話、eo光テレビが存在しない場合、工事案件ステータス一覧照会マップを設定せずに処理を終了する。
		if(!isSvc)
		{
			return outputMap;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 自申込サービス契約番号リスト
		parentMap.put("ji_mskm_svc_kei_no_list", JKKWebCommon.getJiMskmSvcKeiNoList(viewLogic));
		
		ArrayList childList = (ArrayList)usePlaceMap.get("mskm_svc_kei_ucwk_list");
		HashMap childMap = (HashMap)childList.get(0);
		
		// サービス契約回線内訳ステータス
		// 自申込サービス契約番号リスト
		parentMap.put("svc_kei_kaisen_ucwk_stat", childMap.get("kk0251_svc_kei_kaisen_ucwk_stat"));
		
		// サービス契約回線内訳番号
		parentMap.put("svc_kei_kaisen_ucwk_no",
				dataBean.sendMessageString(KKW00121SFConst.KEY_SVC_KEI_KAISEN_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV017601CC", parentMap);
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：照査前登録画面
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return データ格納マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV017605SC(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);

		if (MSKM_KIND_MANSION.equals(bean[0].sendMessageString(KKW00121SFConst.MSKM_KIND, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			String svcStaKiboY = bean[0].sendMessageString(KKW00121SFConst.SVC_STA_KIBO_YMD_Y, X31CWebConst.DATABEAN_GET_VALUE);
			String svcStaKiboM = bean[0].sendMessageString(KKW00121SFConst.SVC_STA_KIBO_YMD_M, X31CWebConst.DATABEAN_GET_VALUE);
			String svcStaKiboD = bean[0].sendMessageString(KKW00121SFConst.SVC_STA_KIBO_YMD_D, X31CWebConst.DATABEAN_GET_VALUE);
			String svcStaKiboYmd = svcStaKiboY + svcStaKiboM + svcStaKiboD;

			// サービス利用開始希望年月日
			parentMap.put("svc_use_sta_kibo_ymd", svcStaKiboYmd);
		}

		outputMap.put("KKSV017605SC", parentMap);
						
		return outputMap;
	}
}