/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：契約管理システム
*   モジュール名    ：紹介情報照会
*   ソースファイル名：KKW01037SFLogic.java
*   作成者          ：FJ
*   日付            ：2014年01月24日
*＜機能概要＞
*   紹介情報照会用部品。
*＜修正履歴＞
*	バージョン	修正日			修正者		修正内容
*   7.00		2014/02/06      FJ)西面		【ANK-1756-00-00】新規作成
*	7.01		2014/02/14      FJ)西面		【IT1-2014-0000062】マンション名対応
**********************************************************************/
package eo.web.webview.KKW01037SF;

import java.util.HashMap;

import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.web.x31.X31CMessageResult;
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.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.JKKScreenConst;
import eo.web.webview.mapping.KKSV0784_KKSV0784OPDBMapper;

/**
 * @author FJ
 *
 */
@SuppressWarnings("serial")
public class KKW01037SFLogic extends JCCWebBusinessLogic
{
	
	/**
	 * 初期表示処理<br>
	 * <br>
	 * １．マッピングのために、DataBeanに遷移元情報を設定します。<br>
	 * ２．マルチセッション情報初期表示サービスの呼び出しを行います。<br>
	 * ３．画面表示用にDataBeanに格納します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionInit() throws Exception 
	{
	
		HashMap<String, Object> inputMap = null;		// サービスへの入力情報作成のためのMap
		HashMap<String, Object> outputMap = null;		// サービスへからの出力情報取得のためのMap
		
		// メッセージ表示用
		String[] msgInfo = new String[1];
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 前画面からの引継情報を取得します
		// 画面情報を取得し、サービスフォームBeanに設定。
		JCCWebCommon.getScreenInfo(this);
		
		// /// 共有フォームBean設定（画面名設定） /////
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_NAME_KKW01037);
		
		// DataBean設定処理（引継情報）
		setHktgiBean(bean);
		
		// サービス呼出し前処理を実施します。
		inputMap = new HashMap<String, Object>();
		
		setInitService(paramBean, inputMap);
		
		// サービスを実施します。
		outputMap = new HashMap<String, Object>();
		
		doService("KKSV0784", "KKSV0784", inputMap, outputMap);
				
		// 下りマッピングを実施します
		// マッピングデータから、画面で必要な項目を設定します。
		storeDataBeanInitService(paramBean, outputMap);
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	/**
	 * 戻る処理<br>
	 * <br>
	 * １．呼び出し元画面に戻ります。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionBack() throws Exception
	{
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		//画面遷移
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
	
		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_ID_KKW01021);
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW01021);
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}

	/**
	 * DataBean設定処理（初期表示）<br>
	 * <br>
	 * 画面DataBeanに必要な項目をセットします。<br>
	 * <br>
	 * @param paramBean DataBean項目の配列
	 */
	private void setHktgiBean(X31SDataBeanAccess bean)
	{
		// 顧客契約引継リスト取得
		X31SDataBeanAccessArray obj = bean.getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		
		X31SDataBeanAccess hktgBean = obj.getDataBean(0);
		
		// SYSID
		String sysid = hktgBean.sendMessageString(JKKCommonConst.HKTGI_SYSID, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW01037SFConst.HKTG_SYSID,  X31CWebConst.DATABEAN_SET_VALUE, sysid);
		
		// サービス契約番号取得
		String svc_kei_no = hktgBean.sendMessageString(JKKCommonConst.HKTGI_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW01037SFConst.HKTG_SVC_KEI_NO,  X31CWebConst.DATABEAN_SET_VALUE, svc_kei_no);
		
		//ポップアップモード
		String popup_mode = bean.sendMessageString("ポップアップモード", X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW01037SFConst.POPUP_MODE,  X31CWebConst.DATABEAN_SET_VALUE, popup_mode);
	}

	/** サービス呼出処理<br>
	 * @param usecase_id ユースケースID
	 * @param operation_id オペレーションID
	 * @param inputMap サービスへの入力情報Map（Not null）
	 * @param resultOutputMap サービスからの出力情報Map
	 * @return 
	 * @throws Exception 
	 */
	private X31CMessageResult doService(String usecase_id, String operation_id,
			HashMap<String, Object> inputMap, HashMap<String, Object> resultOutputMap) throws Exception
	{
		X31CMessageResult msgResult = null;		// 戻り値用
		HashMap<String, Object> paramMap = null;				// APサーバに依頼する情報を格納したマップオブジェクト

		try
		{
			// パラメタ設定
			paramMap = new HashMap<String, Object>();
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, usecase_id);
			paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, operation_id);

			// サービスの呼び出し
			msgResult = invokeService(paramMap, inputMap, resultOutputMap);
		}
		finally
		{
			paramMap = null;
		}

		return msgResult;
	}

	/**
	 * 
	 * マッピング：初期表示
	 * 
	 * @param paramBean
	 * @param inputMap
	 */
	private void setInitService(X31SDataBeanAccess[] paramBean, HashMap<String, Object> inputMap) {

		// 上りマッピング
		KKSV0784_KKSV0784OPDBMapper mapper = new KKSV0784_KKSV0784OPDBMapper();

		// 紹介情報照会
		mapper.setIntrInfoCfmCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
	}

	/**
	 * 初期表示Data保存処理<br>
	 * <br>
	 * <br>
	 * 
	 * @param  paramBean DataBeanアクセス配列
	 * @param  outputMap サービスからの出力情報Map
	 * @throws Exception
	 */
	private void storeDataBeanInitService(X31SDataBeanAccess[] paramBean,
			HashMap<String, Object> outputMap) throws Exception {
		
		// 下りマッピング
		KKSV0784_KKSV0784OPDBMapper mapper = new KKSV0784_KKSV0784OPDBMapper();

		if (outputMap != null) {
			mapper.getIntrInfoCfmCC(paramBean, outputMap);
		}
	}
}

