/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：エスカレーション制御情報更新ビューロジック
*   ソースファイル名：CRW09604SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年06月24日
*＜機能概要＞
*   エスカレーション制御情報更新画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/11/30   FJ）早崎    新規作成
*
**********************************************************************/

package eo.web.webview.CRW09604SF;

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.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x33.X33SException;

import eo.common.constant.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CRW09603SF.CRW09603SFConst;
import eo.web.webview.CRW09604SF.CRW09604SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCScreenConst;
import eo.web.webview.common.JCRScreenConst;
import eo.web.webview.common.JCRWebCommon;
import eo.web.webview.mapping.CRSV0221_CRSV0221OPDBMapper;
import eo.web.webview.mapping.CRSV0222_CRSV0222OPDBMapper;

/**
 * エスカレーション制御情報更新ビューロジック.<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class CRW09604SFLogic 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>
	 * 初期表示を行う。
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean initUpd() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1)引継情報の取得
		// 画面情報設定部品（JCRWebCommon.getScreenInfo)を使用し、引継情報を取得する。
		JCRWebCommon.getScreenInfo(this);


		// (2)サービスフォームBeanの設定
		// (a)システム日付の取得
		String sysDate = JCRWebCommon.getSysDate();

		// (b)検索条件の設定
		// システム日付
		bean.sendMessageString(CRW09604SFConst.KEY_STDARD_DAY, X31CWebConst.DATABEAN_SET_VALUE, sysDate);
		
		// (c)「エスカレーション可能権限」の設定
		
		//「エスカレーション制御情報詳細照会明細」
		X31SDataBeanAccessArray ecr0091B010List = bean.getDataBeanArray(CRW09604SFConst.ECR0091B010CBSMSG1LIST);
		
		//「エスカレーション可能権限」
		X31SDataBeanAccessArray escl_psb_position_List = bean.getDataBeanArray(CRW09604SFConst.ESCL_PSB_POSITION);
		
		for (int i = 0; i < ecr0091B010List.getCount(); i++){
			X31SDataBeanAccess ecr0091B010Bean = ecr0091B010List.getDataBean(i);
			X31SDataBeanAccess escl_psb_position_Bean = escl_psb_position_List.addDataBean();
			
			String esclCd = ecr0091B010Bean.sendMessageString(CRW09604SFConst.L1_ESCL_PSB_POSITION_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
			String esclNm = ecr0091B010Bean.sendMessageString(CRW09604SFConst.L1_ESCL_PSB_POSITION_CD_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
			
			escl_psb_position_Bean.sendMessageString(CRW09604SFConst.L0_ESCL_PSB_POSITION_CD_01, X31CWebConst.DATABEAN_SET_VALUE, esclCd);
			escl_psb_position_Bean.sendMessageString(CRW09604SFConst.L0_ESCL_PSB_POSITION_CD_NM_01, X31CWebConst.DATABEAN_SET_VALUE, esclNm);
		}


		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0221");

		// マッピングクラス
		CRSV0221_CRSV0221OPDBMapper mapper = new CRSV0221_CRSV0221OPDBMapper();

		// マッピング処理（上り）
		mapper.setCRSV022101SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);


		// (4)サービス処理結果の設定
		// サービスの処理結果を取得する。
		// マッピング処理（下り）
		mapper.getCRSV022101SC(paramBean, outputMap);
		
		// 取得した「全エスカレーション可能権限」
		X31SDataBeanAccessArray all_escl_psb_position_List = bean.getDataBeanArray(CRW09604SFConst.ALL_ESCL_PSB_POSITION);


		// エスカレーション制限情報より、該当する「エスカレーション可能権限」のチェックボックスにチェックをつける
		for (int i = 0; i < escl_psb_position_List.getCount(); i++)
		{
			X31SDataBeanAccess escl_psb_position_Bean = escl_psb_position_List.getDataBean(i);
			String esclCd = escl_psb_position_Bean.sendMessageString(CRW09604SFConst.L0_ESCL_PSB_POSITION_CD_01, X31CWebConst.DATABEAN_GET_VALUE);

			for(int j = 0; j < all_escl_psb_position_List.getCount(); j++)
			{
				X31SDataBeanAccess all_escl_psb_position_Bean = all_escl_psb_position_List.getDataBean(j);
				String allCd = all_escl_psb_position_Bean.sendMessageString(CRW09604SFConst.L2_ALL_ESCL_PSB_POSITION_CD_03, X31CWebConst.DATABEAN_GET_VALUE);

				if (esclCd.equals(allCd))
				{
					// 「エスカレーション可能権限_エスカレーション可能業務個別設定立場コード」に該当するものに「TRUE」を設定
					all_escl_psb_position_Bean.sendMessageBoolean(CRW09604SFConst.L2_ALL_SELECTED_BOOLEAN_03, X31CWebConst.DATABEAN_SET_VALUE, true);
					
					//初期表示のチェックボックスの状態を退避させる
					all_escl_psb_position_Bean.sendMessageBoolean(CRW09604SFConst.L2_ALL_FIRST_SELECTED_BOOLEAN_03, X31CWebConst.DATABEAN_SET_VALUE, true);
				}
			}
		}


		// (5)引継情報の設定
		// なし。


		// (6)共有フォームビーンの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW09604);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW09604);

		return true;
	}



	/**
	 * 更新確認ボタン押下.<br>
	 * 入力チェックを行い、エラーがない場合は、エスカレーション制御情報更新確認画面に遷移する。
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean confirmUpd() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		//(1)引継情報の取得
		//なし。


		// (2)サービスフォームBeanの設定
		
		X31SDataBeanAccessArray eppList = bean.getDataBeanArray(CRW09604SFConst.ESCL_PSB_POSITION);
		X31SDataBeanAccessArray allList = bean.getDataBeanArray(CRW09604SFConst.ALL_ESCL_PSB_POSITION);
		
		// (a)エスカレーション可能権限リストをクリア
		eppList.clearArray();
		
		// (b)画面上でチェックされている項目を選択エスカレーション可能権限リストへ設定
		for (int i = 0; i < allList.getCount(); i++)
		{
			X31SDataBeanAccess allBean = allList.getDataBean(i);
			
			//選択状態を取得
			Boolean selected = allBean.sendMessageBoolean(CRW09604SFConst.L2_ALL_SELECTED_BOOLEAN_03, X31CWebConst.DATABEAN_GET_VALUE);
			
			if (selected)
			{
				//選択されている「エスカレーション可能業務個別設定立場コード」「エスカレーション可能業務個別設定立場コード名称」を取得
				String allCd = allBean.sendMessageString(CRW09604SFConst.L2_ALL_ESCL_PSB_POSITION_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
				String allNm = allBean.sendMessageString(CRW09604SFConst.L2_ALL_ESCL_PSB_POSITION_CD_NM_03, X31CWebConst.DATABEAN_GET_VALUE);
				
				//「選択エスカレーション可能権限」リストに設定
				X31SDataBeanAccess eppBean = eppList.addDataBean();
				eppBean.sendMessageString(CRW09604SFConst.L0_ESCL_PSB_POSITION_CD_01, X31CWebConst.DATABEAN_SET_VALUE, allCd);
				eppBean.sendMessageString(CRW09604SFConst.L0_ESCL_PSB_POSITION_CD_NM_01, X31CWebConst.DATABEAN_SET_VALUE, allNm);
			}
		}


		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0222");

		// マッピングクラス
		CRSV0222_CRSV0222OPDBMapper mapper = new CRSV0222_CRSV0222OPDBMapper();

		// マッピング処理（上り）
		mapper.setDELADDESCLCTRLCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);


		// (4)サービス処理結果の設定
		// なし。


		// (5)引継情報の設定
		// なし。


		// (6)遷移先画面の設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW09605);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW09605);

		return true;
	}



	/**
	 * 確定ボタン押下.<br>
	 * 更新する。
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean fixUpd() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// ユースケースID格納用マップ
		HashMap<String, Object> paramMap = new HashMap<String, Object>();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// (1)引継情報の取得
		// なし。


		// (2)サービスフォームBeanの設定
		// なし。


		// (3)サービス呼出処理
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CRSV0222");

		// マッピングクラス
		CRSV0222_CRSV0222OPDBMapper mapper = new CRSV0222_CRSV0222OPDBMapper();

		// マッピング処理（上り）
		mapper.setDELADDESCLCTRLCC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);


		// (4)サービス処理結果の設定
		// なし。


		// (5)引継情報の設定
		// なし。


		// (6)遷移先画面の設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_ID_CCW00105);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_NAME_CCW00105);

		return true;
	}



	/**
	 * キャンセルボタン押下.(CRW09404_エスカレーション制御情報更新画面)<br>
	 * エスカレーション制御情報詳細照会画面に遷移する。
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean cancelUpd1() throws Exception
	{

		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// 詳細画面に渡す情報用HashMap
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// (1)引継情報の取得
		// なし。


		// (2)サービスフォームBeanの設定
		// なし。


		// (3)サービス呼出処理
		// なし。


		// (4)サービス処理結果の設定
		// なし。


		// (5)引継情報の設定
		// KEY_キューBOX番号
		String key_que_box_no = bean.sendMessageString(CRW09604SFConst.KEY_QUE_BOX_NO, X31CWebConst.DATABEAN_GET_VALUE);
		// KEY_エスカレーション可能業務個別設定組織コード
		String key_escl_psb_org_cd = bean.sendMessageString(CRW09604SFConst.KEY_ESCL_PSB_ORG_CD, X31CWebConst.DATABEAN_GET_VALUE);

		// (a)次画面への引継情報(dataMap)を作成する。
		// 次画面に渡す情報をHashMapに設定する
		paramMap.put(CRW09603SFConst.KEY_QUE_BOX_NO, key_que_box_no);
		paramMap.put(CRW09603SFConst.KEY_ESCL_PSB_ORG_CD, key_escl_psb_org_cd);
		paramMap.put(CRW09603SFConst.MOVE_FLG, "1");
		
		paramMap.put(CRW09603SFConst.ECR0091B010CBSMSG1LIST, JCRWebCommon.getArrayList(bean.getDataBeanArray(CRW09604SFConst.ECR0091B010CBSMSG1LIST)));


		// (b)画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、遷移元画面への引継情報を設定する。
		// 遷移元画面に渡す情報を設定
		JCRWebCommon.setScreenInfo(this, JCRScreenConst.SCREEN_ID_CRW09603, paramMap);


		// (6)共有フォームビーンの設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW09603);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW09603);

		return true;
	}



	/**
	 * キャンセルボタン押下.(CRW09405_エスカレーション制御情報更新確認画面)<br>
	 * エスカレーション制御情報更新画面に戻る。
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean cancelUpd2() throws Exception
	{

		// 共通フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// (1)引継情報の取得
		// なし。


		// (2)サービスフォームBeanの設定
		// なし。


		// (3)サービス呼出処理
		// なし。


		// (4)サービス処理結果の設定
		// なし。


		// (5)引継情報の設定
		// なし。


		// (6)遷移先画面の設定
		// 遷移先画面ID、名称の設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_ID_CRW09604);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JCRScreenConst.SCREEN_NAME_CRW09604);

		return true;
	}
}
