public PayFineResult PayFines(PaymentModel paymentModel) { PayFineResult payFineResult = this.PerformInitialValidation(paymentModel); if (paymentModel == null) { return payFineResult; } var user = this.userRepository.Find(new UserSpecification().WithId(paymentModel.RecipientId)); var payer = this.userRepository.Find(new UserSpecification().WithId(paymentModel.PayerId)); Payment payment = new Payment(paymentModel.PayerId, paymentModel.Image, "image/png", null); payment.Platform = PlatformType.WebFrontEnd; var validation = user.PayFines(payment, paymentModel.TotalFinesPaid); payFineResult = new PayFineResult(validation); if (validation.HasErrors) { return payFineResult; } payment = this.paymentRepository.Save(payment); this.userRepository.Save(user); payFineResult.FeedFineModel = this.fineMapper.MapPaymentToFeedModel( payment, payer, user, paymentModel.TotalFinesPaid ); return payFineResult; }
private PayFineResult PerformInitialValidation(PaymentModel paymentModel) { if (paymentModel.Image.IsNullOrEmpty()) { return new PayFineResult() { ValidationMessages = new List<ValidationMessage> { new ValidationMessage("A payment requires an image", Severity.Error) } }; } if (paymentModel.TotalFinesPaid < 1) { return new PayFineResult() { ValidationMessages = new List<ValidationMessage> { new ValidationMessage("A payment requires a total number of fines to be paid", Severity.Error) } }; } return null; }
public PayFineResult IssuePayment(NewPaymentModel newPaymentModel) { if (newPaymentModel.Image.IsNullOrEmpty()) { return new PayFineResult() {ValidationMessages = new List<ValidationMessage> { new ValidationMessage("A payment requires an image", Severity.Error) }}; } string mimeType = newPaymentModel.Image.Substring(0, newPaymentModel.Image.IndexOf(";base64,", StringComparison.Ordinal) + ";base64,".Length ); string image = newPaymentModel.Image.Substring( newPaymentModel.Image.IndexOf(";base64,", StringComparison.Ordinal) + ";base64,".Length ); PaymentModel payment = new PaymentModel { PayerId = newPaymentModel.PayerId, RecipientId = newPaymentModel.RecipientId, TotalFinesPaid = newPaymentModel.TotalFinesPaid, Image = Convert.FromBase64String(image), MimeType = mimeType }; var result = this.fineApi.PayFines(payment); return result; }