/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム構築
 *	モジュール名	：CRW02501SFLogic
 *	ソースファイル名：CRW02501SFLogic.java
 *	作成者			：富士通
 *	日付			：2011年10月25日
 *＜機能概要＞
 *	問合せ客情報詳細ビューロジック
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	ｖ1.00.00
*	ｖ4.00.00	2013/03/04	FJ)伊藤		OT-2013-0000322対応
 *
 ********************************************************************************/

package eo.web.webview.CRW02501SF;

import java.util.EventObject;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CID;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x33.X33SException;

import eo.common.constant.JCRStrConst;
import eo.common.constant.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CRW02401SF.CRW02401SFConst;
import eo.web.webview.CRW02603SF.CRW02603SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCRScreenConst;
import eo.web.webview.common.JCRWebCommon;
import eo.web.webview.mapping.CRSV0100_CRSV0100OPDBMapper;

/**
 * 問合せ客情報詳細ビューロジック.<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class CRW02501SFLogic extends JCCWebBusinessLogic
{

	/**
	 * 親クラスX31BWebBusinessLogicのreceiveMessageWebを
	 * オーバーライドして自動生成されたメソッドです。
	 * @param arg0 (I) イベント情報
	 * @param arg1 (I) WebFWでは使用しません
	 * @param arg2 (I) WebFWでは使用しません
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws X33SException X33SException
	 */
	@Override
	protected boolean receiveMessageWeb(X31CID arg0, Object arg1,
			EventObject arg2) throws X33SException
	{
		return false;
	}

	/**
	 * 初期表示処理<br>
	 * <br>
	 * 問合せ客情報詳細（初期表示）サービスを呼び出し、
	 * 問合せ客情報詳細画面の初期表示を行う。
	 * 
	 * @return boolean
	 * @exception Exception Exception
	 */
	public boolean init() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		JCCWebCommon.getScreenInfo(this);

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// システム日付の取得
		String sysDate = JCRWebCommon.getSysDate();

		// サービスフォームBean項目の設定
		bean.sendMessageString(CRW02501SFConst.STDARD_YMD, X31CWebConst.DATABEAN_SET_VALUE, sysDate);

		// ボタン状態の設定
		setButtonStatus(this);

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// ユースケースID格納用マップ
		HashMap<Object, String> paramMap = new HashMap<Object, String>();

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0100");

		// マッピングクラス
		CRSV0100_CRSV0100OPDBMapper mapper = new CRSV0100_CRSV0100OPDBMapper();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// マッピング処理（上り）
		mapper.setCRSV010001SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setCRSV010002SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		mapper.setGETSEIKYKEI1RCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		mapper.setGETCUST1ICC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// マッピング処理（下り）
		mapper.getCRSV010001SC(paramBean, outputMap);
		mapper.getCRSV010002SC(paramBean, outputMap);
		mapper.getGETSEIKYKEI1RCC(paramBean, outputMap);
		mapper.getGETCUST1ICC(paramBean, outputMap);

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// なし。
		
		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW02501);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW02501);

		return true;
	}

	/**
	 * 編集ボタン押下処理
	 * <br>
	 * 問合せ客情報更新画面を表示する。
	 * @return boolean
	 * @throws Exception
	 */
	public boolean edit() throws Exception
	{
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// 引き継ぎの情報を格納するMAPを生成する。 
		HashMap<String, Object> hktgMap = new HashMap<String, Object>();
		
		hktgMap.put(CRW02603SFConst.SVC_KEI_NO,
				bean.sendMessageString(CRW02501SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		hktgMap.put(CRW02603SFConst.SVC_KEI_KAISEN_UCWK_NO,
				bean.sendMessageString(CRW02501SFConst.SVC_KEI_KAISEN_UCWK_NO, X31CWebConst.DATABEAN_GET_VALUE));
		hktgMap.put(CRW02603SFConst.PROSCST_NO,
				bean.sendMessageString(CRW02501SFConst.PROSCST_NO, X31CWebConst.DATABEAN_GET_VALUE));
		hktgMap.put(CRW02603SFConst.SYSID,
				bean.sendMessageString(CRW02501SFConst.SYSID, X31CWebConst.DATABEAN_GET_VALUE));

		// 画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
		JCRWebCommon.setScreenInfo(this, JCRScreenConst.SCREEN_ID_CRW02603, hktgMap);

		// 戻り先画面ID設定（JCCWebCommon.setScreenId)を使用し、次画面への引継情報を設定する。
		JCCWebCommon.setScreenId(this, JCRScreenConst.SCREEN_ID_CRW02604, JCRScreenConst.SCREEN_ID_CRW02501);

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_ID_CRW02603);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JCRScreenConst.SCREEN_NAME_CRW02603);

		return true;
	}

	/**
	 * 対応ボタン押下処理<br>
	 * <br>
	 * 詳細出力中のお客様・問合せ客の新規問合せ入力を行う為、
	 * 問合せ対応メイン初期画面へ遷移する。
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean transferToMain() throws Exception
	{
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// 引き継ぎの情報を格納するMAPを生成する。 
		HashMap<String, Object> hktgMap = new HashMap<String, Object>();

		hktgMap.put(CRW02401SFConst.SLCT_SVC_KEI_NO,
				bean.sendMessageString(CRW02501SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		hktgMap.put(CRW02401SFConst.SLCT_PROSCST_NO,
				bean.sendMessageString(CRW02501SFConst.PROSCST_NO, X31CWebConst.DATABEAN_GET_VALUE));
		hktgMap.put(CRW02401SFConst.TRANSFER_TOMAIN_FLG, Boolean.TRUE);
		
		// 画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
		JCRWebCommon.setScreenInfo(this, JCRScreenConst.SCREEN_ID_CRW02401, hktgMap);

		// -------------------------------------------------- //
		// (6)共有フォームBeanの設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, 
				JCCScreenConst.SCREEN_ID_CCW00105);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, 
				JCCScreenConst.SCREEN_NAME_CCW00105);

		return true;
	}

	/**
	 * ボタン状態設定処理<br>
	 * <br>
	 * ログインユーザーの権限コード、遷移元画面の情報により、ボタンの使用可否の状態をセットします。
	 * 
	 * @param viewLogic VIEWロジックインスタンス
	 */
	private void setButtonStatus(JCCWebBusinessLogic viewLogic)
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 権限制御定義ファイルより、ボタンの表示／非表示判定を行う
		boolean editAutority =
			JCRWebCommon.checkAuthority(viewLogic, viewLogic.getGamenId() + ";" + JCRStrConst.AUTHORITY_KEY_EDIT_FLG);

		// サービスフォームBeanにボタンの状態を設定
		bean.sendMessageBoolean(CRW02501SFConst.EDIT_BUTTON_FLG, X31CWebConst.DATABEAN_SET_VALUE, editAutority);
	}
	
}
