/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0341_KKSV0341OPDBMapper
*	ソースファイル名：KKSV0341_KKSV0341OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2011年10月24日
*＜機能概要＞
*	BP（ファミリーパック契約情報照会OP）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/10/24	Fujitsu		新規作成
*  v32.00.00	2017/04/14  FJ)大崎    【ANK-3149-00-00】新セキュリティパック導入
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.model.common.JCMAPLConstMgr;

import eo.common.util.JPCUtilCommon;

/**
 * DataBean-BPマッピングをする。
 * @author FJ
 * 
 */
public class KKSV0341_KKSV0341OPDBMapper
{
	
	/**
	 * コンストラクタ
	 */
	public KKSV0341_KKSV0341OPDBMapper()
	{
	}
	

	/**
	 * 上りマッピングをする
	 * @param reqMap 処理要求電文
	 * @param outputMap
	 * @param func_code 機能コード
	 * @param opeDate オンライン運用日付
	 * @return HashMap
	 */
	public HashMap setKKSV034101SC(HashMap reqMap, HashMap outputMap, String func_code, String opeDate)
	{
		
		if(reqMap == null)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// サービス契約番号 → サービス契約一意照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", reqMap.get("OKYAKSM_ID"));
		// 世代登録年月日時分秒 → サービス契約一意照会マップ.ＫＥＹ＿世代登録年月日時分秒
		parentMap.put("key_gene_add_dtm", "");
		// オンライン運用日付 → サービス契約一意照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", opeDate);
		
		outputMap.put("KKSV034101SC", parentMap);
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param reqMap 処理要求電文
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	public HashMap setKKSV034102SC(HashMap reqMap, HashMap outputMap, String func_code)
	{
		
		if(reqMap == null)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// サービス契約番号 → 割引サービス対象契約一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", reqMap.get("OKYAKSM_ID"));
		// サービス契約内訳番号 → 割引サービス対象契約一覧照会マップ.ＫＥＹ＿サービス契約内訳番号
		parentMap.put("key_svc_kei_ucwk_no", "");
		// オプションサービス契約番号 → 割引サービス対象契約一覧照会マップ.ＫＥＹ＿オプションサービス契約番号
		parentMap.put("key_op_svc_kei_no", "");
		// サブオプションサービス契約番号 → 割引サービス対象契約一覧照会マップ.ＫＥＹ＿サブオプションサービス契約番号
		parentMap.put("key_sbop_svc_kei_no", "");
		// 機器提供サービス契約番号 → 割引サービス対象契約一覧照会マップ.ＫＥＹ＿機器提供サービス契約番号
		parentMap.put("key_kktk_svc_kei_no", "");
		// 割引サービス契約番号 → 割引サービス対象契約一覧照会マップ.ＫＥＹ＿割引サービス契約番号
		parentMap.put("key_wrib_svc_kei_no", "");
		
		outputMap.put("KKSV034102SC", parentMap);
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param reqMap 処理要求電文
	 * @param outputMap
	 * @param func_code 機能コード
	 * @param opeDate オンライン運用日付
	 * @return HashMap
	 */
	public HashMap setKKSV034103CC(HashMap reqMap, HashMap outputMap, String func_code, String opeDate)
	{
		
		if(reqMap == null)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 世代登録年月日時分秒 → ファミリーパック契約情報照会マップ.ＫＥＹ＿世代登録年月日時分秒
		parentMap.put("key_gene_add_dtm", "");
		// オンライン運用日付 → ファミリーパック契約情報照会マップ.ＫＥＹ＿予約適用年月日
		parentMap.put("key_rsv_aply_ymd", opeDate);
		
		outputMap.put("KKSV034103CC", parentMap);
		
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param reqMap 処理要求電文
	 * @param outputMap
	 * @param func_code 機能コード
	 * @param opeDate オンライン運用日付
	 * @return HashMap
	 */
	public HashMap setKKSV0341WORK01(HashMap reqMap, HashMap outputMap, String opeDate)
	{
		
		if(reqMap == null)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// オンライン運用日付 → ファミリーパック契約情報照会作業項目マップ01.オンライン処理日
		parentMap.put("ope_date", opeDate);
		
		outputMap.put("KKSV0341WORK01", parentMap);
		
		return outputMap;
	}
	// ANK-3149-00-00 ADD START
	/**
	 * 上りマッピングをする
	 * @param reqMap 処理要求電文
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	public HashMap setKKSV034104SC(HashMap reqMap, HashMap outputMap, String func_code)
	{
		
		if(reqMap == null)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// サービス契約番号 → サービス契約一意照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", reqMap.get("OKYAKSM_ID"));
		
		outputMap.put("KKSV034104SC", parentMap);
		
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param reqMap 処理要求電文
	 * @param outputMap
	 * @param func_code 機能コード
	 * @return HashMap
	 */
	public HashMap setKKSV034105SC(HashMap reqMap, HashMap outputMap, String func_code)
	{
		
		if(reqMap == null)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// サービス契約番号 → サービス契約一意照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", reqMap.get("OKYAKSM_ID"));
		
		outputMap.put("KKSV034105SC", parentMap);
		
		return outputMap;
	}
	// ANK-3149-00-00 ADD END

	/**
	 * 下りマッピング
	 * @param resMap 処理応答電文
	 * @param outputMap
	 * @return HashMap
	 */
	public HashMap getKKSV034103CC(HashMap resMap, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV034103CC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV034103CC");
		}
		else
		{
			return resMap;
		}
		
		if(parentMap.containsKey("EKK0451A010CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("EKK0451A010CBSMsg1List");
			
			if (0 < childList.size())
			{
				// ファミリーパックオプション契約数 ← サービス契約一意照会マップ.割引サービス契約一意照会明細の件数
				resMap.put("FAMILY_PACK_OPTION_COUNT", String.valueOf(childList.size()));
				// ファミリーパックオプション契約フラグ ← サービス契約一意照会マップ.割引サービス契約一意照会明細の有無
				resMap.put("FAMILY_PACK_OPTION_FLG", "1");
				
				return resMap;
			}
		}
		// ファミリーパックオプション契約数 ← サービス契約一意照会マップ.割引サービス契約一意照会明細の件数
		resMap.put("FAMILY_PACK_OPTION_COUNT", "0");
		// ファミリーパックオプション契約フラグ ← サービス契約一意照会マップ.割引サービス契約一意照会明細の有無
		resMap.put("FAMILY_PACK_OPTION_FLG", "0");
		
		return resMap;
	}

	/**
	 * 下りマッピング
	 * @param resMap 処理応答電文
	 * @param outputMap
	 * @return HashMap
	 */
	public HashMap getKKSV0341WORK02(HashMap resMap, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV0341WORK02"))
		{
			parentMap = (HashMap)outputMap.get("KKSV0341WORK02");
		}
		else
		{
			return resMap;
		}
		
		// 返却結果コード ← ファミリーパック契約情報照会作業項目マップ02.返却結果コード
		resMap.put("WDA_COM_RESULT", (String)parentMap.get("return_result_cd"));
		
		return resMap;
	}
	// ANK-3149-00-00 ADD START
	/**
	 * 下りマッピング
	 * @param resMap 処理応答電文
	 * @param outputMap
	 * @return HashMap
	 */
	public HashMap getKKSV034104SC(HashMap resMap, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV034104SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV034104SC");
		}
		else
		{
			return resMap;
		}
		
		//デフォルトで無を設定
		resMap.put("PREMIUM_PACK_OPTION_FLG", "0");
		resMap.put("SECURITY_PACK_OPTION_FLG", "0");
		
		if(parentMap.containsKey("EKK0451B002CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("EKK0451B002CBSMsg1List");
			
			//契約有無判定処理
			for(int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
				String wrib_svc_cd = getNullToStr((String)childMap.get("wrib_svc_cd"));
				String wrib_svc_kei_stat = getNullToStr((String)childMap.get("wrib_svc_kei_stat"));
				
				//"010"(受付済)or"100"(サービス提供中)
				if (("010".equals(wrib_svc_kei_stat) || "100".equals(wrib_svc_kei_stat)))
				{
					//プレミアムパックの場合
					if ("W00000080".equals(wrib_svc_cd))
					{
						resMap.put("PREMIUM_PACK_OPTION_FLG", "1");
					}
					
					//セキュリティーパックの場合
					if ("W00000010".equals(wrib_svc_cd))
					{
						resMap.put("SECURITY_PACK_OPTION_FLG", "1");
					}
				}
			}
		}
		
		return resMap;
	}
	
	/**
	 * 下りマッピング
	 * @param resMap 処理応答電文
	 * @param outputMap
	 * @return HashMap
	 */
	public HashMap getKKSV034105SC(HashMap resMap, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV034105SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV034105SC");
		}
		else
		{
			return resMap;
		}
		
		//デフォルトで無を設定
		resMap.put("MCAFEE_MEMBER_ID", "");
		resMap.put("MCAFEE_NINSHO_MLAD", "");
		resMap.put("MCAFEE_NINSHO_PWD", "");
		resMap.put("MCAFEE_SEHN_DL_URL", "");
		resMap.put("USER_SBSCPT_PIN", "");
		resMap.put("SBSCPT_ID", "");
		resMap.put("NTFMLPRM_DL_URL", "");
		resMap.put("INETSGWL_DL_URL", "");
		
		if(parentMap.containsKey("EKK0361B001CBSMsg1List"))
		{
			ArrayList childList = (ArrayList)parentMap.get("EKK0361B001CBSMsg1List");
			
			//オプションサービス契約、オプションサービス契約<ISP>項目設定処理
			for(int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
				String op_svc_cd = getNullToStr((String)childMap.get("op_svc_cd"));
				String op_svc_kei_stat = getNullToStr((String)childMap.get("op_svc_kei_stat"));

				//オプションサービス契約ステータスが、"020"(照査済)or"030"(締結済)or"100"(サービス提供中)or"210"(休止・中断中)or"220"(停止中)であること。
				if ("020".equals(op_svc_kei_stat) || "030".equals(op_svc_kei_stat) || "100".equals(op_svc_kei_stat) || "210".equals(op_svc_kei_stat) || "220".equals(op_svc_kei_stat))
				{
					//マカフィーオプションの場合
					if ("B130".equals(op_svc_cd))
					{
						resMap.put("MCAFEE_MEMBER_ID", getNullToStr((String)childMap.get("mcafee_member_id")));
						resMap.put("MCAFEE_NINSHO_MLAD", getNullToStr((String)childMap.get("mcafee_ninsho_mlad")));
						resMap.put("MCAFEE_NINSHO_PWD", getNullToStr((String)childMap.get("mcafee_ninsho_pwd")));
						resMap.put("MCAFEE_SEHN_DL_URL", getNullToStr((String)childMap.get("mcafee_sehn_dl_url")));
					}
					//ノートンファミリープレミアオプションの場合
					if ("B132".equals(op_svc_cd))
					{
						resMap.put("USER_SBSCPT_PIN", getNullToStr((String)childMap.get("user_sbscpt_pin")));
						
						if (0 < getNullToStr((String)childMap.get("user_sbscpt_pin")).length() && 0 < getNullToStr((String)childMap.get("sbscpt_id")).length())
						{
							// アプリケーションプロパティよりノートンファミリープレミアダウンロードURLを設定
							String ntfmlprm_dl_url = getNullToStr((String)(JCMAPLConstMgr.getString("NTFMLPRM_DL_URL"))).replaceFirst("%PIN%",getNullToStr((String)childMap.get("user_sbscpt_pin")));
							resMap.put("NTFMLPRM_DL_URL", ntfmlprm_dl_url);
						}
					}
					//インターネットサギウォールオプションの場合
					if ("B131".equals(op_svc_cd))
					{
						resMap.put("SBSCPT_ID", getNullToStr((String)childMap.get("sbscpt_id")));
					
						if (0 < getNullToStr((String)childMap.get("user_sbscpt_pin")).length() && 0 < getNullToStr((String)childMap.get("sbscpt_id")).length())
						{
							// アプリケーションプロパティよりインターネットサギウォールダウンロードURLを設定
							resMap.put("INETSGWL_DL_URL", getNullToStr((String)JCMAPLConstMgr.getString("INETSGWL_DL_URL")));
						}
					}
				}
				
			}
			
		}
		
		return resMap;
	}
	
	/**
	 * パラメタがNullの場合空白を返却します。
	 * @param str 文字列
	 * @return str
	 */
	private String getNullToStr(String str)
	{
		return JPCUtilCommon.Rtrim(str);
	}
	// ANK-3149-00-00 ADD END
}
