using SinochemCloudClient.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Wayne.Lib.StateEngine; using Wayne.Lib.StateEngine.Generic; namespace SinochemInternetPlusApp.EpsTrxCleanup.States { class ConfirmPaymentResult : State { protected override void Enter(StateEntry stateEntry, ref Transition transition) { base.Enter(stateEntry, ref transition); var needConfirmEpsTrxes = Main.GetNeedConfirmEpsTrxes(); foreach (EpsTransaction trx in needConfirmEpsTrxes) { TrxStatusInquiryResponse response = Main.InquiryCloudTrxStatus(trx.Model); if (response != null) { if (response.IsSuccessful()) { trx.UpdateTrxStatusToDb(EpsTrxStatus.PaymentOkButNeedRefund); } else if(!response.IsStatusUnknown()) { trx.UpdateTrxStatusToDb(EpsTrxStatus.PaymentFailed); } } } transition = new Transition(this, TransitionType.ConfirmPaymentDone); } protected override void HandleEvent(StateEngineEvent stateEngineEvent, ref Transition transition) { base.HandleEvent(stateEngineEvent, ref transition); if (stateEngineEvent.Type is BasicTransitionType) { switch ((BasicTransitionType)stateEngineEvent.Type) { case BasicTransitionType.Error: transition = new Transition(this, BasicTransitionType.Error); stateEngineEvent.Handled = true; break; } } } } }