/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKSV017101CCReqChk
*	ソースファイル名：JKKSV017101CCReqChk.java
*	作成者			：富士通
*	日付			：2012年04月09日
*＜機能概要＞
*	ＳＯＤ発行ＣＣ呼出判定部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v8.00.00	2014/05/15	FJ)星野		OM-2014-0001723
**********************************************************************/
package com.fujitsu.futurity.bp.custom.reqchk;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.bp.custom.common.JCCBPCommon;
import com.fujitsu.futurity.bp.x21.bpm.common.AbstractCustomReqChk;
import com.fujitsu.futurity.bp.x21.bpm.common.IConditionValue;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.reqchk.exception.ReqChkException;


/**
 * KKSV0170 トーキ登録初期表示<br>
 * KKSV017001CC SODCC<br>
 *<br>
 * SODCCへ、サービス契約内訳＜eo光電話＞情報変更時の変更後世代登録年月日時分秒設定を行う。
 * 
 * @author 富士通
 * @since 2011-10-18
 */
public class JKKSV017101CCReqChk extends AbstractCustomReqChk {

	
	/**
	 * ＳＯＤＣＣ　実行判定メソッド
	 */
	@SuppressWarnings("unchecked")
	@Override
	public boolean checkExecution(IRequestParameterReadOnly arg0, IConditionValue arg1) throws ReqChkException
	{
		//SCマップから必要な情報を取り出す
		HashMap<String, Object> parentMap;
		try 
		{
			parentMap = (HashMap<String, Object>)arg0.getData("KKSV017104SC");
			
// OM-2014-0001723対応 20140515 星野 ADD START
			// 解約・休止トーキ開始年月日（変更前）
			String dslStaBf = (String) parentMap.get("kksv0171_chbf_dsl_pause_toki_sta_ymd");
			// 解約・休止トーキ開始年月日（変更後）
			String dslStaAf = (String) parentMap.get("dsl_pause_toki_sta_ymd");
			// 解約・休止トーキ終了年月日（変更前）
			String dslEndBf = (String) parentMap.get("kksv0171_chbf_dsl_pause_toki_end_ymd");
			// 解約・休止トーキ終了年月日（変更後）
			String dslEndAf = (String) parentMap.get("dsl_pause_toki_end_ymd");
			// 移転先開通後トーキ開始年月日（変更前）
			String opafStaBf = (String) parentMap.get("kksv0171_chbf_itens_opaf_toki_sta_ymd");
			// 移転先開通後トーキ開始年月日（変更後）
			String opafStaAf = (String) parentMap.get("itens_opaf_toki_sta_ymd");
			// 移転先開通後トーキ終了年月日（変更前）
			String opafEndBf = (String) parentMap.get("kksv0171_chbf_itens_opaf_toki_end_ymd");
			// 移転先開通後トーキ終了年月日（変更後）
			String opafEndAf = (String) parentMap.get("itens_opaf_toki_end_ymd");
			
			// 運用日付
			String opeDate = JCCBPCommon.getOpeDate(null);
			
			// トーキの開始・終了日を運用日に更新した場合、SOD発行CCを呼び出す
			if( 
				// 解約・休止トーキの開始
				( opeDate.equals(dslStaAf) && !dslStaAf.equals(dslStaBf) )
				// 解約・休止トーキの終了
				|| ( opeDate.equals(dslEndAf) && !dslEndAf.equals(dslEndBf) )
				// 移転先開通後トーキの開始
				|| ( opeDate.equals(opafStaAf) && !opafStaAf.equals(opafStaBf) )
				// 移転先開通後トーキの終了
				|| ( opeDate.equals(opafEndAf) && !opafEndAf.equals(opafEndBf) )
			){
				// 後続処理を続行
				
			// トーキの開始・終了が無い場合はfalse返却してSOD発行CCをスキップ
			}else{
				return false;
			}
			
// OM-2014-0001723対応 20140515 星野 ADD END

			String geneAddDtm = (String) parentMap.get("kk0161_gene_add_dtm");
			
			if (null != geneAddDtm && ! "".equals(geneAddDtm))
			{
				chgAfGeneAddDtmMapping(geneAddDtm, arg0);
				return true;
			}
		}
		catch (RequestParameterException e) 
		{
			return false;
		}

		return false;
	}

	private void chgAfGeneAddDtmMapping(String geneAddDtm, IRequestParameterReadOnly param) throws RequestParameterException {
		HashMap<String, Object> map = (HashMap<String, Object>) param.getData("trgt_data");
		ArrayList<Object> list = (ArrayList<Object>)map.get("trgt_data_list");
		HashMap<String, Object> subMap = (HashMap<String, Object>) list.get(0);
		HashMap<String, Object> svcUcwkKeiyakuInfoMap = (HashMap<String, Object>)subMap.get("svc_kei_ucwk_info");
		svcUcwkKeiyakuInfoMap.put("chaf_svc_kei_ucwk_gene_add_dtm", geneAddDtm);
	}

}
