Пример #1
0
        public IPaymentProcessor Get(IPaymentMethod paymentMethod)
        {
            #region Preconditions

            if (paymentMethod == null) throw new ArgumentNullException("paymentMethod");

            #endregion

            var processor = processors.FirstOrDefault(p => p.Accepts(paymentMethod));

            if (processor == null)
            {
                throw new Exception("No registered processors accept '{0}'.".FormatWith(paymentMethod.GetType().ToString()));
            }

            return processor;
        }
Пример #2
0
        public bool PayTransaction(PaymentDTO paymentMethodDTO, int transactionId)
        {
            if (ExistsTransaction(transactionId))
            {
                Transaction transaction = unitOfWork.TransactionRepository.GetByID(transactionId);

                if (!transaction.Pay)
                {
                    validateSupplierHasFieldsToCompleteTransaction(transaction);

                    if (transaction.TotalAmount > 0)
                    {
                        validateBillHasSpecificValues(transaction);
                        ConvertPaymentMethod convert       = new ConvertPaymentMethod();
                        IPaymentMethod       paymentMethod = convert.convertPaymentDTO(paymentMethodDTO);
                        if (paymentMethod.PayTransaction(paymentMethodDTO.AmountGiven, transaction.TotalAmount))
                        {
                            transaction.PayMethod = paymentMethod.GetType().Name;
                            transaction.Pay       = true;
                            setPointsToClient(transaction);
                            unitOfWork.TransactionRepository.Update(transaction);

                            unitOfWork.Save();
                            return(true);
                        }
                        return(false);
                    }
                    else
                    {
                        throw new NonExistingPaymentException("La transaccion no tiene facturas asociadas por lo que no hay nada para pagar");
                    }
                }
                else
                {
                    throw new TransactionAlreadyPayException("La transaccion ya fue pagada");
                }
            }
            else
            {
                throw new NotFoundException("No existe la transaccion especificada");
            }
        }
        public IPaymentProcessor Get(IPaymentMethod paymentMethod)
        {
            #region Preconditions

            if (paymentMethod == null)
            {
                throw new ArgumentNullException("paymentMethod");
            }

            #endregion

            var processor = processors.FirstOrDefault(p => p.Accepts(paymentMethod));

            if (processor == null)
            {
                throw new Exception("No registered processors accept '{0}'.".FormatWith(paymentMethod.GetType().ToString()));
            }

            return(processor);
        }