/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CNW00801SFLogic
*	ソースファイル名：CNW00801SFLogic.java
*	作成者			：EK908988
*	日付			：2011年08月03日
*＜機能概要＞
*	チョイスチケット取消依頼のViewロジックです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00
*	v4.00.00	2012/12/05	富士通)味岡	ST1-2012-0001018:SYSDATE使用箇所を運用日付使用に置き換え
*	v5.00.00	2013/02/21	FJ)小林		【IT1-2013-0000316】水平展開、CCMGAPIエラーハンドリング対応
*
********************************************************************************/

package eo.web.webview.CNW00801SF;

import java.util.ArrayList;
import java.util.EventObject;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CID;
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 com.fujitsu.futurity.web.x33.X33SException;

import eo.common.constant.JCNStrConst;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JCCToolTextDateFormat;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CNW00701SF.CNW00701SFConst;
import eo.web.webview.CNW00801SF.CNW00801SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCNScreenConst;
import eo.web.webview.mapping.CNSV0017_CNSV0017OPDBMapper;

/* シリアライズ警告 */
@SuppressWarnings("serial")
public class CNW00801SFLogic extends JCCWebBusinessLogic {
	
	// コンテンツ契約状態コード：解約済
	private static final String CONT_KEI_STAT_DSL = "1";
	// コンテンツ契約状態コード：強制解約済
	private static final String CONT_KEI_STAT_KYOSEI_DSL = "2";
	
	/** 例外発生エラーコード */
	private static final String NOMAL_END = "00000";
	
	/** 例外発生エラーコード */
	private static final String NOT_EOID_MEMBER = "90006";

	@Override
	protected boolean receiveMessageWeb(X31CID arg0, Object arg1,
			EventObject arg2) throws X33SException {
		// TODO 自動生成されたメソッドスタブ
		return false;
	}

	@SuppressWarnings("unchecked")
	public boolean action_init() throws Exception {

		// 共通Bean取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 親画面のBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 前画面の情報を取得する
		HashMap dataMap = JCCWebCommon.getScreenInfo(this);
		bean.sendMessageString(CNW00801SFConst.CONT_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, (String)dataMap.get(CNW00801SFConst.CONT_KEI_NO));
		bean.sendMessageString(CNW00801SFConst.TRGT_YM, X31CWebConst.DATABEAN_SET_VALUE, (String)dataMap.get(CNW00801SFConst.TRGT_YM));
		bean.sendMessageString(CNW00801SFConst.RIYOU_YM, X31CWebConst.DATABEAN_SET_VALUE, (String)dataMap.get(CNW00801SFConst.RIYOU_YM));
		bean.sendMessageString(CNW00801SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, (String)dataMap.get(CNW00801SFConst.EOID));
		bean.sendMessageString(CNW00801SFConst.KANA_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)dataMap.get(CNW00801SFConst.KANA_NM));
		bean.sendMessageString(CNW00801SFConst.CHOICE_CONT_ID, X31CWebConst.DATABEAN_SET_VALUE, (String)dataMap.get(CNW00801SFConst.CHOICE_CONT_ID));
		bean.sendMessageString(CNW00801SFConst.CHOICE_CONT_CNT, X31CWebConst.DATABEAN_SET_VALUE, (String)dataMap.get(CNW00801SFConst.CHOICE_CONT_CNT));
		bean.sendMessageString(CNW00801SFConst.CHOICE_CONT_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)dataMap.get(CNW00801SFConst.CHOICE_CONT_NM));
		bean.sendMessageString(CNW00801SFConst.SELECT_VALUE, X31CWebConst.DATABEAN_SET_VALUE, (String)dataMap.get(CNW00801SFConst.SELECT_VALUE));
		bean.sendMessageString(CNW00801SFConst.CONT_KEI_STAT_CD, X31CWebConst.DATABEAN_SET_VALUE, (String)dataMap.get(CNW00801SFConst.CONT_KEI_STAT_CD));
		bean.sendMessageString(CNW00801SFConst.CONT_KEI_END_DTM, X31CWebConst.DATABEAN_SET_VALUE, (String)dataMap.get(CNW00801SFConst.CONT_KEI_END_DTM));

		String selectValue = bean.sendMessageString(CNW00801SFConst.SELECT_VALUE, X31CWebConst.DATABEAN_GET_VALUE);
		int targetValue = Integer.parseInt(selectValue);

		X31SDataBeanAccessArray detailBean = bean.getDataBeanArray(CNW00801SFConst.CHOICE_TICKET_LIST);
		ArrayList list = (ArrayList)dataMap.get("DETAIL_LIST");
		for (int i = 0; i < list.size(); i++) {
			X31SDataBeanAccess subbean = detailBean.addDataBean();
			HashMap<String, String> detail = (HashMap<String, String>)list.get(i);
			subbean.sendMessageString(CNW00801SFConst.CONT_ID_01, X31CWebConst.DATABEAN_SET_VALUE, detail.get(CNW00801SFConst.CONT_ID_01));
			subbean.sendMessageString(CNW00801SFConst.CONT_NM_01, X31CWebConst.DATABEAN_SET_VALUE, detail.get(CNW00801SFConst.CONT_NM_01));
			subbean.sendMessageString(CNW00801SFConst.USE_STA_DTM_01, X31CWebConst.DATABEAN_SET_VALUE, detail.get(CNW00801SFConst.USE_STA_DTM_01));
			subbean.sendMessageString(CNW00801SFConst.USE_END_DTM_01, X31CWebConst.DATABEAN_SET_VALUE, detail.get(CNW00801SFConst.USE_END_DTM_01));
			subbean.sendMessageString(CNW00801SFConst.CHOICE_TICKET_USE_NO_01, X31CWebConst.DATABEAN_SET_VALUE, detail.get(CNW00801SFConst.CHOICE_TICKET_USE_NO_01));
			subbean.sendMessageString(CNW00801SFConst.UPD_DTM_01, X31CWebConst.DATABEAN_SET_VALUE, detail.get(CNW00801SFConst.UPD_DTM_01));
			subbean.sendMessageString(CNW00801SFConst.UPD_OPEACNT_01, X31CWebConst.DATABEAN_SET_VALUE, detail.get(CNW00801SFConst.UPD_OPEACNT_01));
			subbean.sendMessageString(CNW00801SFConst.CSS_CLASS_NM_01, X31CWebConst.DATABEAN_SET_VALUE, detail.get(CNW00801SFConst.CSS_CLASS_NM_01));
			if (targetValue == i)
			{
				subbean.sendMessageString(CNW00801SFConst.CSS_CLASS_NM_01, X31CWebConst.DATABEAN_SET_VALUE, "sel");
			}
		}

		// 取消ボタン表示判定
		String contKeiSta = bean.sendMessageString(CNW00801SFConst.CONT_KEI_STAT_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String contKeiEndDtm = bean.sendMessageString(CNW00801SFConst.CONT_KEI_END_DTM, X31CWebConst.DATABEAN_GET_VALUE);
		// ST1-2012-0001018 2012/12/05 n.ajioka START
//		String sysDate = JCCWebCommon.getSysDateTime();
		String strOpeDate = JCCWebCommon.getOpeDateTime(this, null);
		// ST1-2012-0001018 2012/12/05 n.ajioka END
		JCCToolTextDateFormat dateFormat = new JCCToolTextDateFormat("yyyyMMddhhmmss", "yyyy/MM/dd hh:mm:ss");
		String workDtm = dateFormat.formattedPrint(contKeiEndDtm);
		if(workDtm.length() == 0)
		{
			// コンテンツ契約レコードの契約終了年月日が20991231235959のときは画面上の値が表示されないため値をセット
			workDtm = JCNStrConst.S_END_DATE;
		}
		// コンテンツ契約状態コード判定
		if ((CONT_KEI_STAT_DSL.equals(contKeiSta) || CONT_KEI_STAT_KYOSEI_DSL.equals(contKeiSta))
				|| (Long.parseLong(workDtm) < Long.parseLong(strOpeDate)))
		{
			bean.sendMessageBoolean(CNW00801SFConst.CL_BUTTON_DSP, X31CWebConst.DATABEAN_SET_VALUE, false);
		}

		JCCWebCommon.setMessageInfo(this, "EKB9180--Q");

		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_ID_CNW00801);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_NAME_CNW00801);

		return true;
	}

	
	public boolean action_confirm() throws Exception {
		// 共通Bean取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 親画面のBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// マッピングクラスに渡すため、配列に作り変える
		X31SDataBeanAccess[] paramBean = {bean};
		
		// ユースケースID格納用マップ生成
		HashMap<String, String> paramMap = new HashMap<String, String>();
		// ユースケースID設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CNSV0017");

		// マッピングクラスのインスタンス作成
		CNSV0017_CNSV0017OPDBMapper mapper = new CNSV0017_CNSV0017OPDBMapper();
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		mapper.setCNSV001701SC(paramBean, dataMap, "1");

		// 検索結果格納用マップ生成
		HashMap outputMap = new HashMap();

		// サービスの呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, dataMap, outputMap);

		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		
		HashMap sc01Map = new HashMap();
		sc01Map = (HashMap)outputMap.get("CNSV001701SC");
		
		String resultCd = (String)sc01Map.get("err_cd");
		
		// リターンコード"90006"eoID会員存在エラーの場合は注意喚起
		if(NOT_EOID_MEMBER.equals(resultCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD310_KW);
			return true;
		}
		
		if(!NOMAL_END.equals(resultCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB9930_CE, "");
			return true;
		}
		
		
		JCCWebCommon.setMessageInfo(this, "EKB9190--I");

		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_ID_CNW00802);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_NAME_CNW00802);

		return true;
	}

	public boolean action_back() throws Exception {

		// 共通Bean取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 親画面のBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 次画面移送用のマップ作成
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// 移送データ設定
		dataMap.put(CNW00701SFConst.EOID, bean.sendMessageString(CNW00801SFConst.EOID, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.CONT_KEI_NO, bean.sendMessageString(CNW00801SFConst.CONT_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.KANA_NM, bean.sendMessageString(CNW00801SFConst.KANA_NM, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.CHOICE_CINT_NM, bean.sendMessageString(CNW00801SFConst.CHOICE_CONT_NM, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.CHOICE_CONT_CNT, bean.sendMessageString(CNW00801SFConst.CHOICE_CONT_CNT, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.CHOICE_CONT_ID, bean.sendMessageString(CNW00801SFConst.CHOICE_CONT_ID, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.HIKEIZOKU_FLG, bean.sendMessageString(CNW00801SFConst.HIKEIZOKU_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.CONT_KEI_STAT_CD, bean.sendMessageString(CNW00801SFConst.CONT_KEI_STAT_CD, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.CONT_KEI_END_DTM, bean.sendMessageString(CNW00801SFConst.CONT_KEI_END_DTM, X31CWebConst.DATABEAN_GET_VALUE));

		// 遷移元の画面ID取得
		String nextScreenId = JCCWebCommon.getScreenId(this);
		String nextScreenNm = "";

		// 画面情報を設定
		JCCWebCommon.setScreenInfo(this, nextScreenId, dataMap);
		JCCWebCommon.setScreenId(this, nextScreenId, JCNScreenConst.SCREEN_ID_CNW00801);

		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, nextScreenNm);

		return true;
	}

	public boolean action_end() throws Exception {

		// 共通Bean取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 親画面のBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 次画面移送用のマップ作成
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// 移送データ設定
		dataMap.put(CNW00701SFConst.EOID, bean.sendMessageString(CNW00801SFConst.EOID, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.CONT_KEI_NO, bean.sendMessageString(CNW00801SFConst.CONT_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.KANA_NM, bean.sendMessageString(CNW00801SFConst.KANA_NM, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.CHOICE_CINT_NM, bean.sendMessageString(CNW00801SFConst.CHOICE_CONT_NM, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.CHOICE_CONT_CNT, bean.sendMessageString(CNW00801SFConst.CHOICE_CONT_CNT, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.CHOICE_CONT_ID, bean.sendMessageString(CNW00801SFConst.CHOICE_CONT_ID, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.HIKEIZOKU_FLG, bean.sendMessageString(CNW00801SFConst.HIKEIZOKU_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.CONT_KEI_STAT_CD, bean.sendMessageString(CNW00801SFConst.CONT_KEI_STAT_CD, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00701SFConst.CONT_KEI_END_DTM, bean.sendMessageString(CNW00801SFConst.CONT_KEI_END_DTM, X31CWebConst.DATABEAN_GET_VALUE));

		// 遷移元の画面ID取得
		String nextScreenId = JCCWebCommon.getScreenId(this);
		String nextScreenNm = "";

		// 画面情報を設定
		JCCWebCommon.setScreenInfo(this, nextScreenId, dataMap);
		JCCWebCommon.setScreenId(this, nextScreenId, JCNScreenConst.SCREEN_ID_CNW00802);

		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, nextScreenNm);

		return true;
	}

	public boolean create() throws Exception {
		
		return true;
	}

	public boolean clear() throws Exception {
		return action_init();
	}
}
