/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：CKW01201SFLogic
*   ソースファイル名：CKW01201SFLogic.java
*   作成者          ：FJ）馬場
*   日付            ：2011年11月10日
*＜機能概要＞
*   メール再送信依頼画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*   v1.00.00    2011/11/10	FJ）馬場    新規作成
*   v5.00.00	2013/01/07	FJ) 磯俣	ANK-1418(退会済みのエラー出力追加)
*   v5.01.00	2013/07/10	FJ) 馬場	【LT-2013-0000377】対応
*   v65.00.00	2023/12/15	FJ)北村		【ANK-4346-00-00】【eo定期】CCMG再構築対応 新規作成
*
**********************************************************************/
package eo.web.webview.CKW01201SF;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JCKStrConst;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCKScreenConst;
import eo.web.webview.mapping.CKSV0019_CKSV0019OPDBMapper;
import eo.web.webview.mapping.CKSV0020_CKSV0020OPDBMapper;

/**
 * CKW01201のビューロジックです。<p>
 * <BR>
 * @author 富士通
 */
public class CKW01201SFLogic extends JCCWebBusinessLogic
{
	
	/**
	 * 初期表示処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean init() throws Exception
	{
		// 引継情報の取得
		JCCWebCommon.getScreenInfo(this);
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess srvBean = super.getServiceFormBean();
		
		// 検索条件を作成する
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		X31SDataBeanAccess[] paramBean = { srvBean };

		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CKSV0019");
		CKSV0019_CKSV0019OPDBMapper mapper = new CKSV0019_CKSV0019OPDBMapper();
		mapper.setCKSV001901SC(paramBean, inputMap, "1");
// ANK-4346-00-00 ADD START
		String searchTrgt = paramBean[0].sendMessageString("検索対象メール", X31CWebConst.DATABEAN_GET_VALUE);
		if (JCKStrConst.SEARCH_TRGT_MAIL_CONT.equals(searchTrgt)) 
		{
			mapper.setCKSV001902SC(paramBean, inputMap, "1");
		}
// ANK-4346-00-00 ADD END

			// サービスの呼び出し
			X31CMessageResult result = invokeService(paramMap, inputMap, outputMap);
			
			// エラー処理
			if(result != null)
			{
				JCCWebCommon.setMessageInfo(this, result);
				return true;
			}

// ANK-4346-00-00 MOD START
		// コンテンツメールの検索の場合、コンテンツメール取得処理を行う。
		if (JCKStrConst.SEARCH_TRGT_MAIL_CONT.equals(searchTrgt)) {
			// コンテンツ情報を取得し、設定する。
			setContData(paramBean, outputMap);
			mapper.getCKSV001902SC(paramBean, outputMap);
		}
		else 
		{
			// サービス結果の転記
			mapper.getCKSV001901SC(paramBean, outputMap);
			mapper.getCKSV001902SC(paramBean, outputMap);
			mapper.getCKSV001903SC(paramBean, outputMap);
		}
// ANK-4346-00-00 MOD END
		
		if("".equals(srvBean.sendMessageString(CKW01201SFConst.RCNT_MLAD, X31CWebConst.DATABEAN_GET_VALUE))){
			// 最新メールアドレスが取得できなかった場合、エラーを表示する
			String[] msg = {"連絡先の情報","連絡先メールアドレス"};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0300_KW, msg);
		} else if(!srvBean.sendMessageString(CKW01201SFConst.RCNT_MLAD, X31CWebConst.DATABEAN_GET_VALUE).equals(
				srvBean.sendMessageString(CKW01201SFConst.MLAD, X31CWebConst.DATABEAN_GET_VALUE))){
			// 最新メールアドレスとメールアドレスが異なる場合、エラーを表示する
			String[] msg = {"メールアドレス","最新メールアドレス"};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB5180__I, msg);
		}
		
//		// ANK-1418 START
//		String custStat = srvBean.sendMessageString(CKW01201SFConst.CUST_STAT, X31CWebConst.DATABEAN_GET_VALUE);
//		String custTaikaiCd = srvBean.sendMessageString(CKW01201SFConst.CUST_NTAIKAI_CD, X31CWebConst.DATABEAN_GET_VALUE);
//		
//		if((JCKCommonConst.CUST_STAT_01.equals(custStat) || JCKCommonConst.CUST_STAT_02.equals(custStat)) && "1".equals(custTaikaiCd))
//		{
//			// お客様ステータスが[010](登録済)か[100](受付済)で、入退会コード[1](退会)の場合エラーを表示する
//			String[] msg = {"お客様", "eoIDを退会済", "再送信依頼が"};
//			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0290_JW, msg);
//		}
//		// ANK-1418 END
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_ID_CKW01201);
		// 遷移先の画面名を共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_NAME_CKW01201);
		
		return true;
	}
	
	/**
	 * 再送信ボタン押下処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean forwardResend() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess srvBean = super.getServiceFormBean();
		
		// 登録用のメール送信年月日時分秒にオンライン運用日付を設定する
		srvBean.sendMessageString(CKW01201SFConst.MAIL_SEND_DTM, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDateTimeStamp(this, null));
		
		// 検索条件を作成する
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		X31SDataBeanAccess[] paramBean = { srvBean };
		
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CKSV0020");
		CKSV0020_CKSV0020OPDBMapper mapper = new CKSV0020_CKSV0020OPDBMapper();
		mapper.setCKSV002003SC(paramBean, inputMap, "2");
		mapper.setCKSV002001SC(paramBean, inputMap, "1");
		mapper.setCKSV002002SC(paramBean, inputMap, "1");
		
		// サービスの呼び出し
		X31CMessageResult result = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理
		if(result != null)
		{
			JCCWebCommon.setMessageInfo(this, result);
			return true;
		}
		
		// 戻る際に必要な情報を設定する。
		HashMap<String, Object> returnMap = new HashMap<String, Object>();
		returnMap.put(CKW01201SFConst.ML_ID,srvBean.sendMessageString(CKW01201SFConst.ML_ID, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(CKW01201SFConst.SEND_CNT,srvBean.sendMessageString(CKW01201SFConst.SEND_CNT, X31CWebConst.DATABEAN_GET_VALUE));
		returnMap.put(CKW01201SFConst.STAT,srvBean.sendMessageString(CKW01201SFConst.STAT, X31CWebConst.DATABEAN_GET_VALUE));
		
		JCCWebCommon.setScreenInfo(this, JCKScreenConst.SCREEN_ID_CKW01201, returnMap);
		JCCWebCommon.setScreenId(this, JCKScreenConst.SCREEN_ID_CKW01101, JCKScreenConst.SCREEN_ID_CKW01201);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_ID_CKW01101);
		
		return true;
	}
	
	/**
	 * 戻るボタン押下処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean back() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_ID_CKW01101);
		
		return true;
	}

// ANK-4346-00-00 ADD START
	/**
	 * コンテンツメール表示時の表示設定を行う。
	 * @param bean　[0]：メール再送信依頼
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] setContData(X31SDataBeanAccess[] bean, HashMap outputMap){

		String mail_ad = bean[0].sendMessageString(CKW01201SFConst.MLAD, X31CWebConst.DATABEAN_GET_VALUE);

		bean[0].sendMessageString("最新メールアドレス", X31CWebConst.DATABEAN_SET_VALUE, mail_ad);

		return bean;
	}
// ANK-4346-00-00 ADD END
}
