/// <summary> /// Updates payment state after making a call to payment services /// </summary> /// <param name="payment"></param> /// <param name="thirdPartyResponseCode"></param> /// <returns></returns> private PaymentState UpdatePaymentStateFromThirdParty(Data.Entities.Payment payment, int thirdPartyResponseCode) { string userName = GetLoggedInUser(); // Map third party response to internal response, per business requirement if (thirdPartyResponseCode == _config.ThirdPartyProcessedResponse) { payment.PaymentState = PaymentStateMapping.CreateEntity(payment, PaymentStatus.Processed, userName, userName); } else if (thirdPartyResponseCode == _config.ThirdPartyInvalidResponse) { payment.PaymentState = PaymentStateMapping.CreateEntity(payment, PaymentStatus.Invalid, userName, userName); } else { payment.PaymentState = PaymentStateMapping.CreateEntity(payment, PaymentStatus.Error, userName, userName); } return(payment.PaymentState); }
public async override Task <OperationResult> Execute(PaymentResponseDto response) { int paymentId = GetPaymentIdFromControl(response.Control); Data.Entities.Payment payment = await _dbContext.Payments.FindAsync(paymentId); if (payment != null) { payment.DotpayOperationNumber = response.Number; payment.PaidDate = response.OperationDatetime != DateTime.MinValue ? response.OperationDatetime : _dateTimeProvider.Now; _dbContext.Payments.Update(payment); await _dbContext.SaveChangesAsync(); return(new OperationSucceded()); } return(new OperationFailed()); }
public async override Task <bool> Execute(User user) { Data.Entities.Payment payment = await _dbContext.Payments.FindAsync(user.Id); return(payment != null && payment.PaidDate.HasValue && (payment.PaidDate.Value > DateTime.MinValue)); }