/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0655_KKSV0655OPDBMapper
*	ソースファイル名：KKSV0655_KKSV0655OPDBMapper.java
*	作成者			：FJ
*	日付			：2013年01月14日
*＜機能概要＞
*	BP（スマートリンクプレミアム変更確認）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2013/01/14	FJ		新規作成
*	v7.00.00	2014/02/13	FJ)出羽		【OM-2014-0000640】違約金発生コードがセットされないことの対応
*	v10.00.00	2014/08/04	FJ)山裾		【ANK-1918-00-00】【ＮＯ．２１】ＵＳ管理Ｓ向けｅｏ顧客ＳのＩ／Ｆ改修
*	v13.00.00	2015/03/12	FJ)野々下	【ANK-2394-00-00】改善案件対応
*	v32.00.00	2017/04/17	FJ)三宅隆	【ANK-3149-00-00】新セキュリティパック導入
**********************************************************************/
package eo.web.webview.mapping;

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;
/* FJ)野々下 v13.00.00【ANK-2394-00-00】改善案件対応 追加開始 */
import eo.web.webview.common.JKKCommonConst;
/* FJ)野々下 v13.00.00【ANK-2394-00-00】改善案件対応 追加終了 */

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0655_KKSV0655OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0655_KKSV0655OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：スマートリンクプレミアム変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setOpsvckeiDslCC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;

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

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

		// ＳＹＳＩＤ → オプションサービス契約解約CCマップ.SYSID
		parentMap.put("sysid", bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約番号 → オプションサービス契約解約CCマップ.サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// オプションサービス契約番号 → オプションサービス契約解約CCマップ.オプションサービス契約番号
		parentMap.put("op_svc_kei_no", bean[0].sendMessageString("オプションサービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 更新年月日時分秒（更新前） → オプションサービス契約解約CCマップ.更新年月日時分秒（オプションサービス契約）
		parentMap.put("upd_dtm_bf", bean[0].sendMessageString("更新年月日時分秒（更新前）", X31CWebConst.DATABEAN_GET_VALUE));
		// サービス課金終了年月日 → オプションサービス契約解約CCマップ.サービス課金終了年月日
		parentMap.put("svc_chrg_endymd", bean[0].sendMessageString("サービス課金終了年月日", X31CWebConst.DATABEAN_GET_VALUE));
		// 異動区分 → オプションサービス契約解約CCマップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE));
		// 運用日 → オプションサービス契約解約CCマップ.サービス終了年月日
		parentMap.put("svc_endymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
		// 進捗特記事項１ → オプションサービス契約解約CCマップ.進捗特記事項１
		/* FJ)野々下 v13.00.00【ANK-2394-00-00】改善案件対応 変更開始 */
		/*parentMap.put("prg_tkjk_1", bean[0].sendMessageString("進捗特記事項１", X31CWebConst.DATABEAN_GET_VALUE));*/
		String strprgtkjk1 = bean[0].sendMessageString("進捗特記事項１", X31CWebConst.DATABEAN_GET_VALUE);
		
		// スマートリンクプレミアム情報解約
		if(JKKCommonConst.UM_U.equals(bean[0].sendMessageString("課金有無フラグ", X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 課金
			strprgtkjk1 = strprgtkjk1 + "　課金有無：課金";
		}
		else
		{
			// 非課金
			strprgtkjk1 = strprgtkjk1 + "　課金有無：非課金";
		}
		
		parentMap.put("prg_tkjk_1", strprgtkjk1);
		/* FJ)野々下 v13.00.00【ANK-2394-00-00】改善案件対応 変更終了 */
		// サービス課金終了年月日指定フラグ → オプションサービス契約解約CCマップ.サービス課金終了年月日指定フラグ
		parentMap.put("svc_chrg_endymd_flg", bean[0].sendMessageString("サービス課金終了年月日指定フラグ", X31CWebConst.DATABEAN_GET_VALUE));
		// 課金有無フラグ → オプションサービス契約解約CCマップ.解約時課金フラグ
		parentMap.put("dslji_chrg_flg", bean[0].sendMessageString("課金有無フラグ", X31CWebConst.DATABEAN_GET_VALUE));
		
		// v7.00.00 2014/02/13 【OM-2014-0000640】 ADD START
		// 違約金発生コード「１：有り」 → オプションサービス契約解約CCマップ. 違約金発生コード
		parentMap.put("pnlty_hassei_cd", "1");
		// v7.00.00 2014/02/13 【OM-2014-0000640】 ADD END

		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("異動理由リスト");
		if(parentMap.containsKey("EKK1091D010CBSMsg1List")){
			list = (ArrayList)parentMap.get("EKK1091D010CBSMsg1List");
		}else{
			list = new ArrayList();
		}
		if(arraybean != null && arraybean.getCount() > 0){
			for(int i = 0; i < arraybean.getCount(); i++){
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				HashMap childMap = null;
				if(list.size() -1 >= i){
					childMap = (HashMap)list.get(i);
				}else{
					childMap = new HashMap();
				}

				// 異動理由リスト.異動理由コード → オプションサービス契約解約CCマップ.異動理由明細.異動理由コード
				if (subbean != null) {
					childMap.put("ido_rsn_cd", subbean.sendMessageString("異動理由コード", X31CWebConst.DATABEAN_GET_VALUE));
				}
				// 異動理由リスト.異動理由メモ → オプションサービス契約解約CCマップ.異動理由明細.異動理由メモ
				if (subbean != null) {
					childMap.put("ido_rsn_memo", subbean.sendMessageString("異動理由メモ", X31CWebConst.DATABEAN_GET_VALUE));
				}

				list.add(childMap);
			}
		}
		parentMap.put("EKK1091D010CBSMsg1List", list);

		outputMap.put("OpsvckeiDslCC", parentMap);
						
		return outputMap;
	}
	
// 2014/08/04 ANK-1918-00-00 Add Start
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：スマートリンクプレミアム変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKojiAnkenCC(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);

		// サービス契約番号 → 工事案件CCマップ.サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 申込明細番号「"000000000000"：ダミー」 → 工事案件CCマップ. 申込明細番号
		parentMap.put("mskm_dtl_no", "000000000000");
		// 申込番号「"000000000000"：ダミー」 → 工事案件CCマップ. 申込番号
		parentMap.put("mskm_no", "000000000000");
		// 工事受付コード「"070"：内容変更」 → 工事案件CCマップ. 工事受付コード
		parentMap.put("koji_uk_cd", "070");
		// 工事受付詳細コード「"AB"：スマートリンク契約変える」 → 工事案件CCマップ. 工事受付詳細コード
		parentMap.put("koji_uk_dtl_cd", "AB");
		// ＳＹＳＩＤ → 工事案件CCマップ.SYSID
		parentMap.put("sysid", bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// スマートリンクオプション契約有無「"0"：無」 → 工事案件CCマップ. スマートリンクオプション契約有無
		parentMap.put("smln_op_kei_um", "0");
		// 異動区分 → 工事案件CCマップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KojiAnkenCC", parentMap);
						
		return outputMap;
	}
// 2014/08/04 ANK-1918-00-00 Add End

	
	// ANK-3149-00-00 ADD START
		/**
		 * 上りマッピングをする
		 * @param bean　[0]：スマートリンクプレミアム変更
		 * @param outputMap
		 * @param func_code　機能コード
		 */
		@SuppressWarnings("unchecked")
		public HashMap setSecurityPackOperateCC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
			
			if(bean == null){
				return null;
			}
			
			if(bean.length != 1){
				return null;
			}

			X31SDataBeanAccessArray arraybean = null;
			X31SDataBeanAccess beanTemp = null;
			ArrayList list1 = null;
			ArrayList list2 = null;


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

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

			// 運用日 → セキュリティパック操作ＣＣマップ.基準年月日
			parentMap.put("base_ymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
			
			// 固定値「0」 → セキュリティパック操作ＣＣマップ.引継有無
			parentMap.put("hikitugi_um", "0");
			
			// 異動区分 → セキュリティパック操作ＣＣマップ.異動区分
			parentMap.put("ido_div", bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE));
			
			// 登録用情報リスト 
			list2 = new ArrayList();
			HashMap childMap2 = new HashMap();

			// ＳＹＳＩＤ → 登録用情報リスト.SYSID
			childMap2.put("sysid", bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
			
			// サービス契約番号 → 登録用情報リスト.サービス契約番号
			childMap2.put("svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
			
			// 固定値「0」 → 解約用情報リスト.セキュリティーパック対象フラグ
			childMap2.put("security_pack_tg_flg", "0");
			
			// null → 解約用情報リスト.セキュリティーパック課金非課金コード	
			childMap2.put("security_pack_chrg_hichrg_cd", null);
			
			// 固定値「1」 → 解約用情報リスト.プレミアムパック対象フラグ
			childMap2.put("premium_pack_tg_flg", "1");

			// null → 解約用情報リスト.プレミアムパック課金非課金コード
			if ("0".equals(bean[0].sendMessageString("課金有無フラグ", X31CWebConst.DATABEAN_GET_VALUE))) {
				// 「2(非課金)」を設定
				childMap2.put("premium_pack_chrg_hichrg_cd", "2");
			}
			else if ("1".equals(bean[0].sendMessageString("課金有無フラグ", X31CWebConst.DATABEAN_GET_VALUE))) {
				// 「1(課金)」を設定
				childMap2.put("premium_pack_chrg_hichrg_cd", "1");
			}
			else {
				childMap2.put("premium_pack_chrg_hichrg_cd", null);
			}
			// 固定値「0」 → 解約用情報リスト.インターネットサギウォール対象フラグ
			childMap2.put("inetsgwl_tg_flg", "0");
			
			// null → 解約用情報リスト.インターネットサギウォール課金非課金コード
			childMap2.put("inetsgwl_chrg_hichrg_cd", null);
			
			// 固定値「0」 → 解約用情報リスト.ノートンファミリープレミア対象フラグ
			childMap2.put("ntfmlprm_tg_flg", "0");
			
			// null → 解約用情報リスト.ノートンファミリープレミア課金非課金コード
			childMap2.put("ntfmlprm_chrg_hichrg_cd", null);
			
			list2.add(childMap2);

			parentMap.put("cancel_info_list", list2);
			
			outputMap.put("SecurityPackOperateCC", parentMap);

			return outputMap;
		}
		
		/**
		 * 上りマッピングをする
		 * @param bean　[0]：スマートリンクプレミアム変更
		 * @param outputMap
		 * @param func_code　機能コード
		 */
		@SuppressWarnings("unchecked")
		public HashMap setKKSV065501SC(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);
			
			// オプションサービス契約番号 → オプションサービス契約解約CCマップ.オプションサービス契約番号
			parentMap.put("key_op_svc_kei_no", bean[0].sendMessageString("オプションサービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
			
			outputMap.put("KKSV065501SC", parentMap);

			return outputMap;
		}
// ANK-3149-00-00 ADD END

}