/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CKSV0019_CKSV0019OPDBMapper
*	ソースファイル名：CKSV0019_CKSV0019OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2011年12月26日
*＜機能概要＞
*	BP（メール再送信依頼_初期表示サービス）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/12/26	Fujitsu		新規作成
*	v5.00.00	2013/01/07	FJ)磯俣		ANK-1418(退会済みのエラー出力追加)
*	v5.01.00	2013/07/10	FJ)馬場		【LT-2013-0000377】対応
*   v29.00.00   2017/01/10   FJ) 二村   【ANK-3112-00-00】訪販チャネルのタブレット対応
*   v65.00.00	2023/12/15	FJ)北村		【ANK-4346-00-00】【eo定期】CCMG再構築対応 新規作成
*
**********************************************************************/
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 eo.common.constant.JCKStrConst;
import eo.common.util.JKKStringUtil;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class CKSV0019_CKSV0019OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public CKSV0019_CKSV0019OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：メール再送信依頼
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV001901SC(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);

		// メールＩＤ → メール情報一意照会SC.ＫＥＹ＿メールID
		parentMap.put("key_mail_id", bean[0].sendMessageString("メールＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// 送信回数 → メール情報一意照会SC.ＫＥＹ＿送信回数
		parentMap.put("key_send_cnt", bean[0].sendMessageString("送信回数", X31CWebConst.DATABEAN_GET_VALUE));
// ANK4346-00-00 ADD START
		// 検索対象メール → コンテンツサービスの場合、検索を実施しない。
		String key_send_trgt_mail = bean[0].sendMessageString("検索対象メール", X31CWebConst.DATABEAN_GET_VALUE);
		// 検索対象メールが"1"（コンテンツサービス）の場合、10桁のダミー値をメールIDに設定する。
		// CCMGより取得するメールIDが9桁の為、使用しないDB情報を取得する際の回避策での処理
		if (JCKStrConst.SEARCH_TRGT_MAIL_CONT.equals(key_send_trgt_mail)) {
			parentMap.put("key_mail_id", "9999999999");
		}
// ANK-4346-00-00 END

		outputMap.put("CKSV001901SC", parentMap);
						
		return outputMap;
	}

// ANK4346-00-00 ADD START
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：メール再送信依頼
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCKSV001902SC(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>();

		// ＳＹＳＩＤ → メール情報一意照会SC.ＫＥＹ＿ＳＹＳＩＤ
		parentMap.put("sysid", bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
	
		outputMap.put("CKSV001902SC", parentMap);
						
		return outputMap;
	}
// ANK-4346-00-00 END

	
	/**
	 * 下りマッピング
	 * @param bean　[0]：メール再送信依頼
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCKSV001901SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("CKSV001901SC")){
			parentMap = (HashMap)outputMap.get("CKSV001901SC");
		}
		
		ArrayList childList = null;
		if(parentMap.containsKey("EKK1121A010CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK1121A010CBSMsg1List");
			if(0 != childList.size())
			{
				HashMap childMap = (HashMap)childList.get(0);
				// ＳＹＳＩＤ ← メール情報一意照会SC.メール情報一意照会明細.SYSID
				bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sysid"));
				// 送信日時 ← メール情報一意照会SC.メール情報一意照会明細.メール送信年月日時分秒
				bean[0].sendMessageString("送信日時", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mail_send_dtm"));
				// 状態コード ← メール情報一意照会SC.メール情報一意照会明細.メール送信状態コード
				bean[0].sendMessageString("状態コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mail_send_stat_cd"));
//				// 状態 ← メール情報一意照会SC.メール情報一意照会明細.メール送信状態コード名称 ※送信回数が2回以上の場合、先頭に“再”を追記する。
//				int sendCount = Integer.parseInt(bean[0].sendMessageString("送信回数", X31CWebConst.DATABEAN_GET_VALUE));
//				if (sendCount >= 2)
//				{
//					bean[0].sendMessageString("状態", X31CWebConst.DATABEAN_SET_VALUE, "再" + (String)childMap.get("mail_send_stat_cd_nm"));
//				}
//				else
//				{
//					bean[0].sendMessageString("状態", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mail_send_stat_cd_nm"));
//				}
				// メールアドレス ← メール情報一意照会SC.メール情報一意照会明細.送信先メールアドレス
				bean[0].sendMessageString("メールアドレス", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sends_mlad"));
				// 件名 ← メール情報一意照会SC.メール情報一意照会明細.メールタイトル
				bean[0].sendMessageString("件名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mail_title"));
				// 本文 ← メール情報一意照会SC.メール情報一意照会明細.メール本文
				bean[0].sendMessageString("本文", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mail_text"));
				// メールコード ← メール情報一意照会SC.メール情報一意照会明細.メールコード
				bean[0].sendMessageString("メールコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mail_cd"));
				// ｅｏＩＤ ← メール情報一意照会SC.メール情報一意照会明細.eoID
				bean[0].sendMessageString("ｅｏＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("eoid"));
				// 送信先契約者カナ名 ← メール情報一意照会SC.メール情報一意照会明細.送信先契約者カナ名
				bean[0].sendMessageString("送信先契約者カナ名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sends_ksh_kana"));
				// コンテンツサービスコード ← メール情報一意照会SC.メール情報一意照会明細.コンテンツサービスコード
				bean[0].sendMessageString("コンテンツサービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("cont_svc_cd"));
			}
		}
		
		return bean;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：メール再送信依頼
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCKSV001902SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("CKSV001902SC")){
			parentMap = (HashMap)outputMap.get("CKSV001902SC");
		}
		
		ArrayList childList = null;
		// ANK-3112-00-00 MOD START
//		if(parentMap.containsKey("ECK0201B002CBSMsg1List"))
//		{
//			childList = (ArrayList)parentMap.get("ECK0201B002CBSMsg1List");
//			if(0 != childList.size())
//			{
//				HashMap childMap = (HashMap)childList.get(0);
//				// 最新メールアドレス ← 連絡先（コンテンツ用メールアドレス）一覧SC.連絡先（コンテンツ用メールアドレス）一覧照会明細.メールアドレス
//				bean[0].sendMessageString("最新メールアドレス", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mlad"));
//			}
		
		if(parentMap.containsKey("ECK0201B001CBSMsg1List"))
		{
			//メールアドレスを一時退避させるマップを作成
			HashMap mailTaihiMap = new HashMap();

			childList = (ArrayList)parentMap.get("ECK0201B001CBSMsg1List");
			if (0 != childList.size())
			{
				for (int i = 0; i < childList.size(); i++)
				{
					HashMap childMap = (HashMap)childList.get(i);

					if (!JKKStringUtil.isNullBlank((String)childMap.get("mlad")))
					{
// ANK-4346-00-00 ADD START
						// メールＩＤ → メール情報一意照会SC.ＫＥＹ＿メールID
						String searchTrgt =  bean[0].sendMessageString("検索対象メール", X31CWebConst.DATABEAN_GET_VALUE);
						// コンテンツメールの検索の場合、コンテンツメール取得処理を行う。
						if (JCKStrConst.SEARCH_TRGT_MAIL_CONT.equals(searchTrgt)) {
							childMap.put("rrks_bunrui_cd", "1");
						}
// ANK-4346-00-00 ADD END

						//連絡先分類コードによってメールアドレスを分類
						if ("1".equals(childMap.get("rrks_bunrui_cd")))
						{
							mailTaihiMap.put("contents", (String)childMap.get("mlad"));
						}
						else if ("0".equals(childMap.get("rrks_bunrui_cd")))
						{
							mailTaihiMap.put("kaisen", (String)childMap.get("mlad"));
						}
					}
				}
				//連絡先分類コードが1（コンテンツ系）のメールアドレスを優先する
				if (!JKKStringUtil.isNullBlank((String) mailTaihiMap.get("contents")))
				{
					// 最新メールアドレス ← 連絡先一覧SC.連絡先一覧照会明細.メールアドレス
					bean[0].sendMessageString("最新メールアドレス", X31CWebConst.DATABEAN_SET_VALUE, (String)mailTaihiMap.get("contents"));
				}
				else
				{
					// 最新メールアドレス ← 連絡先一覧SC.連絡先一覧照会明細.メールアドレス
					bean[0].sendMessageString("最新メールアドレス", X31CWebConst.DATABEAN_SET_VALUE, (String)mailTaihiMap.get("kaisen"));
				}
			    // ANK-3112-00-00 MOD END
			}
		}
		
		return bean;
	}
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：メール再送信依頼
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCKSV001903SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("CKSV001903SC")){
			parentMap = (HashMap)outputMap.get("CKSV001903SC");
		}

		
		// お客様ステータス ← お客様一意照会SC.お客様ステータス
		if (parentMap != null) {
			bean[0].sendMessageString("お客様ステータス", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("cust_stat"));
		} else {
			bean[0].sendMessageString("お客様ステータス", X31CWebConst.DATABEAN_SET_VALUE, new String());
		}
		// お客様入退会コード ← お客様一意照会SC.お客様入退会コード
		if (parentMap != null) {
			bean[0].sendMessageString("お客様入退会コード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("cust_ntaikai_cd"));
		} else {
			bean[0].sendMessageString("お客様入退会コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
		}

		return bean;
	}

}
