/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：KKW00198SFLogic
 *	ソースファイル名：KKW00198SFLogic.java
 *	作成者			：FJ)鈴木
 *	日付			：2020年01月24日
 *＜機能概要＞
 *	TRANKシステム起動画面ビューロジッククラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v48.0.0		2020/01/24	FJ)鈴木 	【ANK-3796-00-00】テレビリースサービス導入対応
 *	v49.0.0		2020/06/15	FJ)荒木 	【ANK-3840-00-00】テレビリースサービス新規申込対応
 *	v52.0.0		2021/01/06	GDC)ミコ 	【ANK-3910-00-00】定額サービスリース品追加対応
 **********************************************************************/
package eo.web.webview.KKW00198SF;


import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
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.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JKKStringUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KKW22101SF.KKW22101SFConst;
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>クラス名：VCMSシステム起動画面ビューロジック <dd>クラス説明：画面上のボタン押下時の各処理を記述します。 <dd>備考：
 * 
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW00198SFLogic extends JCCWebBusinessLogic
{

	/** ワンタイムパスワード置換え文字 */
	private static final String ONET_PWD_EXCHANGE_WORD = "%ONET_PWD%";
	/** SYSID置換え文字 */
	private static final String SYSID_EXCHANGE_WORD = "%SYSID%";
	/**クエリ文字URLエンコーディング用の文字コード取得用キー*/
	private static final String URLENCODE_ENCTYPE_KEY = "KK_URLENCODE_ENCTYPE";

	/**
	 * 初期表示処理
	 * 
	 * <dd>備考：なし。
	 * 
	 * @return true/false
	 * @throws Exception 
	 */
	public boolean actionInit() throws Exception 
	{
		
		X31SDataBeanAccess dataBean = getServiceFormBean();

		// パラメータマップを作成する。
		HashMap paramMap = new HashMap();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKKeiNewCmnLogicUtil.CCSV0006);

		// 顧客契約引継リスト取得
		JCCWebCommon.getScreenInfo(this);
		X31SDataBeanAccessArray custKeiHktgiList = dataBean.getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
// ANK-3910-00-00 MOD START
//		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
//
//		// SYSIDを取得
//		String sysid = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SYSID, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccess custKeiHktgiInf = null;
		String sysid = null;
		
		if(custKeiHktgiList == null)
		{
			custKeiHktgiInf = null;
			sysid = null;
		}
		else
		{
			custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
			
			// SYSIDを取得
			sysid = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SYSID, X31CWebConst.DATABEAN_GET_VALUE);
		}
// ANK-3910-00-00 MOD END

		//ワンタイムパスワード登録サービスに必要な項目を取得し、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(KKW00198SFConst.USER_ID, X31CWebConst.DATABEAN_SET_VALUE, userId);
		dataBean.sendMessageString(KKW00198SFConst.ORG_CD, X31CWebConst.DATABEAN_SET_VALUE, orgCd);
		dataBean.sendMessageString(KKW00198SFConst.POSITION_CD, X31CWebConst.DATABEAN_SET_VALUE, positionCd);

		// プロパティファイルよりVCMSシステムのシステムIDを取得
		String vcmsSysId = JCMAPLConstMgr.getString(JKKKeiNewCmnLogicUtil.PROP_VCMS_SYS_ID);
		dataBean.sendMessageString(KKW00198SFConst.OUT_SYS_CD, X31CWebConst.DATABEAN_SET_VALUE, vcmsSysId);

		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");

		//プロパティよりURL取得
		String vcmsURL = "";
// ANK-3910-00-00 MOD START
//// ANK-3840-00-00 ADD START
//		String hktgiVcmsDiv = custKeiHktgiInf.sendMessageString(KKW00198SFConst.HKTGI_VCMS_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
//// ANK-3840-00-00 ADD END
//
//// ANK-3840-00-00 MOD START
////		vcmsURL = JCMAPLConstMgr.getString(JKKCommonConst.PROP_VCMS_URL);
//		if("tegak_svc_kei".equals(hktgiVcmsDiv) || "".equals(hktgiVcmsDiv)|| null == hktgiVcmsDiv)
//		{
//			vcmsURL = JCMAPLConstMgr.getString(JKKCommonConst.PROP_VCMS_URL);
//		}
//		else if("tegak_svc_seisan".equals(hktgiVcmsDiv))
//		{
//			vcmsURL = JCMAPLConstMgr.getString(JKKCommonConst.PROP_VCMS_SEISAN_URL);
//		}
//// ANK-3840-00-00 MOD END
//
//		// 特定項目置換用の文字コード取得
//		String encType = JCCWebCommon.getApplicationConst(URLENCODE_ENCTYPE_KEY);
//		// 特定項目置換処理
//		vcmsURL = vcmsURL.replaceAll(ONET_PWD_EXCHANGE_WORD, encode(one_pass, encType))// ワンタイムパスワード
//							.replaceAll(SYSID_EXCHANGE_WORD, encode(sysid, encType));// SYSID

		// SYSIDが未入力の場合
		if(JKKStringUtil.isNullSpace(sysid))
		{
			// vcmsURLのgetを行います。
			vcmsURL = JCMAPLConstMgr.getString(JKKCommonConst.PROP_VCMS_NOSYSID_URL);
			
			// vcmsURLにreplaceをかけます
			// 特定項目置換用の文字コード取得
			String encType = JCCWebCommon.getApplicationConst(URLENCODE_ENCTYPE_KEY);
			// 特定項目置換処理
			vcmsURL = vcmsURL.replaceAll(ONET_PWD_EXCHANGE_WORD, encode(one_pass, encType));// ワンタイムパスワード
		}
		else //上記以外の場合
		{
			String hktgiVcmsDiv = custKeiHktgiInf.sendMessageString(KKW00198SFConst.HKTGI_VCMS_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
			if("tegak_svc_kei".equals(hktgiVcmsDiv) || "".equals(hktgiVcmsDiv)|| null == hktgiVcmsDiv)
			{
				vcmsURL = JCMAPLConstMgr.getString(JKKCommonConst.PROP_VCMS_URL);
			}
			else if("tegak_svc_seisan".equals(hktgiVcmsDiv))
			{
				vcmsURL = JCMAPLConstMgr.getString(JKKCommonConst.PROP_VCMS_SEISAN_URL);
			}
	
			// 特定項目置換用の文字コード取得
			String encType = JCCWebCommon.getApplicationConst(URLENCODE_ENCTYPE_KEY);
			// 特定項目置換処理
			vcmsURL = vcmsURL.replaceAll(ONET_PWD_EXCHANGE_WORD, encode(one_pass, encType))// ワンタイムパスワード
								.replaceAll(SYSID_EXCHANGE_WORD, encode(sysid, encType));// SYSID
		}
// ANK-3910-00-00 MOD END
		dataBean.sendMessageString(KKW00198SFConst.VCMS_URL, X31CWebConst.DATABEAN_SET_VALUE, vcmsURL);

		// 共有フォームBean設定
		JKKWebCommon.setSelfScreenID(this);


		return true;
	}
	// URLエンコーダ
	private String encode(String endVal, String encType) throws UnsupportedEncodingException
	{
		return URLEncoder.encode(endVal, encType);
	}

}