/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：低価格マンション注記
*   ソースファイル名：FUW00140SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年10月05日
*＜機能概要＞
*   低価格マンション注記のビューロジッククラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/10/05   FJ）赤井    新規作成
*	v3.00.00    2012/04/18   FJ）大塚    
*	v4.00.00    2012/11/20   FJ）大村    障害対応（IT1-No329）
*   v4.01.00    2012/12/11   FJ) 齋藤   【IT2-2012-0002027】低価格マンション紹介キャンペーン登録障害対応
*   v4.02.00    2012/01/17   FJ) 藤原    「障害番号：ST2-2013-0000033」メール送信設定変更対応
*   v4.03.00    2013/01/22   FJ) 大塚    「障害番号：IT1-2013-0000254」メール文言対応
*   v5.00.00    2013/07/13   FJ）瀧澤    【IT1-2013-0001371】メール宛先修正
*   v7.00       2014/01/27   FJ）中谷    【OM-2014-0000310】メール送信登録の別トランザクション対応
*  v38.00.00    2018/08/29   FJ）謝      【ANK-3328-00-00】マンション検索後の申込確認画面追加
*   v39.00      2018/09/25   FJ) 大島    【ANK-3421-00-00】【eo顧客S】メール文面の見直し対応
*   v40.00      2019/02/04   FJ) 美濃原  【ANK-3531-00-00】【eoフロント】ログイン画面のiDA対応
*
**********************************************************************/
package eo.web.webview.FUW00140SF;

import java.util.HashMap;
import java.util.Random;

import com.fujitsu.futurity.web.x00.JCCBusinessException;
import com.fujitsu.futurity.web.x00.JCCWebServiceException;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW00116SF.FUW00116SFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;
import eo.web.webview.mapping.FUSV0225_FUSV0225OPDBMapper;

/**
 * サービス選択のビューロジッククラスです。<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class FUW00140SFLogic extends JCCWebBusinessLogic
{
	/** サービスID */
	private static final String ID_FUSV0225 = "FUSV0225";

	/** 送信前モード：0 */
	private static final String SCREEN_MODE_0 = "0";

	/** 送信後モード：1 */
	private static final String SCREEN_MODE_1 = "1";

	// 2013/01/17 障害対応（ST2-2013-0000033） Fujiwara Mod Start
	/** 送信元メールアドレス */
	private static final String PRC_CFM_FROM_MLAD = "PRC_CFM_FROM_MLAD";
	// 2013/01/17 障害対応（ST2-2013-0000033） Fujiwara Mod End

	/** メールアドレス設定フィールドコード */
	private static final String MLAD_SET_FIELD_CD = "01";

	/** メールコード */
	private static final String MAIL_CD = "FUM1000014";

	/** APLConst.propertiesから取得するキー(送信先（BCC）メールアドレス) */
	private static final String FU_N_MSKM_FIN_MAIL_BCC_MLAD = "FU_N_MSKM_FIN_MAIL_BCC_MLAD";

	/**
	 * 初期表示処理
	 * 
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		// 画面遷移元IDを取得する。
		String screenId = JFUWebCommon.getScreenId(this);

		// サービスBean保持
		X31SDataBeanAccess serviceBean = getServiceFormBean();

		// FUW00140からの画面遷移の場合、"送信後モード"を設定
		if (JFUScreenConst.SCREEN_ID_FUW00140.equals(screenId))
		{
			serviceBean.sendMessageString(FUW00140SFConst.SCREEN_MODE, X31CWebConst.DATABEAN_SET_VALUE, SCREEN_MODE_1);
		}
		else
		{
			serviceBean.sendMessageString(FUW00140SFConst.SCREEN_MODE, X31CWebConst.DATABEAN_SET_VALUE, SCREEN_MODE_0);
		}

		// 申込受付実績登録部品実行
		JFUWebCommon.executeWebMskmUkJskAdd(this);

		return true;
	}

	/**
	 * 次へボタン押下処理
	 * 
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean send() throws Exception
	{
		//共有フォームBean
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess serviceBean = getServiceFormBean();

		// WEB新規情報を取得
		X31SDataBeanAccessArray beanArray = commoninfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		X31SDataBeanAccess web_new_infobean = beanArray.getDataBean(0);

		// WEB新規情報 >マンション情報
		X31SDataBeanAccessArray mansionInfo = web_new_infobean.getDataBeanArray(CommonInfoCFConst.MANSION_INFO);
		X31SDataBeanAccess mansionInfoBean = mansionInfo.getDataBean(0);

		// インスタンス化
		Random rnd = new Random(System.nanoTime());

		// 乱数の取得
		int ramNum = rnd.nextInt(Integer.MAX_VALUE);

		// 取得した乱数の桁数が10桁未満の場合、左から0埋めする。
		String ramStr = String.format("%010d", ramNum);

		// 物件管理番号
		String bkn_kanri_no = mansionInfoBean.sendMessageString(CommonInfoCFConst.BKN_KNRI_NO_16, X31CWebConst.DATABEAN_GET_VALUE);

		// マンション名
		String mansion_nm = mansionInfoBean.sendMessageString(CommonInfoCFConst.MANSION_NM_16, X31CWebConst.DATABEAN_GET_VALUE);

		// メール送信年月日時分
		String mail_send_ymd = JFUWebCommon.getOpeDateTime(this, null).substring(0, 12);

		// 運用年月日 + 1日
		String yuko_kigen_ymd = JFUWebCommon.addDay(JFUWebCommon.getOpeDate(this, null), 1);

		serviceBean.sendMessageString(FUW00140SFConst.MAIL_CD, X31CWebConst.DATABEAN_SET_VALUE, MAIL_CD);

		serviceBean.sendMessageString(FUW00140SFConst.CFM_YO_NO, X31CWebConst.DATABEAN_SET_VALUE, ramStr);

		serviceBean.sendMessageString(FUW00140SFConst.BKN_KNRI_NO, X31CWebConst.DATABEAN_SET_VALUE, bkn_kanri_no);

		serviceBean.sendMessageString(FUW00140SFConst.ML_SEND_YMDHM, X31CWebConst.DATABEAN_SET_VALUE, mail_send_ymd);

		serviceBean.sendMessageString(FUW00140SFConst.YK_KIGEN_YMD, X31CWebConst.DATABEAN_SET_VALUE, yuko_kigen_ymd);

		// -----メール類の設定------

		// APLConst.propertiesからURLを取得　【障害対応（IT1-No329）】
		String url = JFUWebCommon.getApplicationConst(JFUStrConst.FUW00140_LOGIN_URL);
		if (isMskmKbnAdd(web_new_infobean))
		{
			url = JFUWebCommon.getApplicationConst(JFUStrConst.FUW00140_LOGIN_ADD_URL);
		}

		// 2013/01/17 障害対応（ST2-2013-0000033） Fujiwara Mod Start
		// 送信元メールアドレス
		String sendm_mlad = JFUWebCommon.getApplicationConst(PRC_CFM_FROM_MLAD);
		// 2013/01/17 障害対応（ST2-2013-0000033） Fujiwara Mod End

		serviceBean.sendMessageString(FUW00140SFConst.SENDM_MLAD, X31CWebConst.DATABEAN_SET_VALUE, sendm_mlad);

		// 送信先一覧明細
		X31SDataBeanAccessArray sendListArray = serviceBean.getDataBeanArray(FUW00140SFConst.SEND_LIST);
		sendListArray.clearArray();

		// 送信先メールアドレス
		String mlad = serviceBean.sendMessageString(FUW00140SFConst.SENDS_MLAD, X31CWebConst.DATABEAN_GET_VALUE);

		sendListArray.addDataBean();
		X31SDataBeanAccess sendDatatype = sendListArray.getDataBean(sendListArray.getCount() - 1);

		sendDatatype.sendMessageString(FUW00140SFConst.MLAD_01, X31CWebConst.DATABEAN_SET_VALUE, mlad);

		// メールアドレス設定フィールドコード
		sendDatatype.sendMessageString(FUW00140SFConst.MLAD_SET_FIELD_CD_01, X31CWebConst.DATABEAN_SET_VALUE, MLAD_SET_FIELD_CD);

		// ■送信先メールアドレス（BCC用）
		sendListArray.addDataBean();
		X31SDataBeanAccess sendBccData = sendListArray.getDataBean(sendListArray.getCount() - 1);
		// メール送信先タイプ 送信先メールアドレス
		String bccMailAd = JFUWebCommon.getApplicationConst(FU_N_MSKM_FIN_MAIL_BCC_MLAD);
		sendBccData.sendMessageString(FUW00116SFConst.MLAD_01, X31CWebConst.DATABEAN_SET_VALUE, bccMailAd);
		// メール送信先タイプ メールアドレス設定フィールドコード BCC
		sendBccData.sendMessageString(FUW00116SFConst.MLAD_SET_FIELD_CD_01, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00788_04);

		// メール本文非定型文字列リスト
		X31SDataBeanAccessArray htkMojiListArray = serviceBean.getDataBeanArray(FUW00140SFConst.HTK_MOJI_LIST);
		htkMojiListArray.clearArray();

		// ■本文非定型置換文字 メールアドレス
		htkMojiListArray.addDataBean();
		X31SDataBeanAccess htkMojiDatatype = htkMojiListArray.getDataBean(htkMojiListArray.getCount() - 1);

		htkMojiDatatype.sendMessageString(FUW00140SFConst.TEXT_HTK_CKAM_MOJI_02, X31CWebConst.DATABEAN_SET_VALUE, mlad);

		// ■本文非定型置換文字 URL
		htkMojiListArray.addDataBean();
		htkMojiDatatype = htkMojiListArray.getDataBean(htkMojiListArray.getCount() - 1);

		htkMojiDatatype.sendMessageString(FUW00140SFConst.TEXT_HTK_CKAM_MOJI_02, X31CWebConst.DATABEAN_SET_VALUE, url);

		// ■本文非定型置換文字 有効期限

		String yyyy = yuko_kigen_ymd.substring(0, 4); // 分割後の年
		String mm = yuko_kigen_ymd.substring(4, 6); // 分割後の月
		String dd = yuko_kigen_ymd.substring(6, 8); // 分割後の日
		String yuko_kigen_ymd1 = yyyy + "年" + mm + "月" + dd + "日";

		htkMojiListArray.addDataBean();
		htkMojiDatatype = htkMojiListArray.getDataBean(htkMojiListArray.getCount() - 1);

		htkMojiDatatype.sendMessageString(FUW00140SFConst.TEXT_HTK_CKAM_MOJI_02, X31CWebConst.DATABEAN_SET_VALUE, yuko_kigen_ymd1);

		// ■本文非定型置換文字 乱数
		htkMojiListArray.addDataBean();
		htkMojiDatatype = htkMojiListArray.getDataBean(htkMojiListArray.getCount() - 1);

		htkMojiDatatype.sendMessageString(FUW00140SFConst.TEXT_HTK_CKAM_MOJI_02, X31CWebConst.DATABEAN_SET_VALUE, ramStr);

		// ■本文非定型置換文字 マンション名
		htkMojiListArray.addDataBean();
		htkMojiDatatype = htkMojiListArray.getDataBean(htkMojiListArray.getCount() - 1);

		htkMojiDatatype.sendMessageString(FUW00140SFConst.TEXT_HTK_CKAM_MOJI_02, X31CWebConst.DATABEAN_SET_VALUE, mansion_nm);

		// ■本文非定型置換文字 物件管理番号
		htkMojiListArray.addDataBean();
		htkMojiDatatype = htkMojiListArray.getDataBean(htkMojiListArray.getCount() - 1);

		// IT1-2013-0000254 Otsuka 2013/01/22 start
		if (!JFUStrConst.EMPTY.equals(bkn_kanri_no))
		{
			bkn_kanri_no = JFUStrConst.KIGOU_KAKKO_STA_HALF + bkn_kanri_no + JFUStrConst.KIGOU_KAKKO_END_HALF;
		}
		else
		{
			bkn_kanri_no = JFUStrConst.HALF_SPACE;
		}
		// IT1-2013-0000254 Otsuka 2013/01/22 end

		htkMojiDatatype.sendMessageString(FUW00140SFConst.TEXT_HTK_CKAM_MOJI_02, X31CWebConst.DATABEAN_SET_VALUE, bkn_kanri_no);

// ANK-3421-00-00 ADD START
		X31SDataBeanAccessArray mailMeisaiListArray = serviceBean.getDataBeanArray(FUW00140SFConst.MAIL_DTL_CD_LIST);
		X31SDataBeanAccess mailMeisaiListDataType = mailMeisaiListArray.getDataBean(0);
		if (null == mailMeisaiListDataType)
		{
			mailMeisaiListArray.addDataBean();
			mailMeisaiListDataType = mailMeisaiListArray.getDataBean(0);
		}
		mailMeisaiListDataType.sendMessageString(FUW00140SFConst.MAIL_DTL_CD_03, X31CWebConst.DATABEAN_SET_VALUE,
				JFUStrConst.MAIL_DTL_CD_FUD1000079);
// ANK-3421-00-00 ADD END
		
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, ID_FUSV0225);

		// 設定値格納用マップを生成
		FUSV0225_FUSV0225OPDBMapper mapper = new FUSV0225_FUSV0225OPDBMapper();

		//値を設定
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 検索結果格納用マップを生成。
		HashMap<Object, Object> outputMap = new HashMap<Object, Object>();

		/* 2012/12/11 IT2-2012-0002027 Y.Saitou ADD */
		X31SDataBeanAccess[] beans = { serviceBean, commoninfoBean }; // 共有・サービスフォームBean

		mapper.setFUSV022501SC(beans, inputMap, JPCModelConstant.FUNC_CD_1); // メール送信情報登録
		mapper.setFUSV022502SC(beans, inputMap, JPCModelConstant.FUNC_CD_1); // 低価格マンション料金確認用番号登録

		// サービス呼び出し
		try
		{
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (JCCWebServiceException jccexception)
		{
			// システムエラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// 遷移先画面の設定
		JFUWebCommon.setScreenId(this, JFUScreenConst.SCREEN_ID_FUW00140, JFUScreenConst.SCREEN_ID_FUW00140);

		serviceBean.sendMessageString(FUW00140SFConst.SCREEN_MODE, X31CWebConst.DATABEAN_SET_VALUE, SCREEN_MODE_1);

		// ---引継情報の作成----
		// 画面遷移モード
		web_new_infobean.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.SCREEN_MODE_DEF);
		// 遷移先画面ＩＤ
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00140);
		// 遷移先画面名称
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00140);

		// 申込完了メール送信部品呼出処理
		JFUWebCommon.sendMskmFinMail(this, outputMap, ID_FUSV0225);
		
		return true;
	}

	/**
	 * 戻るボタン押下処理
	 * 
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean back() throws Exception
	{
		// 次画面IDの設定
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ●WEB新規情報を取得
		X31SDataBeanAccessArray beanArray = commoninfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		X31SDataBeanAccess subbean = beanArray.getDataBean(0);

		// 引継情報の作成
		// 画面遷移モード
		subbean.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_SET_VALUE, SCREEN_MODE_0);
// ANK-3328-00-00 MOD START
//		// 遷移先画面ＩＤ
//		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00134);
//		// 遷移先画面名称
//		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00134);
		// 遷移先画面ＩＤ
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00165);
		// 遷移先画面名称
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00165);
// ANK-3328-00-00 MOD END

		return true;
	}

	/**
	 * 追加申込判定処理
	 * 
	 * <br>
	 * @param web_new_infobean ＷＥＢ新規情報
	 * @return true:追加申込、false:新規申込
	 */
	private boolean isMskmKbnAdd(X31SDataBeanAccess web_new_infobean)
	{
		// 申込区分
		String mskm_kbn = web_new_infobean.sendMessageString(CommonInfoCFConst.MSKM_KBN_06, X31CWebConst.DATABEAN_GET_VALUE);

		// 申込区分＝追加申込 //
		if (JFUStrConst.MSKM_KBN_ADD.equals(mskm_kbn))
		{
			return true;
		}
		return false;
	}

}
