/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：FUSV0312_FUSV0312OPDBMapper
*	ソースファイル名：FUSV0312_FUSV0312OPDBMapper.java
*	作成者			：FJ
*	日付			：2017年08月30日
*＜機能概要＞
*	BP（eo光ネット入力(初期表示)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v33.00.00   2017/08/30  FJ）中田   【ANK-3209-00-00】E-PON電話単独への1Gコース追加抑止 ※新規作成
*   v40.00.00   2018/11/12  FJ）松原   【ANK-3412-00-00】５ギガ・１０ギガコース導入対応【STEP1、2】
*
**********************************************************************/
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.FUW00106SF.FUW00106SFConst;
import eo.web.webview.FUW12101SF.FUW12101SFConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * DataBean-BPマッピングをします。
 *
 * <br>
 * @author 富士通
 */
public class FUSV0312_FUSV0312OPDBMapper
{

	/** サービス契約番号(ONU) */
	private static final String SVC_KEI_NO = "svc_kei_no";
	/** サービス契約番号(5G10G) */
	private static final String KEY_SVC_KEI_NO = "key_svc_kei_no";
	/** PON種別コード */
	private static final String PON_SBT_CD= "pon_sbt_cd";
	/** チェック結果 */
	private static final String CHK_RESULT= "chk_result";

	// ■CC
	/** FUSV031201CC */
	private static final String FUSV031201CC = "FUSV031201CC";
	/** FUSV031202CC */
	private static final String FUSV031202CC = "FUSV031202CC";

	// ■項目キー
	/** 機能コード */
	private static final String FUNC_CODE = "func_code";

	/**
	 * コンストラクタ
	 */
	public FUSV0312_FUSV0312OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：eo光ネット入力(初期表示)　[1]：共有フォームビーン
	 * @param outputMap マップ
	 * @param func_code　機能コード
	 * @return HashMap マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV031201CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		X31SDataBeanAccess eoTelBean = JFUWebCommon.getDataBeanTypeByPath(bean[1], JFUWebCommon.EOTEL);

		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);

		// サービス契約番号 → ONU情報取得CC.サービス契約番号
		parentMap.put(SVC_KEI_NO, eoTelBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_12, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(FUSV031201CC, parentMap);

		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：eo光ネット入力(初期表示)　[1]：共有フォームビーン
	 * @param outputMap マップ
	 * @return bean　[0]：eo光ネット入力(初期表示)　[1]：共有フォームビーン
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV031201CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV031201CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV031201CC);
		}

		// PON種別コード ← ONU情報取得CC.PON種別コード 
		bean[0].sendMessageObject(FUW00106SFConst.PON_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(PON_SBT_CD));

		return bean;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：eo光ネット入力(初期表示)　[1]：共有フォームビーン
	 * @param outputMap マップ
	 * @param func_code　機能コード
	 * @return HashMap マップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setFUSV031202CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		//共有フォームビーンの契約サービス情報を取得
		X31SDataBeanAccess keiSVCBean = JFUWebCommon.getDataBeanTypeByPath(bean[1], JFUWebCommon.KEIYAKU_SVC_INFO);
		
		//契約中サービス（電話）を取得
		String now_svc_tel = keiSVCBean.sendMessageString(CommonInfoCFConst.NOW_SVC_TEL_10, X31CWebConst.DATABEAN_GET_VALUE);
		
		//eo光電話を申込まれている場合、電話のサービス契約番号の取得
		if (JFUStrConst.NOW_SVC_TEL_KEI_CHU.equals(now_svc_tel))
		{
			//共有フォームビーンからeo光電話を取得
			X31SDataBeanAccess eoTelBean = JFUWebCommon.getDataBeanTypeByPath(bean[1], JFUWebCommon.EOTEL);
			// サービス契約番号 → 5ギガ・10ギガコース提供エリアチェックCC.サービス契約番号
			parentMap.put(KEY_SVC_KEI_NO, eoTelBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_12, X31CWebConst.DATABEAN_GET_VALUE));
			
		}
		//eo光電話を申込まれていない場合、ＴＶのサービス契約番号の取得	
		if (!(JFUStrConst.NOW_SVC_TEL_KEI_CHU.equals(now_svc_tel)))
		{
			//共有フォームビーンからeo光テレビを取得
			X31SDataBeanAccess eoTvBean = JFUWebCommon.getDataBeanTypeByPath(bean[1], JFUWebCommon.EOTV);
			// サービス契約番号 → 5ギガ・10ギガコース提供エリアチェックCC.サービス契約番号
			parentMap.put(KEY_SVC_KEI_NO, eoTvBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_12, X31CWebConst.DATABEAN_GET_VALUE));
			
		}
		
		// 共通情報のマッピング
		parentMap.put(FUNC_CODE, func_code);
		
		outputMap.put(FUSV031202CC, parentMap);
		
		return outputMap;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：eo光ネット入力(初期表示)　[1]：共有フォームビーン
	 * @param outputMap マップ
	 * @return bean　[0]：eo光ネット入力(初期表示)　[1]：共有フォームビーン
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getFUSV031202CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey(FUSV031202CC))
		{
			parentMap = (HashMap)outputMap.get(FUSV031202CC);
		}

		// 提供エリア１０Ｇフラグ ← 5ギガ・10ギガコース提供エリアチェックCC.チェック結果 
		bean[0].sendMessageObject(FUW00106SFConst.TK_AREA_10G_FLG, X31CWebConst.DATABEAN_SET_VALUE, parentMap.get(CHK_RESULT));

		return bean;
	}
}