/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：KKW00196SFLogic
 *	ソースファイル名：KKW00196SFLogic.java
 *	作成者			：FJ)笠川
 *	日付			：2016年05月31日
 *＜機能概要＞
 *	TRANKシステム起動画面ビューロジッククラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v26.0.0		2016/05/31	FJ)笠川 	【ANK-2687-00-00】プレミアムサポート施策
 **********************************************************************/
package eo.web.webview.KKW00196SF;


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.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
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>クラス名：TRANKシステム起動画面ビューロジック <dd>クラス説明：画面上のボタン押下時の各処理を記述します。 <dd>備考：
 * 
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW00196SFLogic 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);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);

		// SYSIDを取得
		String sysid = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SYSID, X31CWebConst.DATABEAN_GET_VALUE);

		// ＴＲＡＮＫ画面遷移区分を取得
		String trank_div = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_TRANK_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		

		//ワンタイムパスワード登録サービスに必要な項目を取得し、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(KKW00196SFConst.USER_ID, X31CWebConst.DATABEAN_SET_VALUE, userId);
		dataBean.sendMessageString(KKW00196SFConst.ORG_CD, X31CWebConst.DATABEAN_SET_VALUE, orgCd);
		dataBean.sendMessageString(KKW00196SFConst.POSITION_CD, X31CWebConst.DATABEAN_SET_VALUE, positionCd);

		// プロパティファイルより共通TRANKシステムのシステムIDを取得
		String trankSysId = JCMAPLConstMgr.getString(JKKKeiNewCmnLogicUtil.PROP_TRANK_SYS_ID);
		dataBean.sendMessageString(KKW00196SFConst.OUT_SYS_CD, X31CWebConst.DATABEAN_SET_VALUE, trankSysId);

		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 trankURL = "";
		// 遷移先画面を判定
		if ("1".equals(trank_div))
		{

			// プロパティファイルよりTRANKシステムのチケット利用申請画面のURLを取得
			trankURL = JCMAPLConstMgr.getString(JKKCommonConst.PROP_TRATICKET_URL);

		}else{
			
			// プロパティファイルよりTRANKシステムのお客様検索画面のURLを取得
			trankURL = JCMAPLConstMgr.getString(JKKCommonConst.PROP_TRACUSTOMER_URL);
		}
		// 特定項目置換用の文字コード取得
		String encType = JCCWebCommon.getApplicationConst(URLENCODE_ENCTYPE_KEY);
		// 特定項目置換処理
		trankURL = trankURL.replaceAll(ONET_PWD_EXCHANGE_WORD, encode(one_pass, encType))// ワンタイムパスワード
							.replaceAll(SYSID_EXCHANGE_WORD, encode(sysid, encType));// SYSID

		dataBean.sendMessageString(KKW00196SFConst.TRANK_URL, X31CWebConst.DATABEAN_SET_VALUE, trankURL);

		// 共有フォームBean設定
		JKKWebCommon.setSelfScreenID(this);


		return true;
	}
	// URLエンコーダ
	private String encode(String endVal, String encType) throws UnsupportedEncodingException
	{
		return URLEncoder.encode(endVal, encType);
	}

}