/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW13901SFLogic
*   ソースファイル名：KKW13901SFLogic.java
*   作成者          ：富士通
*   日付            ：2012年7月12日
*＜機能概要＞
*   スマートバリュー情報照会画面 Viewロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00.00    2012/7/12   FJ）五十嵐    新規作成
*
**********************************************************************/

package eo.web.webview.KKW13901SF;


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.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JPCUtilCommon;
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.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0605_KKSV0605OPDBMapper;

/**
 * スマートバリュー情報とKDDIとの連携内容一覧を表示します。
 * <BR>
 * 
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW13901SFLogic extends JCCWebBusinessLogic
{
	/** スマートバリュー情報0件時メッセージ用 */
	private static final String ERROR_MSG = "スマートバリュー情報";

	/** 一覧部の奇数行のスタイル */
	private static final String ROW_STYLE_ODD = "odd";

	/** 一覧部の偶数行のスタイル */
	private static final String ROW_STYLE_EVEN = "even";

	/** 他事業者割引契約処理コード名称：登録 */
	private static final Object TAJGS_WRIB_KEI_TRAN_CD_NM_ADD = "登録";

	/**
	 * スマートバリュー更新画面 初期表示処理。
     * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public boolean init() throws Exception
	{
		// 引継情報を取得
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();

		X31SDataBeanAccessArray custKeiHktgiList = serviceBean.getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);

		// 引継情報を第一階層に設定
		// 異動区分
		serviceBean.sendMessageString(KKW13901SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE,
				custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約番号
		serviceBean.sendMessageString(KKW13901SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE,
				custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// SYSID
		serviceBean.sendMessageString(KKW13901SFConst.SYSID, X31CWebConst.DATABEAN_SET_VALUE,
				custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SYSID, X31CWebConst.DATABEAN_GET_VALUE));

		// ページ情報のクリア
		JCCWebCommon.clearPageLinkInfo(this, JKKScreenConst.SCREEN_ID_KKW13901);

		// スマートバリュー情報の検索
		return searchSmtvl();
	}

	/**
	 * ページ制御を行います。
	 * <br>
	 * @return boolean 処理結果
	 * @exception Exception 例外が発生した場合。
	 */
	public boolean changePage() throws Exception
	{
		// スマートバリュー情報の検索
		return searchSmtvl();
	}

	/**
	 * スマートバリュー情報を検索します。<br>
	 * 
	 * @return boolean 処理結果
	 */
	private boolean searchSmtvl()
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();

		// マッピング用paramBeanセット
		X31SDataBeanAccess[] paramBean =
		{
				serviceBean
		};

		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();

		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0605");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "KKSV0605OP");

		KKSV0605_KKSV0605OPDBMapper mapper = new KKSV0605_KKSV0605OPDBMapper();

		//条件格納用のマップを作製
		HashMap<String, Object> inputMap = new HashMap<String, Object>();

		//処理結果格納用のマップを作製
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// 連携履歴の表示フラグ
		paramBean[0].sendMessageString(KKW13901SFConst.TCHLISTFLAG, X31CWebConst.DATABEAN_SET_VALUE,  "off");

		// 他事業者割引契約リストのクリア
		X31SDataBeanAccessArray tajgs_wrib_kei_list = paramBean[0].getDataBeanArray(KKW13901SFConst.TAJGS_WRIB_KEI_LIST);
		if (tajgs_wrib_kei_list != null)
		{
			tajgs_wrib_kei_list.clearArray();
		}

		// KDDI割引契約異動通知リストのクリア
		X31SDataBeanAccessArray kddi_wkei_idt_list = paramBean[0].getDataBeanArray(KKW13901SFConst.KDDI_WKEI_IDT_LIST);
		if (kddi_wkei_idt_list != null)
		{
			kddi_wkei_idt_list.clearArray();
		}

		//検索パターン設定
		mapper.setKKSV060501CC(new X31SDataBeanAccess[]{serviceBean}, inputMap, "1");

		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "KKSV060501CC", inputMap);

		invokeService(paramMap, inputMap, outputMap);

		// 下りマッピング
		mapper.getKKSV060501CC(paramBean, outputMap);

		// 他事業者割引契約リストの取得
		tajgs_wrib_kei_list = paramBean[0].getDataBeanArray(KKW13901SFConst.TAJGS_WRIB_KEI_LIST);
		X31SDataBeanAccess subbean;

		// 検索結果が0件の場合の処理
		boolean existsTajgsWribKei = true;
		if (null == tajgs_wrib_kei_list || 0 == tajgs_wrib_kei_list.getCount())
		{
			existsTajgsWribKei = false;
			subbean = tajgs_wrib_kei_list.addDataBean();
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0740_KW, new String[]{ERROR_MSG});
		}
		else
		{
			subbean = tajgs_wrib_kei_list.getDataBean(0);
		}

		// 表示用日付情報格納
		// 他事業者割引契約締結年月日＿表示用
		paramBean[0].sendMessageString(KKW13901SFConst.TAJGS_WRIB_KEI_CNC_YMD_DSP, X31CWebConst.DATABEAN_SET_VALUE,
				formatDate(subbean.sendMessageString(KKW13901SFConst.TAJGS_WRIB_KEI_CNC_YMD_02, X31CWebConst.DATABEAN_GET_VALUE)));
		// 他事業者割引契約解約年月日＿表示用
		paramBean[0].sendMessageString(KKW13901SFConst.TAJGS_WRIB_KEI_DSL_YMD_DSP, X31CWebConst.DATABEAN_SET_VALUE,
				formatDate(subbean.sendMessageString(KKW13901SFConst.TAJGS_WRIB_KEI_DSL_YMD_02, X31CWebConst.DATABEAN_GET_VALUE)));
		// 解約他事業者通知年月日（ネット）＿表示用
		paramBean[0].sendMessageString(KKW13901SFConst.DSL_TAJGS_TCH_YMD_NET_DSP, X31CWebConst.DATABEAN_SET_VALUE,
				formatDate(subbean.sendMessageString(KKW13901SFConst.DSL_TAJGS_TCH_YMD_NET_02, X31CWebConst.DATABEAN_GET_VALUE)));
		// 解約他事業者通知年月日（電話）＿表示用
		paramBean[0].sendMessageString(KKW13901SFConst.DSL_TAJGS_TCH_YMD_TEL_DSP, X31CWebConst.DATABEAN_SET_VALUE,
				formatDate(subbean.sendMessageString(KKW13901SFConst.DSL_TAJGS_TCH_YMD_TEL_02, X31CWebConst.DATABEAN_GET_VALUE)));
		// 料金プラン変更他事業者通知年月日＿表示用
		paramBean[0].sendMessageString(KKW13901SFConst.PPCHG_TAJGS_TCH_YMD_DSP, X31CWebConst.DATABEAN_SET_VALUE,
				formatDate(subbean.sendMessageString(KKW13901SFConst.PPCHG_TAJGS_TCH_YMD_02, X31CWebConst.DATABEAN_GET_VALUE)));

		if (existsTajgsWribKei)
		{
			// ページング情報の設定
			JCCWebCommon.downmapperPageLinkInfo(this, "0", "KKSV060501CC", outputMap);
	
			// 検索エラーフラグの取得
			String searchErrFlg = JCCWebCommon.getSearchErrFlg("KKSV060501CC", outputMap);
	
			// KDDI割引契約異動通知の検索結果が0件でない場合
			if (!JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
			{
				// 連携履歴の表示フラグ
				paramBean[0].sendMessageString(KKW13901SFConst.TCHLISTFLAG, X31CWebConst.DATABEAN_SET_VALUE,  "on");

				// KDDI割引契約異動通知一覧の表示用編集
				kddi_wkei_idt_list = paramBean[0].getDataBeanArray(KKW13901SFConst.KDDI_WKEI_IDT_LIST);
				if (null != kddi_wkei_idt_list)
				{
					// 一覧の件数分繰り返す
					for (int i = 0; i < kddi_wkei_idt_list.getCount(); i++)
					{
						// KDDI割引契約異動通知情報の取得
						X31SDataBeanAccess kddi_wkei_idt_subbean = kddi_wkei_idt_list.getDataBean(i);
	
						// 行スタイルの設定
						if ((i + 1) % 2 == 1)
						{
							// 奇数行
							kddi_wkei_idt_subbean.sendMessageString(KKW13901SFConst.ROW_STYLE_03, X31CWebConst.DATABEAN_SET_VALUE, ROW_STYLE_ODD);
						}
						else
						{
							// 偶数行
							kddi_wkei_idt_subbean.sendMessageString(KKW13901SFConst.ROW_STYLE_03, X31CWebConst.DATABEAN_SET_VALUE, ROW_STYLE_EVEN);
						}
	
						// 他事業者割引契約処理コード名称が「登録」の場合は表示しない
						String tajgs_wrib_kei_tran_cd_nm = kddi_wkei_idt_subbean.sendMessageString(KKW13901SFConst.TAJGS_WRIB_KEI_TRAN_CD_NM_03, X31CWebConst.DATABEAN_GET_VALUE);
						if (TAJGS_WRIB_KEI_TRAN_CD_NM_ADD.equals(tajgs_wrib_kei_tran_cd_nm))
						{
							kddi_wkei_idt_subbean.sendMessageString(KKW13901SFConst.TAJGS_WRIB_KEI_TRAN_CD_NM_03, X31CWebConst.DATABEAN_SET_VALUE, "");
						}
					}
				}
			}
		}

		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13901);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13901);

		// 検索のコマンドIDを設定する。
		JCCWebCommon.setSearchCommand(this, "changePage");

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 年月日書式(yyyy/MM/dd)の編集を行います。<br>
	 * ただし、年月日が初期値(20991231)の場合は、空文字を返します。<br>
	 * <br>
	 * @param date 年月日書式に編集する文字列(yyyyMMdd)
	 * @return 年月日書式に編集された文字列(yyyy/MM/dd)
	 */
	private String formatDate(String date)
	{
		if (JKKStrConst.END_YMD_DEFAULT.equals(date))
		{
			return "";
		}

		return JPCUtilCommon.formatDate(date);
	}
}
