/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKSetMskmInfoCC
*   ソースファイル名：JKKSetMskmInfoCC.java
*   作成者          ：富士通
*   日付            ：2011年12月20日
*＜機能概要＞
*   申込情報設定CC
*＜修正履歴＞
*   バージョン	修正日		修正者		修正内容
*   v4.00.00	2012/12/20	FJ）松田	【KAD-2012-0001108】書面での受付番号の申込イメージの紐付けについて
*   v8.00.00	2014/01/06	FJ）高橋	【ANK-1584-00-00】L2-MVNO対応(本体)
*   v16.00.00	2015/07/13	FJ）野々下	【ANK-2480-00-00】新電力対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;

import eo.common.constant.JKKStrConst;
import eo.common.util.JKKCommonUtil;

/**
 * 申込情報設定CC
 * <br>
 * @author FJ
 */
public class JKKSetMskmInfoCC extends AbstractCommonComponent
{
	/** 作業マップ名 */
	private static final String MSKM_SVC_KEI_UCWK_WORK = "JKKGetMskmSvcKeiUcwkListCCWork";
	/** サービス種別：eoモバイル */
	private static final String SVC_SBT_MOBILE = "1";
	/** サービス種別：eoADSL */
	private static final String SVC_SBT_ADSL = "2";
	/** サービス種別：その他 */
	private static final String SVC_SBT_OTHER = "3";
	/** サービス種別：mineo */
	private static final String SVC_SBT_MINEO = "4";
// ANK-2480-00-00 ADD START
	/** サービス種別：eo電気 */
	private static final String SVC_SBT_ELEC = "5";
// ANK-2480-00-00 ADD END
	
	
	/** 申込種類：ホームタイプ */
	private static final String MSKM_TYP_HOME = "1";
	/** 申込種類：マンションタイプ */
	private static final String MSKM_TYP_MANSION = "2";
	/** 申込種類：メゾンタイプ */
	private static final String MSKM_TYP_MEZON = "3";
	/** 申込種類：ADSL */
	private static final String MSKM_TYP_ADSL = "4";
	/** 申込種類：モバイル単独 */
	private static final String MSKM_TYP_MOBILE_ONLY = "5";
	/** 申込種類：mineo */
	private static final String MSKM_TYP_MINEO = "6";
// ANK-2480-00-00 ADD START
	/** 申込種類：eo電気 */
	private static final String MSKM_TYP_ELEC = "7";
// ANK-2480-00-00 ADD END
	

	/**
	 * 申し込みの情報を設定します。
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite setMskmInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		HashMap<String, Object> ccMap = (HashMap<String, Object>)param.getData(fixedText);
		if (ccMap == null)
		{
			return param;
		}
		
		String svcSbt = SVC_SBT_OTHER;
		
		Map<Object, Object> workDataMap = param.getMappingWorkArea();
		HashMap<String, Object> workMap = null;
		if (workDataMap != null)
		{
			workMap = (HashMap<String, Object>)workDataMap.get(MSKM_SVC_KEI_UCWK_WORK);
		}
		ArrayList<HashMap<String, Object>> mskmDtlList = null;
		if (workMap != null)
		{
			mskmDtlList = (ArrayList<HashMap<String, Object>>)workMap.get("mskm_dtl_list");
		}
		
		String addMtSvcKeiNo = (String)ccMap.get("add_mt_svc_kei_no");
		String prcGrpCd = null;
		HashMap<String, Object> svcKeiMap = null;
		
		if (mskmDtlList != null)
		{
			for (HashMap<String, Object> mskmDtlMap : mskmDtlList)
			{
				ArrayList<HashMap<String, Object>> svcKeiList = (ArrayList<HashMap<String, Object>>)mskmDtlMap.get("svc_kei_list");
				if (svcKeiList == null)
				{
					continue;
				}
				
				svcKeiMap = svcKeiList.get(0);
				if (!JKKCommonUtil.isNull(addMtSvcKeiNo) && !addMtSvcKeiNo.equals(svcKeiMap.get("svc_kei_no")))
				{
					continue;
				}
				
				prcGrpCd = (String)svcKeiMap.get("prc_grp_cd");
				if (JKKCtrlyUtil.getAdslSvcJdg(prcGrpCd))
				{
					svcSbt = SVC_SBT_ADSL;
					break;
				}
				else if (JKKCtrlyUtil.getMblSvcJdg(prcGrpCd))
				{
					svcSbt = SVC_SBT_MOBILE;
					continue;
				}
				else if (JKKStrConst.CD00133_51.equals(prcGrpCd))
				{
					svcSbt = SVC_SBT_MINEO;
					break;
				}
// ANK-2480-00-00 ADD START
				else if (JKKStrConst.CD00133_17.equals(prcGrpCd))
				{
					svcSbt = SVC_SBT_ELEC;
					break;
				}
// ANK-2480-00-00 ADD END
				
				else
				{
					svcSbt = SVC_SBT_OTHER;
					break;
				}
			}
		}
		
		String mskmTyp = "";
		if (SVC_SBT_MOBILE.equals(svcSbt))
		{
			mskmTyp = MSKM_TYP_MOBILE_ONLY;
		}
		else if (SVC_SBT_ADSL.equals(svcSbt))
		{
			mskmTyp = MSKM_TYP_ADSL;
		}
		else if (SVC_SBT_MINEO.equals(svcSbt))
		{
			mskmTyp = MSKM_TYP_MINEO;
		}
// ANK-2480-00-00 ADD START
		else if (SVC_SBT_ELEC.equals(svcSbt))
		{
			mskmTyp = MSKM_TYP_ELEC;
		}
// ANK-2480-00-00 ADD END
		else if (SVC_SBT_OTHER.equals(svcSbt))
		{
			String mansionBukkenCd = JKKBpCommon.getMansionBukkenCd(param);
			if (JKKCommonUtil.isNull(mansionBukkenCd))
			{
				mskmTyp = MSKM_TYP_HOME;
			}
			else if (JKKStrConst.MANSION_BUKKEN_CD_MANSION.equals(mansionBukkenCd))
			{
				mskmTyp = MSKM_TYP_MANSION;
			}
			else if (JKKStrConst.MANSION_BUKKEN_CD_MEZON.equals(mansionBukkenCd))
			{
				mskmTyp = MSKM_TYP_MEZON; 
			}
		}
		ccMap.put("mskm_typ", mskmTyp);

		return param;
	}

}
