/*******************************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：TUW03501SFLogic
*	ソースファイル名：TUW03501SFLogic.java
*	作成者			：FJ
*	日付			：2012年06月15日
*＜機能概要＞
*	TUW03501のビューロジック
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2011/06/15	FJ)宮本		新規作成
*	v4.00.00	2011/06/15	FJ)宮本		ANK-0327-00-00
*
********************************************************************************/

package eo.web.webview.TUW03501SF;

import java.util.HashMap;

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.common.constant.JPCOnlineMessageConstant;
import eo.common.constant.JTUStrConst;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JTUWebCommon;
import eo.web.webview.common.JTUScreenConst;
import eo.web.webview.mapping.TUSV0095_TUSV0095OPDBMapper;
import eo.web.webview.mapping.TUSV0096_TUSV0096OPDBMapper;

/**
 * TUW03501のビューロジック
 * @author FJ
 *
 */
public class TUW03501SFLogic extends JCCWebBusinessLogic
{
	
	/**
	 * 初期化処理ユースケースID
	 */
	private static final String INIT_USECASE_ID = "TUSV0095";
	
	/**
	 * 初期化処理SCタイトル01
	 */
	private static final String INIT_SC_TITLE01 = "TUSV009501SC";
	
	/**
	 * 初期化処理SCタイトル02
	 */
	private static final String INIT_SC_TITLE02 = "TUSV009502SC";
	
	/**
	 * 検索処理ユースケースID
	 */
	private static final String SEARCH_USECASE_ID = "TUSV0096";
	
	/**
	 * 検索処理SCタイトル01
	 */
	private static final String SEARCH_SC_TITLE01 = "TUSV009601SC";
	
	/**
	 * 検索処理最大検索件数
	 */
	private static final String SEARCH_MAX_SHOW_CNT = "TUW03501_MAX_SHOW_CNT";
	
	/**
	 * 検索処理ページ表示件数
	 */
	private static final String SEARCH_ROW_PER_PAGE = "TUW03501_ROW_PER_PAGE";

	
	/**
	 * 初期表示処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_init() throws Exception
	{
		return tuw03501_init();
	}
	
	/**
	 * 初期化処理
	 * @return boolean
	 */
	private boolean tuw03501_init()
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
								, X31CWebConst.DATABEAN_SET_VALUE, JTUScreenConst.SCREEN_NAME_TUW03501);
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 戻るボタンの表示要否判定
		bean.sendMessageString(TUW03501SFConst.BACK_BTN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE
				, JTUWebCommon.getBackDispFlg(this, JTUScreenConst.SCREEN_ID_TUW03501));

		/**
		 * サービス呼出処理
		 */
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, INIT_USECASE_ID);
		
		// マッピングクラスのインスタンスを生成
		TUSV0095_TUSV0095OPDBMapper mapper = new TUSV0095_TUSV0095OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// オペレーション日付取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		// 上りマッピングの呼び出し
		mapper.setTUSV009501SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1, opeDate);
		mapper.setTUSV009502SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1, opeDate);

		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		/**
		 * サービス処理結果の取得
		 */
		// 下りマッピングの呼び出し
		mapper.getTUSV009501SC(paramBean, outputMap);
		mapper.getTUSV009502SC(paramBean, outputMap);
		
		/**
		 * コンボボックスのリストにNo付与
		 */
		JTUWebCommon.setListNo(bean, TUW03501SFConst.SENDS_LIST, TUW03501SFConst.CD_NM_02);
		JTUWebCommon.setListNo(bean, TUW03501SFConst.SEND_RSLT_LIST, TUW03501SFConst.CD_NM_02);
		
		return true;
	}
	
	
	/**
	 * 検索ボタン押下イベント
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_search() throws Exception
	{
		
		//セッション情報を削除 
		JCCWebCommon.removeScreenInfo(this, JTUScreenConst.SCREEN_ID_TUW03501);
		JCCWebCommon.clearPageLinkInfo(this, JTUScreenConst.SCREEN_ID_TUW03501);
		
		//検索条件をセッションへ格納
		saveSessionSearchInfo();
		
		return search();
	
	}


	/**
	 * ページング押下イベント
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_paging() throws Exception
	{
		setSessionSearchInfo();
		return search();
	}

	/**
	 * 検索処理
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean search() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = {bean};
		
		/**
		 * DataBean設定処理
		 */
		setBeanSearchInfo(bean);

		// 一覧表示フラグの初期化
		bean.sendMessageString(TUW03501SFConst.DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.DISP_FLG_FALSE);

		// 一覧情報のクリア
		X31SDataBeanAccessArray beanList = paramBean[0].getDataBeanArray(TUW03501SFConst.ECC0191B010CBSMSG1LIST);
		if(beanList.getCount() != 0)
		{
			beanList.clearArray();
		}
		
		/**
		 * サービス呼出処理
		 */
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SEARCH_USECASE_ID);

		// マッピングクラスのインスタンスを生成
		TUSV0096_TUSV0096OPDBMapper mapper = new TUSV0096_TUSV0096OPDBMapper();
		// 上り格納マップ
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 下り格納マップ
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// 上りマッピングの呼び出し
		mapper.setTUSV009601SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		// 運用日付取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		// 一覧照会共通部設定
		((HashMap<String, Object>)inputMap.get(SEARCH_SC_TITLE01)).put("search_type", JPCModelConstant.SAERCH_TYPE_BBN);
		((HashMap<String, Object>)inputMap.get(SEARCH_SC_TITLE01)).put("max_search_num", JCCWebCommon.getSearchConst(SEARCH_MAX_SHOW_CNT));
		((HashMap<String, Object>)inputMap.get(SEARCH_SC_TITLE01)).put("display_num", JCCWebCommon.getSearchConst(SEARCH_ROW_PER_PAGE));
		//基準日設定
		((HashMap<String, Object>)inputMap.get(SEARCH_SC_TITLE01)).put("key_stdardymd", opeDate);

		// ページリンク情報のマッピング
		JCCWebCommon.upmapperPageLinkInfo(this, SEARCH_SC_TITLE01, inputMap);
		
		/*
		 * サービス呼出 
		 */
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);	
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		
		/**
		 * サービス処理結果の取得
		 */
		
		// 下りマッピングの呼び出し
		mapper.getTUSV009601SC(paramBean, outputMap);
		
		// ページリンク情報のマッピング
		JCCWebCommon.downmapperPageLinkInfo(this, SEARCH_SC_TITLE01, outputMap);
		
		
		/**
		 * 取得データ件数チェック
		 */
		// 検索エラー取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg(SEARCH_SC_TITLE01, outputMap);
		
		if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			// 0件の場合
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0330__I);
			return true;
		}
		else if(JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			// 最大件数を超えた場合
			String[] msgRpl = new String[]{JCCWebCommon.getSearchConst(SEARCH_MAX_SHOW_CNT)};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0340__I, msgRpl);
			return true;
		}
		else if(JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
		{
			// 表示ページに該当するデータがない場合
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0350__I);
			return true;
		}

		/**
		 * 一覧表示フラグ設定処理
		 */
		bean.sendMessageString(TUW03501SFConst.DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, JTUStrConst.DISP_FLG_TRUE);

		//行スタイル設定
		JTUWebCommon.setRowStyle(bean, TUW03501SFConst.ECC0191B010CBSMSG1LIST, TUW03501SFConst.ROW_STYLE_01);
		
		/**
		 * 検索コマンドIDの設定
		 */
		JCCWebCommon.setSearchCommand(this, "pageLink");
		
		return true;
	}
	
	/**
	 * 先頭画面 戻る遷移処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean action_top_back() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		//セッション情報を削除 
		JCCWebCommon.removeScreenInfo(this, JTUScreenConst.SCREEN_ID_TUW03501);
		JCCWebCommon.clearPageLinkInfo(this, JTUScreenConst.SCREEN_ID_TUW03501 + "0PJP");
		
		/**
		 * DataBean設定処理
		 */
		// 遷移先の情報を共有フォームBeanの項目に設定する。
		JTUWebCommon.setNextScreenInfo(commoninfoBean, JTUWebCommon.getScreenId(this), "");
		
		return true;
	}

	/**
	 * 検索条件を設定
	 * @param bean
	 */
	private void setBeanSearchInfo(X31SDataBeanAccess bean)
	{
		/**
		 * DataBean設定処理
		 */
		// 電話番号
		JTUWebCommon.setListSelectedValue(bean, TUW03501SFConst.TELNO
				, TUW03501SFConst.SENDS_LIST, TUW03501SFConst.INDEX_02, TUW03501SFConst.CD_02);
		
		// 送信依頼受付年月日時分秒＿ＦＲＯＭ
		String dtm_from_ymd = JTUWebCommon.getYMD(bean, TUW03501SFConst.SEND_DTM_FROM1, TUW03501SFConst.SEND_DTM_FROM2, TUW03501SFConst.SEND_DTM_FROM3);
		String dtm_from_hh = "";
		String dtm_from_mm = "";
		if(JTUWebCommon.isNull(dtm_from_ymd))
		{
			bean.sendMessage(TUW03501SFConst.SEND_REQ_UK_DTM_FROM, X31CWebConst.DATABEAN_CLEAR);
		}
		else
		{
			dtm_from_hh = bean.sendMessageString(TUW03501SFConst.SEND_DTM_FROM4, X31CWebConst.DATABEAN_GET_VALUE);
			if(JTUWebCommon.isNull(dtm_from_hh))
			{
				dtm_from_hh = "00";
			}
			dtm_from_mm = bean.sendMessageString(TUW03501SFConst.SEND_DTM_FROM5, X31CWebConst.DATABEAN_GET_VALUE);
			if(JTUWebCommon.isNull(dtm_from_mm))
			{
				dtm_from_mm = "00";
			}
			bean.sendMessageString(TUW03501SFConst.SEND_REQ_UK_DTM_FROM, X31CWebConst.DATABEAN_SET_VALUE, dtm_from_ymd + dtm_from_hh + dtm_from_mm + "00000");
		}
		
		// 送信依頼受付年月日時分秒＿ＴＯ
		String dtm_to_ymd = JTUWebCommon.getYMD(bean, TUW03501SFConst.SEND_DTM_TO1, TUW03501SFConst.SEND_DTM_TO2, TUW03501SFConst.SEND_DTM_TO3);
		String dtm_to_hh = "";
		String dtm_to_mm = "";
		if(JTUWebCommon.isNull(dtm_to_ymd))
		{
			bean.sendMessage(TUW03501SFConst.SEND_REQ_UK_DTM_TO, X31CWebConst.DATABEAN_CLEAR);
		}
		else
		{
			dtm_to_hh = bean.sendMessageString(TUW03501SFConst.SEND_DTM_TO4, X31CWebConst.DATABEAN_GET_VALUE);
			if(JTUWebCommon.isNull(dtm_to_hh))
			{
				dtm_to_hh = "23";
			}
			dtm_to_mm = bean.sendMessageString(TUW03501SFConst.SEND_DTM_TO5, X31CWebConst.DATABEAN_GET_VALUE);
			if(JTUWebCommon.isNull(dtm_to_mm))
			{
				dtm_to_mm = "59";
			}
			bean.sendMessageString(TUW03501SFConst.SEND_REQ_UK_DTM_TO, X31CWebConst.DATABEAN_SET_VALUE, dtm_to_ymd + dtm_to_hh + dtm_to_mm + "59999");
		}
		
		// 送信状態コード
		JTUWebCommon.setListSelectedValue(bean, TUW03501SFConst.SEND_STAT_CD
				, TUW03501SFConst.SEND_RSLT_LIST, TUW03501SFConst.INDEX_02, TUW03501SFConst.CD_02);
	}
	
	/**
	 * 検索条件をセッションに保持
	 */
	private void saveSessionSearchInfo()
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		/**
		 * セッション設定処理
		 */
		// 引き継ぎ情報を格納するMAP
		HashMap<String, Object> hktgiMap = new HashMap<String, Object>();
		// 検索条件の保持
		X31SDataBeanAccess listDataBean = bean.getDataBeanArray(TUW03501SFConst.SENDS_LIST).getDataBean(0);
		hktgiMap.put(TUW03501SFConst.SENDS_LIST + TUW03501SFConst.INDEX_02, 
				listDataBean.sendMessageString(TUW03501SFConst.INDEX_02, X31CWebConst.DATABEAN_GET_VALUE));
		hktgiMap.put(TUW03501SFConst.SEND_DTM_FROM1, 
				bean.sendMessageString(TUW03501SFConst.SEND_DTM_FROM1, X31CWebConst.DATABEAN_GET_VALUE));
		hktgiMap.put(TUW03501SFConst.SEND_DTM_FROM2, 
				bean.sendMessageString(TUW03501SFConst.SEND_DTM_FROM2, X31CWebConst.DATABEAN_GET_VALUE));
		hktgiMap.put(TUW03501SFConst.SEND_DTM_FROM3, 
				bean.sendMessageString(TUW03501SFConst.SEND_DTM_FROM3, X31CWebConst.DATABEAN_GET_VALUE));
		hktgiMap.put(TUW03501SFConst.SEND_DTM_FROM4, 
				bean.sendMessageString(TUW03501SFConst.SEND_DTM_FROM4, X31CWebConst.DATABEAN_GET_VALUE));
		hktgiMap.put(TUW03501SFConst.SEND_DTM_FROM5, 
				bean.sendMessageString(TUW03501SFConst.SEND_DTM_FROM5, X31CWebConst.DATABEAN_GET_VALUE));
		hktgiMap.put(TUW03501SFConst.SEND_DTM_TO1, 
				bean.sendMessageString(TUW03501SFConst.SEND_DTM_TO1, X31CWebConst.DATABEAN_GET_VALUE));
		hktgiMap.put(TUW03501SFConst.SEND_DTM_TO2, 
				bean.sendMessageString(TUW03501SFConst.SEND_DTM_TO2, X31CWebConst.DATABEAN_GET_VALUE));
		hktgiMap.put(TUW03501SFConst.SEND_DTM_TO3, 
				bean.sendMessageString(TUW03501SFConst.SEND_DTM_TO3, X31CWebConst.DATABEAN_GET_VALUE));
		hktgiMap.put(TUW03501SFConst.SEND_DTM_TO4, 
				bean.sendMessageString(TUW03501SFConst.SEND_DTM_TO4, X31CWebConst.DATABEAN_GET_VALUE));
		hktgiMap.put(TUW03501SFConst.SEND_DTM_TO5, 
				bean.sendMessageString(TUW03501SFConst.SEND_DTM_TO5, X31CWebConst.DATABEAN_GET_VALUE));
		listDataBean = bean.getDataBeanArray(TUW03501SFConst.SEND_RSLT_LIST).getDataBean(0);
		hktgiMap.put(TUW03501SFConst.SEND_RSLT_LIST + TUW03501SFConst.INDEX_02, 
				listDataBean.sendMessageString(TUW03501SFConst.INDEX_02, X31CWebConst.DATABEAN_GET_VALUE));
		
		/**
		 * 引継情報の設定
		 */
		JCCWebCommon.setScreenInfo(this, JTUScreenConst.SCREEN_ID_TUW03501, hktgiMap);
	}

	/**
	 * セッションに保持している検索条件をBeanに再設定
	 */
	private void setSessionSearchInfo()
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		HashMap<String, Object> searchInfo = null;
		searchInfo = JCCWebCommon.getScreenInfo(this);

		X31SDataBeanAccess listDataBean = bean.getDataBeanArray(TUW03501SFConst.SENDS_LIST).getDataBean(0);
		listDataBean.sendMessageString(TUW03501SFConst.INDEX_02, X31CWebConst.DATABEAN_SET_VALUE
				, searchInfo.get(TUW03501SFConst.SENDS_LIST + TUW03501SFConst.INDEX_02).toString());
		
		listDataBean = bean.getDataBeanArray(TUW03501SFConst.SEND_RSLT_LIST).getDataBean(0);
		listDataBean.sendMessageString(TUW03501SFConst.INDEX_02, X31CWebConst.DATABEAN_SET_VALUE
				, searchInfo.get(TUW03501SFConst.SEND_RSLT_LIST + TUW03501SFConst.INDEX_02).toString());
		
		JCCWebCommon.setScreenInfo(this, JTUScreenConst.SCREEN_ID_TUW03501, searchInfo);
	}
	
}
	
