/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0276_FUSV0276OPDBMapper
*	ソースファイル名：FUSV0276_FUSV0276OPDBMapper.java
*	作成者			：富士通
*	日付			：2011年07月22日
*＜機能概要＞
*	BP（引越しナビ住所変更申込照会(多機能ルーター)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v7.00       2013/11/25  FJ)谷本     【ANK-1578-00-00】多機能ルーター（機器追加）
*	v9.00       2014/05/20  FJ) 西山   【ANK-2057-00-00】eo多機能ルーターによる複数通話対応
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.HashMap;

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.FUW10401SF.FUW10401SFConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをします。
 * 
 * @author 富士通
 */
public class FUSV0276_FUSV0276OPDBMapper
{

	/** 共有フォームBean */
	private static final int BEAN_COM_0 = 0;

	/** 引越しナビ住所変更申込多機能ルーター情報取得コモンコンポーネント部品 */
	private static final String CC_TITLE_FUSV027601 = "FUSV027601CC";
	/** 複数電話サービス変更判定コモンコンポーネント部品CC */
	private static final String CC_TITLE_FUSV027602 = "FUSV027602CC";
	
	// マップキー
	/** SYSID */
	private static final String SYSID = "sysid";
	/** サービス契約回線内訳番号 */
	private static final String SVC_KEI_KAISEN_UCWK_NO = "svc_kei_kaisen_ucwk_no";
	/** 料金コースコード（ネット変更後） */
	private static final String AFT_NET_PCRS_CD = "aft_net_pcrs_cd";
	/** サービス契約番号（ネット） */
	private static final String NET_SVC_KEI_NO = "net_svc_kei_no";
	/** 整理番号 */
	private static final String SEIRI_NO = "seiri_no";

	//
	/** 保有多機能ルーター有無 */
	private static final String OWN_TKRT_UMU = "own_tkrt_umu";
	/** ネット変更後料金コース対応ルーター速度種別コード号 */
	private static final String NET_AFT_PCRS_ROUTER_SPEED_SBT_CD = "net_aft_pcrs_router_speed_sbt_cd";
	/** 保有ルーター速度種別コード */
	private static final String OWN_ROUTER_SPEED_SBT_CD = "own_router_speed_sbt_cd";
	/** 保有多機能ルーター有無 */
	private static final String OWN_VA_PORT_CNT = "own_va_port_cnt";

	/** 項目：判定結果 */
	private static final String JUDGE_RESULT = "judge_result";
	
	/**
	 * コンストラクタ
	 */
	public FUSV0276_FUSV0276OPDBMapper()
	{
	}

	/**
	 * 上りマッピング処理です。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @param aftNetpcrsCd
	 * @return 
	 */
	@SuppressWarnings("unchecked")
	public HashMap<String, Object> setFUSV027601CC(X31SDataBeanAccess[] bean, HashMap outputMap, String aftNetpcrsCd)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// SSO情報Bean
		X31SDataBeanAccess ssoInfoBean = JFUWebCommon.getDataBeanTypeByPath(bean[BEAN_COM_0], JFUWebCommon.SSO_INFO);
		// 共有フォームBean.サービス契約情報
		X31SDataBeanAccess svcKeiInfoBean = JFUWebCommon.getDataBeanTypeByPath(bean[BEAN_COM_0], JFUWebCommon.SVC_KEI_INFO);
		// 共有フォームBean.サービス契約回線内訳情報
		X31SDataBeanAccess svcKeiKaisenUcwkInfoBean = JFUWebCommon.getDataBeanTypeByPath(bean[BEAN_COM_0], JFUWebCommon.SVC_KEI_KAISEN_UCWK_INFO);

		// SYSID
		parentMap.put(SYSID, ssoInfoBean.sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約回線内訳番号
		parentMap.put(SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_KAISEN_UCWK_NO_26,
				X31CWebConst.DATABEAN_GET_VALUE));
		// 料金コースコード（ネット変更後）
		parentMap.put(AFT_NET_PCRS_CD, aftNetpcrsCd);
		// サービス契約番号（ネット）
		parentMap.put(NET_SVC_KEI_NO, ssoInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_21, X31CWebConst.DATABEAN_GET_VALUE));
		// 整理番号
		parentMap.put(SEIRI_NO, svcKeiInfoBean.sendMessageString(CommonInfoCFConst.SEIRI_NO_23, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(CC_TITLE_FUSV027601, parentMap);

		return outputMap;
	}

	/**
	 * 複数電話サービス変更判定CCの上りマッピング処理です。
	 * <br>
	 * @param bean 共有フォームBean
	 * @param outputMap アウトマップ
	 * @return outputMap アウトマップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV027602CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// SSO情報Bean
		X31SDataBeanAccess ssoInfoBean = JFUWebCommon.getDataBeanTypeByPath(bean[BEAN_COM_0], JFUWebCommon.SSO_INFO);
		// 共有フォームBean.サービス契約回線内訳情報
		X31SDataBeanAccess svcKeiKaisenUcwkInfoBean = JFUWebCommon.getDataBeanTypeByPath(bean[BEAN_COM_0], JFUWebCommon.SVC_KEI_KAISEN_UCWK_INFO);

		// SYSID
		parentMap.put(SYSID, ssoInfoBean.sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約回線内訳番号
		parentMap.put(SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_KAISEN_UCWK_NO_26,
				X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(CC_TITLE_FUSV027602, parentMap);

		return outputMap;
	}

	
	/**
	 * 下りマッピング処理です。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @return bean
	 */
	public X31SDataBeanAccess getFUSV027601CC(X31SDataBeanAccess bean, HashMap outputMap)
	{

		HashMap<String, Object> parentMap = null;
		if (!outputMap.containsKey(CC_TITLE_FUSV027601))
		{
			return bean;
		}

		parentMap = (HashMap<String, Object>)outputMap.get(CC_TITLE_FUSV027601);

		// 保有多機能ルーター有無
		bean.sendMessageString(FUW10401SFConst.TKRT_OWN_TKRT_UMU, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get(OWN_TKRT_UMU));
		// ネット変更後料金コース対応ルーター速度種別コード
		bean.sendMessageString(FUW10401SFConst.TKRT_NET_AFT_PCRS_ROUTER_SPEED_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap
				.get(NET_AFT_PCRS_ROUTER_SPEED_SBT_CD));
		// 保有ルーター速度種別コード
		bean.sendMessageString(FUW10401SFConst.TKRT_OWN_ROUTER_SPEED_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap
				.get(OWN_ROUTER_SPEED_SBT_CD));
		// 保有ＶＡポート数
		bean.sendMessageString(FUW10401SFConst.TKRT_OWN_VA_PORT_CNT, X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get(OWN_VA_PORT_CNT));

		return bean;
	}
	
	/**
	 * 複数電話サービス変更判定CCの下りマッピング処理です。
	 * 
	 * <br>
	 * @param bean データBean
	 * @param outputMap サービス結果マップ
	 * @return データBean
	 * @throws Exception
	 */
	public X31SDataBeanAccess getFUSV027602CC(X31SDataBeanAccess bean, HashMap outputMap) throws Exception
	{
		HashMap parentMap = null;
		if (outputMap.containsKey(CC_TITLE_FUSV027602))
		{
			parentMap = (HashMap)outputMap.get(CC_TITLE_FUSV027602);
		}

		if (parentMap != null && parentMap.containsKey(JUDGE_RESULT))
		{
			String jdgeResult = (String)parentMap.get(JUDGE_RESULT);

			String telSvcChgSel = bean.sendMessageString(FUW10401SFConst.TEL_SVC_CHG_SEL, X31CWebConst.DATABEAN_GET_VALUE);

			// 変更後電話を利用しない場合は非表示に
			if (JFUStrConst.CD00002_0.equals(telSvcChgSel))
			{
				jdgeResult = JFUStrConst.CD00002_0;
			}
			
			// 判定結果が「1」の場合、変更有り。それ以外は変更無し。
			bean.sendMessageString(FUW10401SFConst.CHG_MULTI_PHONE_CALL_MSG_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, jdgeResult);
		}

		return bean;
	}

}