SubWaitChargeRequest.java 5.72 KB
package th.co.ais.ssbsrfc.substate;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;

import ec02.af.abstracts.AbstractAF;
import ec02.af.data.EquinoxRawData;
import ec02.utils.AppLog;
import th.co.ais.ssbsrfc.config.Constant;
import th.co.ais.ssbsrfc.config.StateConfig;
import th.co.ais.ssbsrfc.instance.AccessSecurity;
import th.co.ais.ssbsrfc.instance.AdjustmentInfo;
import th.co.ais.ssbsrfc.instance.AdjustmentObj;
import th.co.ais.ssbsrfc.instance.AdjustmentRequest;
import th.co.ais.ssbsrfc.instance.AdjustmentRequestIns;
import th.co.ais.ssbsrfc.instance.CheckRequest;
import th.co.ais.ssbsrfc.instance.EC02Instance;
import th.co.ais.ssbsrfc.instance.EQXRawInstance;
import th.co.ais.ssbsrfc.instance.OwnershipInfo;
import th.co.ais.ssbsrfc.instance.RequestHeader;
import th.co.ais.ssbsrfc.instance.SubAccessCode;
import th.co.ais.ssbsrfc.utils.EqxStringUtils;


public class SubWaitChargeRequest extends WaitSubState {

	AdjustmentRequestIns adjustmentRequest = new AdjustmentRequestIns();
	
	public void configSubstate(EC02Instance ec02Instance, EquinoxRawData equinoxRawData)
	{
		this._state = StateConfig.SSTATE_W_CHARGEREQUEST;
		this._eventType = StateConfig.Incoming_ChargeRequest_Request;
		this._stateType = Constant.SUBSTATE_TYPE_W_REQUEST;
		if (equinoxRawData != null) {
			ec02Instance.getAFInstance().setOrig(equinoxRawData.getOrig());
			ec02Instance.getAFInstance().setInvoke(equinoxRawData.getInvoke());
			ec02Instance.getAFInstance().setInitialInvoke(equinoxRawData.getInvoke());
		}
		ec02Instance.getAFInstance().setFlow(Constant.FLOW_TEST_A);
	}

	public Object getMessage(EC02Instance ec02Instance, EquinoxRawData equinoxRawData)
	{ 
		Date time = new Date();
		String value = EqxStringUtils.getMessage(equinoxRawData, ec02Instance);
		AppLog.d("## PARAMETERS : " + value);
		HashMap<String , String> map = new HashMap<String, String>();
		String page = equinoxRawData.getRawDataAttribute("val");
		CheckRequest checkRequest = new CheckRequest();
		checkRequest.setDn(page);
		String [] dnList = checkRequest.getDn().split("&", -1);
		page = dnList[0].substring("ssid=".length());
		int i=0;
		while(i<dnList.length){
			
			map.put(dnList[i].substring(0, dnList[i].indexOf("=")), dnList[i].substring(dnList[i].indexOf("=")+1));
			i++;
		}
		
		DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmssSS");
		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.YEAR, -543);
		
		ec02Instance.getAFInstance().setDn(map);
		
		this.type = Constant.TYPE_SUCCESS;

		RequestHeader requestHeader = new RequestHeader();
		requestHeader.setVersion(ec02Instance.getAbstractAF().getUtils().getHmWarmConfig().get("Version").get(0));
		requestHeader.setBusinessCode(ec02Instance.getAbstractAF().getUtils().getHmWarmConfig().get("BusinessCode_Deduct").get(0));
		requestHeader.setMessageSeq(dateFormat.format(cal.getTime()));
		OwnershipInfo ownershipInfo = new OwnershipInfo();
		ownershipInfo.setBEID(ec02Instance.getAbstractAF().getUtils().getHmWarmConfig().get("BEID").get(0));
		ownershipInfo.setBRID(ec02Instance.getAbstractAF().getUtils().getHmWarmConfig().get("BEID").get(0));
		requestHeader.setOwnershipInfo(ownershipInfo);
		AccessSecurity accessSecurity = new AccessSecurity();
		accessSecurity.setLoginSystemCode(ec02Instance.getAbstractAF().getUtils().getHmWarmConfig().get("LoginSystemCode").get(0));
		accessSecurity.setPassword(ec02Instance.getAbstractAF().getUtils().getHmWarmConfig().get("Password").get(0));
		requestHeader.setAccessSecurity(accessSecurity);
		requestHeader.setAccessMode(ec02Instance.getAbstractAF().getUtils().getHmWarmConfig().get("AccessMode").get(0));
		
		AdjustmentRequest adjustmentrequest = new AdjustmentRequest();
		adjustmentrequest.setAdjustmentSerialNo(map.get("ssid"));
		AdjustmentObj adjustmentObj = new AdjustmentObj();
		SubAccessCode subAccessCode  =  new SubAccessCode();
		subAccessCode.setPrimaryIdentity(map.get("ms"));
		adjustmentObj.setSubAccessCode(subAccessCode);
		adjustmentrequest.setAdjustmentObj(adjustmentObj);
		adjustmentrequest.setOpType(ec02Instance.getAbstractAF().getUtils().getHmWarmConfig().get("OpType").get(0));
		AdjustmentInfo adjustmentInfo = new AdjustmentInfo();
		adjustmentInfo.setBalanceType(ec02Instance.getAbstractAF().getUtils().getHmWarmConfig().get("BalanceType").get(0));
		adjustmentInfo.setAdjustmentType(ec02Instance.getAbstractAF().getUtils().getHmWarmConfig().get("AdjustmentType_Deduct").get(0));
		adjustmentInfo.setAdjustmentAmt(map.get("fee"));
		adjustmentInfo.setCurrencyID(ec02Instance.getAbstractAF().getUtils().getHmWarmConfig().get("CurrencyID").get(0));
		adjustmentrequest.setAdjustmentInfo(adjustmentInfo);
		
		adjustmentRequest.setRequestHeader(requestHeader);
		adjustmentRequest.setAdjustmentRequest(adjustmentrequest);
		
		ec02Instance.getAFInstance().setAdjustmentRequestIns(adjustmentRequest);
		
		return value;
		
		
		
	}

	public void verifyMessage(AbstractAF abstractAF, EC02Instance ec02Instance, EquinoxRawData equinoxRawData) 
	{ 
		
		
		
		
	}

	public void buildMessage(AbstractAF abstractAF, EC02Instance ec02Instance, EquinoxRawData equinoxRawData) 
	{ 
		switch (this.type) {
			case Constant.TYPE_SUCCESS:
			default:
			{
//				this.isStat = false;
//				ec02Instance.getAFInstance().getListStat().add(new Stat(StateConfig.PROJECT_STAT_NAME + " ABCDEFG STAT"));
				String message = th.co.ais.ssbsrfc.message.MessageParser.toSoap(adjustmentRequest);
				ec02Instance.getAFInstance().setCurrentState(StateConfig.SSTATE_W_ADJUSTMENT_CHARGEREQUEST);
				EQXRawInstance eqxRaw = SubMessages.getRawAdjustmentRequest(abstractAF, ec02Instance,StateConfig.Incoming_Adjustment_ChargeRequest_Response,adjustmentRequest);
				
				this.equinoxRawDataList.add(this.ec02Builder.getRequest(eqxRaw));
			}
		}
	}
}