/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：契約管理システム
*   モジュール名    ：グループコミュニティ詳細表示画面
*   ソースファイル名：KKW02535SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年07月13日
*＜機能概要＞
*   グループコミュニティ詳細情報を表示する。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/07/13   FJ）今西    新規作成
*	v2.00.00	2012/05/13   FJ)砂川	【IT1-2012-0000433】利用終了日が最大年月日の場合は表示しないように修正
*
**********************************************************************/
package eo.web.webview.KKW02535SF;

import java.util.HashMap;

import com.fujitsu.futurity.common.JSYwebLog;
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.mapping.KKSV0492_KKSV0492OPDBMapper;

public class KKW02535SFLogic extends JCCWebBusinessLogic{


	/**
	 * 初期表示処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionInit() throws Exception
	{
		// 引き継ぎの情報MAPを取得する。 
		JCCWebCommon.getScreenInfo(this);
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// メッセージ表示用
		String[] msgInfo = new String[1];
		
		// DataBean設定処理（引継情報）
		setHktgiBean(paramBean);

		// 初期表示サービス呼出処理
		executeInitSvc(paramBean);
		
		//DataBean設定処理（サービスの結果判定）
		setRstBean(paramBean);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		return true;
	}
	
	
	/**
	 * 戻るボタン処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionBack() throws Exception
	{
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先画面IDを取得し、設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, 
				JCCWebCommon.getScreenId(this));
		
		// 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[] paramBean)
	{

		// 運用日付取得してDataBeanにセットする
		String use_ymd = JCCWebCommon.getOpeDate(this, null);
		paramBean[0].sendMessageString(KKW02535SFConst.USE_YMD, X31CWebConst.DATABEAN_SET_VALUE, use_ymd);
		

		// 顧客契約引継リストの取得
		X31SDataBeanAccessArray hktgilist = paramBean[0].getDataBeanArray(KKW02535SFConst.CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess hktgiBean = hktgilist.getDataBean(0);
		
		//引継リストから取得した項目をDataBeanにセットしなおす

		// SYSID
		String sysid = hktgiBean.sendMessageString(KKW02535SFConst.SYSID_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02535SFConst.SYSID,  X31CWebConst.DATABEAN_SET_VALUE, sysid);

		// サービス契約番号
		String svc_kei_no = hktgiBean.sendMessageString(KKW02535SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02535SFConst.SVC_KEI_NO,  X31CWebConst.DATABEAN_SET_VALUE, svc_kei_no);

		// 異動区分
		String ido_div = hktgiBean.sendMessageString(KKW02535SFConst.IDO_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02535SFConst.IDO_DIV,  X31CWebConst.DATABEAN_SET_VALUE, ido_div);

		
		// 異動理由コードの設定
		X31SDataBeanAccessArray ido_rsn_list = paramBean[0].getDataBeanArray(KKW02535SFConst.IDO_RSN_LIST);
		
		// 異動理由コードの要素数を取得
		int cnt = (Integer)hktgiBean.sendMessage(KKW02535SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_COUNT);
		
		// 異動理由コードの要素数分繰り返す
		for(int i = 0; i < cnt; i++)
		{
			X31SDataBeanAccess ido_rsn_bean = null;
			if(ido_rsn_list.getCount() - 1 >= i)
			{
				ido_rsn_bean = ido_rsn_list.getDataBean(i);
			}
			else
			{
				ido_rsn_bean = ido_rsn_list.addDataBean();
			}
			if (ido_rsn_bean == null) 
			{
				continue;
			}

			// 異動理由コードの取得
			String ido_rsn_cd = hktgiBean.sendMessageString(KKW02535SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_VALUE, i);
			
			// 異動理由.異動理由コードの設定
			ido_rsn_bean.sendMessageString(KKW02535SFConst.IDO_RSN_CD_02, X31CWebConst.DATABEAN_SET_VALUE, ido_rsn_cd);
			// 異動理由.異動理由メモの設定
			ido_rsn_bean.sendMessageString(KKW02535SFConst.IDO_RSN_MEMO_02, X31CWebConst.DATABEAN_SET_VALUE, "");
			
		}
		
		// オプションサービス契約番号
		String op_svc_kei_no = hktgiBean.sendMessageString(KKW02535SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE, 0);
		paramBean[0].sendMessageString(KKW02535SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, op_svc_kei_no);
		
		// 処理区分
		String tran_div = hktgiBean.sendMessageString(KKW02535SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02535SFConst.TRAN_DIV,  X31CWebConst.DATABEAN_SET_VALUE, tran_div);
		
		// 申込番号
		String mskm_no = hktgiBean.sendMessageString(KKW02535SFConst.MSKM_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02535SFConst.MSKM_NO, X31CWebConst.DATABEAN_SET_VALUE, mskm_no);
		
		// 申込明細番号
		String mskm_dtl_no = hktgiBean.sendMessageString(KKW02535SFConst.MSKM_DTL_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02535SFConst.MSKM_DTL_NO, X31CWebConst.DATABEAN_SET_VALUE, mskm_dtl_no);
		
		//TODO
		//予約適用年月日
		paramBean[0].sendMessageString(KKW02535SFConst.RSV_APLY_YMD, X31CWebConst.DATABEAN_SET_VALUE, "20991231");

	}
	
	
	/**
	 * グループコミュニティ詳細表示サービス実行処理(初期表示用)
	 * <br>
	 * @param paramBean DataBean項目の配列
	 */
	private void executeInitSvc(X31SDataBeanAccess[] paramBean)
	{
		
		//グループコミュニティ詳細表示サービス用MAP
		HashMap<String, Object> paramMap = new HashMap<String, Object>();		// パラメタ設定用マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();		// 入力用マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();		// 結果格納用マップ
	
		// パラメタ設定(サービスID)
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0492");
		
		// 上りマッピング処理(DataBean項目→サービス項目マッピング)
		KKSV0492_KKSV0492OPDBMapper mapper = new KKSV0492_KKSV0492OPDBMapper();
	
		// オプションサービス契約一意照会
		//カレント照会(機能コード"2")
		mapper.setKKSV049201SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		//上記で取得した世代と契約番号でPK照会(機能コード"1")
		mapper.setKKSV049202SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		// サービス呼出処理
		invokeService(paramMap, inputMap, outputMap);
		// 下りマッピング処理(サービス項目-DataBean項目マッピング)
		// オプションサービス契約一意照会
		mapper.getKKSV049201SC(paramBean, outputMap);
		mapper.getKKSV049202SC(paramBean, outputMap);
		
	}	
	
	
	/**
	 * グループコミュニティ詳細表示サービスの結果をDataBeanへ設定する
	 * <br>
	 * @param paramBean DataBean項目の配列
	 */
	private void setRstBean(X31SDataBeanAccess[] paramBean){
		// 終了年月日を取得
		String useend_ymd = paramBean[0].sendMessageString(KKW02535SFConst.USE_ENDYMD , X31CWebConst.DATABEAN_GET_VALUE);
		// IT1-2012-0000433 ADD START
		if(JKKCommonConst.MAX_YMD.equals(useend_ymd)){
			// IT1-2012-0000433 ADD END
			paramBean[0].sendMessageString(KKW02535SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
	}

}
