/*********************************************************************
*	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.KKW02530SF;

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.common.constant.JZM0171Constant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KKW02530SF.KKW02530SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.mapping.KKSV0491_KKSV0491OPDBMapper;


/**
 * <dd>クラス名：ＤＮＳ等設定詳細画面ビューロジック
 * <dd>クラス説明：画面上のボタン押下時の各処理を記述します。
 * <dd>備考：
 * @version  1.0 2012/01/23
 * @author   FJ
 */
@SuppressWarnings("serial")
public class KKW02530SFLogic extends JCCWebBusinessLogic {


	/** 
	 * 「ＤＮＳ設定（料金用）」結果 無
	 */
	public static final String NON = "無";

	
	/** 
	 * 「ＤＮＳ設定（料金用）」結果 有
	 */
	public static final String SET = "有";
	
	
	/**
	 * 初期表示処理
	 * @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(KKW02530SFConst.CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);

		// オプションサービス契約番号
		svcFormBean.sendMessageString(KKW02530SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, 
				custKeiHktgiInf.sendMessageString(KKW02530SFConst.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(KKW02530SFConst.CD_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, JZM0171Constant.CD00635);
		
		// サービスの呼び出し
		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_KKSV0491);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0491OP);
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0491_KKSV0491OPDBMapper mapper = new KKSV0491_KKSV0491OPDBMapper();
		
		inputMap = mapper.setKKSV049101SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		inputMap = mapper.setKKSV049102SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		
		// ＤＮＳ等設定詳細画面サービス呼び出し
		invokeService(paramMap, inputMap, outputMap);
		
		// 取得情報の下りマッピングNS_SETTE_CD
		mapper.getKKSV049101SC(paramBean, outputMap);
		mapper.getKKSV049102SC(paramBean, outputMap);

		
		// オプションサービス契約＜ＩＳＰ＞一意照会リスト
		X31SDataBeanAccessArray opsvckeiIspList = svcFormBean.getDataBeanArray(KKW02530SFConst.OPSVKEI_ISP_LIST);
		X31SDataBeanAccess opsvckeiIsp = opsvckeiIspList.getDataBean(0);

		// コード名称管理一覧照会リストの呼び出し
		X31SDataBeanAccessArray cdnmKnrList = svcFormBean.getDataBeanArray(KKW02530SFConst.CD_NM_KNR_LIST);

		//「オプションサービス契約＜ＩＳＰ＞一意照会リスト.ＤＮＳ設定コードが未設定の場合：空欄にする
		if(("".equals(opsvckeiIsp.sendMessageString(KKW02530SFConst.DNS_SETTE_CD, X31CWebConst.DATABEAN_GET_VALUE)))){
			// ＤＮＳ設定（照会用）
			svcFormBean.sendMessageString(KKW02530SFConst.DNS_SET_SHOKAI, X31CWebConst.DATABEAN_SET_VALUE, "");
			// ＤＮＳ設定（料金用）
			svcFormBean.sendMessageString(KKW02530SFConst.DNS_SET_PRC, X31CWebConst.DATABEAN_SET_VALUE, "");			
		}
		
		//「オプションサービス契約＜ＩＳＰ＞一意照会リスト.ＤＮＳ設定コードが設定されている場合
		else{
			
			// ＤＮＳ設定コードの取得
			String dns_stti_code = opsvckeiIsp.sendMessageString(KKW02530SFConst.DNS_SETTE_CD, X31CWebConst.DATABEAN_GET_VALUE);
			
			//コードマッチング
			int num = 0;

			while(num < cdnmKnrList.getCount()){
				X31SDataBeanAccess cdnmK_count = cdnmKnrList.getDataBean(num);
				if (dns_stti_code.equals(cdnmK_count.sendMessageString(KKW02530SFConst.CD_DIV, X31CWebConst.DATABEAN_GET_VALUE)))
				{
					break;
				}
				num++;
			}
			
			X31SDataBeanAccess cdnmK = cdnmKnrList.getDataBean(num);
			// ＤＮＳ設定（照会用）
			svcFormBean.sendMessageString(KKW02530SFConst.DNS_SET_SHOKAI, X31CWebConst.DATABEAN_SET_VALUE, 
					cdnmK.sendMessageString(KKW02530SFConst.CD_DIV_NM_01 , X31CWebConst.DATABEAN_GET_VALUE));
			// ＤＮＳ設定（料金用）
			svcFormBean.sendMessageString(KKW02530SFConst.DNS_SET_PRC, X31CWebConst.DATABEAN_SET_VALUE, 
					check_dsn_code(dns_stti_code));
			
		}

		return true;
	}
	

	/**
	 * DNS設定コードの設定値による「ＤＮＳ設定（料金用）」結果を返す
	 * @param date
	 * @return
	 */
	private String check_dsn_code(String dens_sett_code)
	{
		if(JKKCommonConst.DNS_SETTE_CD_NON.equals(dens_sett_code))
		{
			return NON;
		}
		else
		{
			return SET;
		}
	}
	
}
