/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：KKW12506SFLogic
 *	ソースファイル名：KKW12506SFLogic.java
 *	作成者			：FJ)北村
 *	日付			：2023年04月18日
 *＜機能概要＞
 *	MaRCoシステム起動画面ビューロジッククラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v66.0.0		2023/04/18	FJ)北村 	【ANK-4340-00-00】【eo】 eSM再構築対応
 **********************************************************************/
package eo.web.webview.KKW12506SF;


import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.model.common.JCMAPLConstMgr;
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.JCRStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KKW12504SF.KKW12504SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKKeiNewCmnLogicUtil;
import eo.web.webview.common.JKKWebCommon;
import eo.web.webview.mapping.CCSV0006_CCSV0006OPDBMapper;

/**
 * <dd>クラス名：MaRCoシステム起動画面ビューロジック <dd>クラス説明：画面上のボタン押下時の各処理を記述します。 <dd>備考：
 * 
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW12506SFLogic extends JCCWebBusinessLogic
{

	/** マンション営業支援システム（参照機能）URL取得用キー */
	private static final String MACRO_URL_KEY = "KK_OTHER_SYS_004";
	/** P-ID置換え文字 */
	private static final String P_ID_EXCHANGE_WORD = "%P_ID%";
	/** マンションID置換え文字 */
	private static final String MANSION_ID_EXCHANGE_WORD = "%M_ID%";
	/** CAT-ID置換え文字 */
	private static final String CAT_ID_EXCHANGE_WORD = "%CAT_ID%";
	/** ワンタイムパスワード置換え文字 */
	private static final String ONET_PWD_EXCHANGE_WORD = "%ONET_PWD%";
	/**クエリ文字URLエンコーディング用の文字コード取得用キー*/
	private static final String URLENCODE_ENCTYPE_KEY = "KK_URLENCODE_ENCTYPE";

	/**
	 * 初期表示処理
	 * 
	 * <dd>備考：なし。
	 * 
	 * @return true/false
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public boolean actionInit() throws Exception 
	{
		
		X31SDataBeanAccess dataBean = getServiceFormBean();

		// パラメータマップを作成する。
		HashMap paramMap = new HashMap();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKKeiNewCmnLogicUtil.CCSV0006);

		// 顧客契約引継リスト取得
		HashMap sessionParam = JCCWebCommon.getScreenInfo(this);

		//ワンタイムパスワード登録サービスに必要な項目を取得し、DataBeanに設定しておく。
		// ユーザーIDの取得
		X31SDataBeanAccess commonBean = getCommonInfoBean();
		String userId = commonBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE);
		String orgCd = "";
		String positionCd = "";

		X31SDataBeanAccessArray kggrpCdList = commonBean.getDataBeanArray(CommonInfoCFConst.KGGRP_CD_LIST);
		X31SDataBeanAccess subbean = kggrpCdList.getDataBean(0);
		if (subbean != null)
		{
			// 組織コードの取得
			orgCd = subbean.sendMessageString(CommonInfoCFConst.ORG_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			// 立場コードの取得
			positionCd = subbean.sendMessageString(CommonInfoCFConst.POSITION_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		}
		dataBean.sendMessageString(KKW12506SFConst.USER_ID, X31CWebConst.DATABEAN_SET_VALUE, userId);
		dataBean.sendMessageString(KKW12506SFConst.ORG_CD, X31CWebConst.DATABEAN_SET_VALUE, orgCd);
		dataBean.sendMessageString(KKW12506SFConst.POSITION_CD, X31CWebConst.DATABEAN_SET_VALUE, positionCd);

		// プロパティファイルより共通MaRCoシステムのシステムIDを取得
		String marcoSysId = JCMAPLConstMgr.getString(JCRStrConst.PROP_KEY_SYS_ID_MARCO);
		dataBean.sendMessageString(KKW12506SFConst.OUT_SYS_CD, X31CWebConst.DATABEAN_SET_VALUE, marcoSysId);

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKKeiNewCmnLogicUtil.CCSV0006);
		
		CCSV0006_CCSV0006OPDBMapper mapper = new CCSV0006_CCSV0006OPDBMapper();
		X31SDataBeanAccess[] Bean = { dataBean };
		HashMap dataMap = new HashMap();
		mapper.setCCSV000601SC(Bean, dataMap, JPCModelConstant.FUNC_CD_1);
		
		// 検索結果格納用マップ
		HashMap outputMap = new HashMap();
		
		try
		{
			invokeService(paramMap, dataMap, outputMap);
		}
		catch (JCCWebServiceException e1)
		{
			// エラーの場合はシステムエラーを表示する
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0400_CE, new String[]{""}, "");
			return false;
		}

		HashMap parentMap = null;
		if(outputMap.containsKey("CCSV000601SC")){
			parentMap = (HashMap)outputMap.get("CCSV000601SC");
		}
		// ワンタイムパスワード ← ワンタイムパスワード登録.ワンタイムパスワード
		String one_pass = (String)parentMap.get("one_time_pwd");

		String marcoURL = "";

		// プロパティファイルよりMaRCoシステムのマンション営業支援システム（参照機能）のURLを取得
		marcoURL = JCMAPLConstMgr.getString(MACRO_URL_KEY);

		// 特定項目置換用の文字コード取得
		String encType = JCCWebCommon.getApplicationConst(URLENCODE_ENCTYPE_KEY);

		// 引継ぎ情報取得
		ArrayList dataArray = (ArrayList)sessionParam.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		String p_id = "";
		String mansion_id = "";
		String cat_id = "";
		
		if (dataArray != null) 
		{
			HashMap<String, Object> hikiParam = (HashMap<String, Object>)dataArray.get(0);
			p_id = (String)hikiParam.get(KKW12504SFConst.MANS_BKN_INF_P_ID);
			mansion_id = (String)hikiParam.get(KKW12504SFConst.MANS_BKN_INF_MANS_ID);
			cat_id = (String)hikiParam.get(KKW12504SFConst.MANS_BKN_INF_CAT_ID);
		}

		// 特定項目置換処理
		marcoURL = marcoURL.replaceAll(P_ID_EXCHANGE_WORD, encode(p_id, encType))	// P-ID
		   .replaceAll(MANSION_ID_EXCHANGE_WORD, encode(mansion_id, encType))		// マンションID
		   .replaceAll(CAT_ID_EXCHANGE_WORD, encode(cat_id, encType))				// CAT-ID
		   .replaceAll(ONET_PWD_EXCHANGE_WORD, encode(one_pass, encType));			// ワンタイムパスワード

		dataBean.sendMessageString(KKW12506SFConst.MARCO_URL, X31CWebConst.DATABEAN_SET_VALUE, marcoURL);

		// 共有フォームBean設定
		JKKWebCommon.setSelfScreenID(this);

		return true;
	}

	// URLエンコーダ
	private String encode(String endVal, String encType) throws UnsupportedEncodingException
	{
		return URLEncoder.encode(endVal, encType);
	}

}