/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0337_FUSV0337OPDBMapper
*	ソースファイル名：FUSV0337_FUSV0337OPDBMapper.java
*	作成者			：FJ
*	日付			：2020年09月01日
*＜機能概要＞
*	BP（マンション情報チェック）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2020/09/01	FJ		    新規作成
*   v60.00      2022/06/20  FJ）美濃原  【ANK-4244-00-00】【eo定期】MT既設賃貸対応
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.HashMap;

import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JFUStrConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW00134SF.FUW00134SFConst;
import eo.web.webview.FUW00165SF.FUW00165SFConst;
import eo.web.webview.FUW10401SF.FUW10401SFConst;
import eo.web.webview.common.JFUGetManmosKanri;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをする。
 *
 */
public class FUSV0337_FUSV0337OPDBMapper
{

	/** FUSV033701CC */
	private static final String FUSV033701CC = "JFUGetManmosKanriInfoCC";

	/** 機能コード */
	private static final String FUNC_CODE = "func_code";
	/** ＫＥＹ＿P-ID */
	private static final String KEY_PID = "key_pid";
	/** ＫＥＹ＿ＳＥＱ */
	private static final String KEY_SEQ = "key_seq";
	/** 棟（画面選択値）※画面選択INDEXではなく実際の値 */
	private static final String SELECT_TOU_NO = "select_tou_no";
	/** 部屋（画面選択値）※画面選択INDEXではなく実際の値  */
	private static final String SELECT_RM_NO = "select_rm_no";
	/** 光化マンションフラグ */
	private static final String HIKARIKA_MANS_FLG = "hikarika_mans_flg";

	/**
	 * コンストラクタ
	 */
	public FUSV0337_FUSV0337OPDBMapper()
	{
	}

	/**
	 * MT管理情報照会(MANMOS)照会CCの上りマッピングをします。
	 * 
	 * @param bean データBean
	 * @param outputMap アウトマップ
	 * @param func_code 機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV033701CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		// 光化マンションフラグ
		String hikarikaMansFlg = bean[2].sendMessageString(CommonInfoCFConst.HIKARIKA_MANS_FLG_16, X31CWebConst.DATABEAN_GET_VALUE);
		if (!JFUStrConst.HIKARIKA_MANS_FLG_1.equals(hikarikaMansFlg))
		{
			return outputMap;
		}

		// 部屋番号
		String selRmNo = JFUStrConst.EMPTY;
		// 棟情報
		String selTouInfo = JFUStrConst.EMPTY;
		HashMap<String, String> manmosKnriInfo = new HashMap<String, String>();

		// 部屋番号
		// プルダウン情報
		X31SDataBeanAccess rmNoBean = bean[0].getDataBeanArray(FUW00165SFConst.ROOM_NO).getDataBean(0);
		// 選択値
		int rmNoSelVal = rmNoBean.sendMessageLong(FUW00165SFConst.SELECT_VALUE_01, X31CWebConst.DATABEAN_GET_VALUE, 0).intValue();
		// ラベル値
		selRmNo = rmNoBean.sendMessageString(FUW00165SFConst.SELECT_LABEL_01, X31CWebConst.DATABEAN_GET_VALUE, rmNoSelVal);

		if (bean[0].sendMessageBoolean(FUW00165SFConst.TOU_INFO_DSP_FLG, X31CWebConst.DATABEAN_GET_VALUE))
		{
			// 棟情報(表示している場合)
			// プルダウン情報
			X31SDataBeanAccess touInfoBean = bean[0].getDataBeanArray(FUW00165SFConst.TOU_INFO).getDataBean(0);
			// 選択値
			int touInfoSelVal = touInfoBean.sendMessageLong(FUW00165SFConst.SELECT_VALUE_01, X31CWebConst.DATABEAN_GET_VALUE, 0).intValue();
			// ラベル値
			selTouInfo = touInfoBean.sendMessageString(FUW00165SFConst.SELECT_LABEL_01, X31CWebConst.DATABEAN_GET_VALUE, touInfoSelVal);
		}
		manmosKnriInfo = JFUGetManmosKanri.getManmosKnriInfoFromBean(bean[2], selTouInfo, selRmNo);

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// ＫＥＹ＿P-ID
		parentMap.put(KEY_PID, bean[2].sendMessageString(CommonInfoCFConst.SHUGO_PID_16, X31CWebConst.DATABEAN_GET_VALUE));

		// ＫＥＹ＿ＳＥＱ
		if (!JFUWebCommon.isNull(selRmNo))
		{
			parentMap.put(KEY_SEQ, manmosKnriInfo.get("seq"));
		}
		parentMap.put(HIKARIKA_MANS_FLG, hikarikaMansFlg);
		parentMap.put(SELECT_TOU_NO, JFUWebCommon.nvl(selTouInfo));
		parentMap.put(SELECT_RM_NO, JFUWebCommon.nvl(selRmNo));

		outputMap.put(FUSV033701CC, parentMap);

		return outputMap;
	}

	/**
	 * MT管理情報照会(MANMOS)照会CC（Ajax呼び出し時用）の上りマッピングをします。
	 * 
	 * @param bean データBean
	 * @param outputMap アウトマップ
	 * @param func_code 機能コード
	 * @param selRmNo 部屋番号選択値
	 * @param selTouInfo 棟情報選択値
	 */
	public HashMap setFUSV033701CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code,String selRmNoIdxStr,String selTouInfoIdxStr)
	{
		// 光化マンションフラグ
		String hikarikaMansFlg = bean[2].sendMessageString(CommonInfoCFConst.HIKARIKA_MANS_FLG_16, X31CWebConst.DATABEAN_GET_VALUE);
		// 部屋情報表示フラグ
		boolean roomInfoDspFlg = bean[0].sendMessageBoolean(FUW00165SFConst.ROOM_INFO_DSP_FLG, X31CWebConst.DATABEAN_GET_VALUE);

		if (JFUStrConst.HIKARIKA_MANS_FLG_1.equals(hikarikaMansFlg) && roomInfoDspFlg)
		{
			
			// 部屋番号
			String selRmNo = JFUStrConst.EMPTY;
			// 棟情報
			String selTouInfo = JFUStrConst.EMPTY;
			HashMap<String, String> manmosKnriInfo = new HashMap<String, String>();

			if (JFUStrConst.HIKARIKA_MANS_FLG_1.equals(hikarikaMansFlg) && roomInfoDspFlg)
			{
				// 部屋番号
				// プルダウン情報
				X31SDataBeanAccess rmNoBean = bean[0].getDataBeanArray(FUW00165SFConst.ROOM_NO).getDataBean(0);
				// 選択値
				int rmNoSelVal = Integer.parseInt(selRmNoIdxStr);
				// ラベル値
				selRmNo = rmNoBean.sendMessageString(FUW00165SFConst.SELECT_LABEL_01, X31CWebConst.DATABEAN_GET_VALUE, rmNoSelVal);

				if (bean[0].sendMessageBoolean(FUW00165SFConst.TOU_INFO_DSP_FLG, X31CWebConst.DATABEAN_GET_VALUE) && !JFUWebCommon.isNull(selTouInfoIdxStr))
				{
					// 棟情報(表示している場合)
					// プルダウン情報
					X31SDataBeanAccess touInfoBean = bean[0].getDataBeanArray(FUW00165SFConst.TOU_INFO).getDataBean(0);
					// 選択値
					int touInfoSelVal = Integer.parseInt(selTouInfoIdxStr);
					// ラベル値
					selTouInfo = touInfoBean.sendMessageString(FUW00165SFConst.SELECT_LABEL_01, X31CWebConst.DATABEAN_GET_VALUE, touInfoSelVal);
				}
				manmosKnriInfo = JFUGetManmosKanri.getManmosKnriInfoFromBean(bean[2], selTouInfo, selRmNo);
			}

			HashMap<String, Object> parentMap = new HashMap<String, Object>();

			// 共通情報のマッピング
			parentMap.put(FUNC_CODE, func_code);

			// ＫＥＹ＿P-ID
			parentMap.put(KEY_PID, bean[2].sendMessageString(CommonInfoCFConst.SHUGO_PID_16, X31CWebConst.DATABEAN_GET_VALUE));

			// ＫＥＹ＿ＳＥＱ
			if (!JFUWebCommon.isNull(selRmNo))
			{
				parentMap.put(KEY_SEQ, manmosKnriInfo.get("seq"));
			}

			parentMap.put(HIKARIKA_MANS_FLG, hikarikaMansFlg);
			parentMap.put(SELECT_TOU_NO, JFUWebCommon.nvl(selTouInfo));
			parentMap.put(SELECT_RM_NO, JFUWebCommon.nvl(selRmNo));

			outputMap.put(FUSV033701CC, parentMap);

		}

		return outputMap;
	}

	/**
	 * MT管理情報照会(MANMOS)照会CC（Ajax呼び出し時用）の上りマッピングをします。<br> 
	 * ※棟・部屋番号選択時（引越しNavi）
	 * 
	 * @param bean データBean
	 * @param outputMap アウトマップ
	 * @param func_code 機能コード
	 */
	public HashMap setFUSV033701CCNavi(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		String hikarikaMansFlg = bean[0].sendMessageString(FUW10401SFConst.HIKARIKA_MANS_FLG, X31CWebConst.DATABEAN_GET_VALUE);

		if (!JFUStrConst.HIKARIKA_MANS_FLG_1.equals(hikarikaMansFlg))
		{
			return outputMap;
		}

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// ＫＥＹ＿P-ID
		parentMap.put(KEY_PID, bean[0].sendMessageString(FUW10401SFConst.P_ID, X31CWebConst.DATABEAN_GET_VALUE));

		String selTouInfo = bean[0].sendMessageString(FUW10401SFConst.TOU_INFO, X31CWebConst.DATABEAN_GET_VALUE);
		String selRmNo = bean[0].sendMessageString(FUW10401SFConst.INP_RM_2, X31CWebConst.DATABEAN_GET_VALUE);
		HashMap<String, String> manmosKnriInfo = JFUGetManmosKanri.getManmosKnriInfoFromBean(bean[0], selTouInfo, selRmNo);
		// ＫＥＹ＿ＳＥＱ
		if (!JFUWebCommon.isNull(selRmNo))
		{
			parentMap.put(KEY_SEQ, manmosKnriInfo.get("seq"));
		}

		parentMap.put(HIKARIKA_MANS_FLG, hikarikaMansFlg);
		parentMap.put(SELECT_TOU_NO, JFUWebCommon.nvl(selTouInfo));
		parentMap.put(SELECT_RM_NO, JFUWebCommon.nvl(selRmNo));

		outputMap.put(FUSV033701CC, parentMap);
		return outputMap;
	}

	/**
	 * 上りマッピングをします。(MT管理情報照会(MANMOS)照会CC)<br> 
	 * ※引越しNavi
	 * <br>
	 * @param bean ：[0]引越しNaviサービスフォームBean
	 * @param outputMap
	 * @param func_code  機能コード
	 * @return HashMap
	 */
	public HashMap<String, Object> setManmosKanriInfoCCNavi(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(JCMConstants.FUNC_CODE_KEY, func_code);
		String pId = bean[0].sendMessageString(FUW00134SFConst.PID_01, X31CWebConst.DATABEAN_GET_VALUE);

		parentMap.put("key_pid", pId);
		String hikarikaMansFlg = bean[0].sendMessageString(FUW10401SFConst.HIKARIKA_MANS_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put(HIKARIKA_MANS_FLG, hikarikaMansFlg);
		outputMap.put("JFUGetManmosKanriInfoCC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをします。(MT管理情報照会(MANMOS)照会CC)<br> 
	 * ※低価格マンション
	 * <br>
	 * @param bean ：[0]低価格マンションフォームBean、共有フォームBean.WEB新規情報.マンション情報
	 * @param outputMap
	 * @param func_code  機能コード
	 * @return HashMap
	 */
	public HashMap<String, Object> setManmosKanriInfoLpms(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap, String func_code)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(JCMConstants.FUNC_CODE_KEY, func_code);
		String pId = bean[1].sendMessageString(CommonInfoCFConst.SHUGO_PID_16, X31CWebConst.DATABEAN_GET_VALUE);

		parentMap.put("key_pid", pId);
		// 光配線１Ｇのみフラグ＝光化マンションフラグ
		String hikarikaMansFlg = bean[1].sendMessageString(CommonInfoCFConst.HHS_1GONLY_FLG_16, X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put(HIKARIKA_MANS_FLG, hikarikaMansFlg);
		outputMap.put("JFUGetManmosKanriInfoCC", parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピングをします。(MT管理情報照会(MANMOS)照会CC)<br> 
	 * ※引越しNavi
	 * <br> 
	 * @param bean ：[0]引越しNaviサービスフォームBean
	 * @param outputMap
	 * @return X31SDataBeanAccess
	 */
	public X31SDataBeanAccess[] getManmosKanriInfoCCNavi(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap)
	{
		JFUGetManmosKanri.setBeanManmosKnriInfoList(bean[0], outputMap);

		return bean;
	}

}
