Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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;
        }