/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：顧客契約
*	モジュール名	：KKW02536SFLogic
*	ソースファイル名：KKW02536SFLogic.java
*	作成者			：FJ
*	日付			：2011年11月02日
*＜機能概要＞
*	ダイヤルパッド詳細画面のViewロジックです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/01/24	FJ			新規作成
*
**********************************************************************/
package eo.web.webview.KKW02536SF;

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.KKW02536SF.KKW02536SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0465_KKSV0465OPDBMapper;

/**
 * <dd>クラス名：ダイヤルパッド詳細画面ビューロジック
 * <dd>クラス説明：画面上のボタン押下時の各処理を記述します。
 * <dd>備考：
 * @version  1.0 2012/01/23
 * @author   FJ
 */
@SuppressWarnings("serial")
public class KKW02536SFLogic extends JCCWebBusinessLogic {

	/**
	 * 初期表示処理
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception
	 */
	public boolean actionInit() throws Exception
	{
		
		// サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		// セッション情報取得
		getSessionData(svcFormBean);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		// 初期表示処理
		actionInitSubTran(svcFormBean);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		// 画面名の表示
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW02536);
			
		
		return true;
	}
	
	/**
	 * 画面「戻る」ボタン押下
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean actionBack() throws Exception
	{	
		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.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;
	}
	
	/**
	 * 引継情報を取得し、ダイヤルパッド詳細表示サービスフォームBeanに設定する
	 * @param  svcFormBean  DataBeanアクセスクラス
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	private boolean getSessionData(X31SDataBeanAccess svcFormBean) throws Exception
	{

		JCCWebCommon.getScreenInfo(this);
		X31SDataBeanAccessArray custKeiHktgiList = svcFormBean.getDataBeanArray(KKW02536SFConst.CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);

		// オプションサービス契約番号
		svcFormBean.sendMessageString(KKW02536SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE,
				custKeiHktgiInf.sendMessageString(KKW02536SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE, 0));

		// ＳＹＳＩＤ
		svcFormBean.sendMessageString(KKW02536SFConst.SYSID, X31CWebConst.DATABEAN_SET_VALUE,
				custKeiHktgiInf.sendMessageString(KKW02536SFConst.SYSID_01, X31CWebConst.DATABEAN_GET_VALUE));
		
		return true;
	}
	
	/**
	 * 初期表示サブ処理
	 * @param svcFormBean サービスフォームBean
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean actionInitSubTran(X31SDataBeanAccess svcFormBean) throws Exception
	{
		X31SDataBeanAccess[] paramBean = {svcFormBean};
		
		// 運用日
		svcFormBean.sendMessageString(KKW02536SFConst.OPE_DATE, X31CWebConst.DATABEAN_SET_VALUE, 
				JCCWebCommon.getOpeDate(this, null));
		
		// サービスの呼び出し
		HashMap<String, Object> paramMap = new HashMap<String, Object>();		//パラメタマップ生成
		HashMap<String, Object> inputMap = new HashMap<String, Object>();		//インプットマップ生成
		HashMap<String, Object> outputMap = new HashMap<String, Object>();		//アウトプットマップ生成
		
		// サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0465);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0465OP);
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0465_KKSV0465OPDBMapper mapper = new KKSV0465_KKSV0465OPDBMapper();
		
		inputMap = mapper.setKKSV046501SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		inputMap = mapper.setKKSV046502SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		inputMap = mapper.setKKSV046503SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		
		// ダイヤルパッド詳細画面サービス呼び出し
		invokeService(paramMap, inputMap, outputMap);
		
		// 取得情報の下りマッピング
		mapper.getKKSV046501SC(paramBean, outputMap);
		mapper.getKKSV046502SC(paramBean, outputMap);
		mapper.getKKSV046503SC(paramBean, outputMap);
		
		// 表示用Bean項目への入れ替え処理
		
		// オプションサービス契約一意照会リスト
		X31SDataBeanAccessArray opSvcKeiList = svcFormBean.getDataBeanArray(KKW02536SFConst.OP_SVC_KEI_LIST);
		X31SDataBeanAccess opSvcKei = opSvcKeiList.getDataBean(0);
		
		// オプションサービス契約＜ＩＳＰ＞一意照会リスト
		X31SDataBeanAccessArray opsvckeiIspList = svcFormBean.getDataBeanArray(KKW02536SFConst.OPSVKEI_ISP_LIST);
		X31SDataBeanAccess opsvckeiIsp = opsvckeiIspList.getDataBean(0);

		// お客様照会リスト
		X31SDataBeanAccessArray custRefList = svcFormBean.getDataBeanArray(KKW02536SFConst.CUST_REF_LIST);
		X31SDataBeanAccess custRef = custRefList.getDataBean(0);
		
		// ダイヤルパッドＩＤ
		svcFormBean.sendMessageString(KKW02536SFConst.DPAD_ID, X31CWebConst.DATABEAN_SET_VALUE, 
				opsvckeiIsp.sendMessageString(KKW02536SFConst.DPAD_ID_03, X31CWebConst.DATABEAN_GET_VALUE));
		
		// ＩＳＰＩＤ
		svcFormBean.sendMessageString(KKW02536SFConst.ISP_ID, X31CWebConst.DATABEAN_SET_VALUE, 
				opsvckeiIsp.sendMessageString(KKW02536SFConst.DPAD_ISD_ID_03 , X31CWebConst.DATABEAN_GET_VALUE));
		
		// ＭＡＰＩＤ
		svcFormBean.sendMessageString(KKW02536SFConst.MAPID, X31CWebConst.DATABEAN_SET_VALUE, 
				opsvckeiIsp.sendMessageString(KKW02536SFConst.DPAD_MAP_ID_03, X31CWebConst.DATABEAN_GET_VALUE));
		
		// お客様名
		svcFormBean.sendMessageString(KKW02536SFConst.CUST_NM, X31CWebConst.DATABEAN_SET_VALUE, 
				custRef.sendMessageString(KKW02536SFConst.CUST_NM_04, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 都道府県名
		svcFormBean.sendMessageString(KKW02536SFConst.STATE, X31CWebConst.DATABEAN_SET_VALUE, 
				custRef.sendMessageString(KKW02536SFConst.STATE_04, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 市区町村
		svcFormBean.sendMessageString(KKW02536SFConst.CITY, X31CWebConst.DATABEAN_SET_VALUE, 
				custRef.sendMessageString(KKW02536SFConst.CITY_04, X31CWebConst.DATABEAN_GET_VALUE));
		// メールアドレス（連絡先）
		svcFormBean.sendMessageString(KKW02536SFConst.DPAD_MLAD, X31CWebConst.DATABEAN_SET_VALUE, 
				opsvckeiIsp.sendMessageString(KKW02536SFConst.DPAD_MLAD_03, X31CWebConst.DATABEAN_GET_VALUE));
		
		// ＰＩＮ
		svcFormBean.sendMessageString(KKW02536SFConst.DPAD_PIN, X31CWebConst.DATABEAN_SET_VALUE, 
				opsvckeiIsp.sendMessageString(KKW02536SFConst.DPAD_PIN_03, X31CWebConst.DATABEAN_GET_VALUE));

		// ダイヤウパッドＩＤ公開要否名称
		svcFormBean.sendMessageString(KKW02536SFConst.DPAD_ID_KOKAI_YN_NM, X31CWebConst.DATABEAN_SET_VALUE, 
				opsvckeiIsp.sendMessageString(KKW02536SFConst.DPAD_ID_KOKAI_YH_NM_03, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 利用開始日
		String use_staymd = opSvcKei.sendMessageString(KKW02536SFConst.USE_STAYMD_02, X31CWebConst.DATABEAN_GET_VALUE);
		svcFormBean.sendMessageString(KKW02536SFConst.USE_STAYMD, X31CWebConst.DATABEAN_SET_VALUE, 
				dateDisp(use_staymd));
		
		// 利用終了日
		String use_endymd = opSvcKei.sendMessageString(KKW02536SFConst.USE_ENDYMD_02, X31CWebConst.DATABEAN_GET_VALUE);
		svcFormBean.sendMessageString(KKW02536SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, 
				dateDisp(use_endymd));
		
		return true;
	}
	
	/**
	 * 日付表示メソッド
	 * YYYYMMDDの形式で渡された日付をYYYY/MM/DDの形式で出力する
	 * ただし、20991231の初期値の場合空白を出力する
	 * @param date
	 * @return
	 */
	private String dateDisp(String date)
	{
		if(null == date || 8 != date.trim().length() || JKKCommonConst.MAX_YMD.equals(date.trim()))
		{
			return "";
		}
		else
		{
			return date.substring(0, 4) + "/" +  date.substring(4, 6) + "/" +  date.substring(6);
		}
	}
}
