/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：顧客契約
*	モジュール名	：KKW02529SFLogic
*	ソースファイル名：KKW02529SFLogic.java
*	作成者			：FJ
*	日付			：2011年11月02日
*＜機能概要＞
*	eo-netフォンTelvision情報詳細画面のViewロジックです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/11/02	FJ			新規作成
*
**********************************************************************/
package eo.web.webview.KKW02529SF;

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.KKSV0412_KKSV0412OPDBMapper;

/**
 * <dd>クラス名：eo-netフォンTelvision情報詳細ビューロジック
 * <dd>クラス説明：画面上のボタン押下時の各処理を記述します。
 * <dd>備考：
 * @version  1.0 2011/11/02
 * @author   FJ
 */
@SuppressWarnings("serial")
public class KKW02529SFLogic 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);
		
		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(KKW02529SFConst.CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);

		// オプションサービス契約番号
		svcFormBean.sendMessageString(KKW02529SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, custKeiHktgiInf
				.sendMessageString(KKW02529SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE, 0));

		return true;
	}
	
	/**
	 * 初期表示サブ処理
	 * @param svcFormBean サービスフォームBean
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean actionInitSubTran(X31SDataBeanAccess svcFormBean) throws Exception
	{
		X31SDataBeanAccess[] paramBean = {svcFormBean};
		
		// 運用日
		svcFormBean.sendMessageString(KKW02529SFConst.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_KKSV0412);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0412OP);
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0412_KKSV0412OPDBMapper mapper = new KKSV0412_KKSV0412OPDBMapper();
		
		inputMap = mapper.setKKSV041201SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		inputMap = mapper.setKKSV041202SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		
		// eo-netフォンTelvision情報詳細初期表示サービス呼び出し
		invokeService(paramMap, inputMap, outputMap);
		
		// 取得情報の下りマッピング
		mapper.getKKSV041201SC(paramBean, outputMap);
		mapper.getKKSV041202SC(paramBean, outputMap);
		
		// 表示用Bean項目への入れ替え処理
		
		// オプションサービス契約一意照会リスト
		X31SDataBeanAccessArray opSvcKeiList = svcFormBean.getDataBeanArray(KKW02529SFConst.OP_SVC_KEI_LIST);
		X31SDataBeanAccess opSvcKei = opSvcKeiList.getDataBean(0);
		
		// オプションサービス契約＜ＩＳＰ＞一意照会リスト
		X31SDataBeanAccessArray opsvckeiIspList = svcFormBean.getDataBeanArray(KKW02529SFConst.OPSVKEI_ISP_LIST);
		X31SDataBeanAccess opsvckeiIsp = opsvckeiIspList.getDataBean(0);
		
		// VOIPユーザ
		svcFormBean.sendMessageString(KKW02529SFConst.VOIP_USER, X31CWebConst.DATABEAN_SET_VALUE, 
				opsvckeiIsp.sendMessageString(KKW02529SFConst.VOIP_USER_ID_03, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 公衆電話番号（050番号）
		svcFormBean.sendMessageString(KKW02529SFConst.KOSHU_TELNO, X31CWebConst.DATABEAN_SET_VALUE, 
				opsvckeiIsp.sendMessageString(KKW02529SFConst.KOSHUMO_TELNO_03, X31CWebConst.DATABEAN_GET_VALUE));
		
		// オプション名
		svcFormBean.sendMessageString(KKW02529SFConst.OP_NM, X31CWebConst.DATABEAN_SET_VALUE, 
				opSvcKei.sendMessageString(KKW02529SFConst.OP_SVC_CD_NM_02, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 登録状態
		svcFormBean.sendMessageString(KKW02529SFConst.ADD_STAT, X31CWebConst.DATABEAN_SET_VALUE, 
				opsvckeiIsp.sendMessageString(KKW02529SFConst.SIP_ADD_STAT_CD_NM_03, X31CWebConst.DATABEAN_GET_VALUE));
		
		// メールアドレス
		svcFormBean.sendMessageString(KKW02529SFConst.MLAD, X31CWebConst.DATABEAN_SET_VALUE, 
				opsvckeiIsp.sendMessageString(KKW02529SFConst.MLAD_03, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 試用期間終了日
		String ftrial_prd_endymd = opSvcKei.sendMessageString(KKW02529SFConst.FTRIAL_PRD_ENDYMD_02, X31CWebConst.DATABEAN_GET_VALUE);
		svcFormBean.sendMessageString(KKW02529SFConst.FTRIAL_PRD_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, 
				dateDisp(ftrial_prd_endymd));
		
		// 試用加入日
		String ftrial_kanyu_ymd = opSvcKei.sendMessageString(KKW02529SFConst.FTRIAL_KANYU_YMD_02, X31CWebConst.DATABEAN_GET_VALUE);
		svcFormBean.sendMessageString(KKW02529SFConst.FTRIAL_KANYU_YMD, X31CWebConst.DATABEAN_SET_VALUE, 
				dateDisp(ftrial_kanyu_ymd));
		
		// 本加入日
		String honkanyu_ymd = opSvcKei.sendMessageString(KKW02529SFConst.HONKANYU_YMD_02, X31CWebConst.DATABEAN_GET_VALUE);
		svcFormBean.sendMessageString(KKW02529SFConst.HONKANYU_YMD, X31CWebConst.DATABEAN_SET_VALUE, 
				dateDisp(honkanyu_ymd));
		
		// 本加入移行情報
		String honkanyu_iko_kigen_ymd = opSvcKei.sendMessageString(KKW02529SFConst.HONKANYU_IKO_KIGEN_YMD_02, X31CWebConst.DATABEAN_GET_VALUE);
		svcFormBean.sendMessageString(KKW02529SFConst.HONKANYU_IKO_INFO, X31CWebConst.DATABEAN_SET_VALUE, 
				dateDisp(honkanyu_iko_kigen_ymd));
		
		// 解約日
		String svc_dsl_ymd = opSvcKei.sendMessageString(KKW02529SFConst.SVC_DSL_YMD_02, X31CWebConst.DATABEAN_GET_VALUE);
		svcFormBean.sendMessageString(KKW02529SFConst.DSL_YMD, X31CWebConst.DATABEAN_SET_VALUE, 
				dateDisp(svc_dsl_ymd));
		
		// 公衆網加入日付
		String svc_staymd = opSvcKei.sendMessageString(KKW02529SFConst.SVC_STAYMD_02, X31CWebConst.DATABEAN_GET_VALUE);
		if(!"".equals(dateDisp(svc_staymd)))
		{
			svcFormBean.sendMessageString(KKW02529SFConst.KOSHUMO_KANYU_YMD, X31CWebConst.DATABEAN_SET_VALUE, 
					dateDisp(svc_staymd) + "　〜　");
		}
		else
		{
			svcFormBean.sendMessageString(KKW02529SFConst.KOSHUMO_KANYU_YMD, X31CWebConst.DATABEAN_SET_VALUE, 
					"");
		}
		
		// 公衆網解約日付
		String svc_endymd = opSvcKei.sendMessageString(KKW02529SFConst.SVC_DSL_YMD_02, X31CWebConst.DATABEAN_GET_VALUE);
		svcFormBean.sendMessageString(KKW02529SFConst.KOSHUMO_DSL_YMD, X31CWebConst.DATABEAN_SET_VALUE, 
				dateDisp(svc_endymd));
		
		return true;
	}
	
	/**
	 * 日付表示メソッド
	 * YYYYMMDDの形式で渡された日付をYYYY/MM/DDの形式で出力する
	 * ただし、20991231の初期値の場合空白を出力する
	 * @param date
	 * @return
	 */
	private String dateDisp(String date)
	{
		if(null == date || 8 != date.trim().length() || "20991231".equals(date.trim()))
		{
			return "";
		}
		else
		{
			return date.substring(0, 4) + "/" +  date.substring(4, 6) + "/" +  date.substring(6);
		}
	}
}
