Example #1
0
    public async Task <bool> AddAsync(PricingPaymentMethod obj)
    {
        var sql = @"INSERT INTO PaymentMethods 
                (Id, Description, MaxInstallments)
                VALUES (?Id, ?Description, ?MaxInstallments)";

        var result = await base.connection.ExecuteScalarAsync <int>(
            sql,
            param : new { Id = obj.Id, Description = obj.Description, MaxInstallments = obj.MaxInstallments },
            transaction : base.transaction
            );

        return(result > 0);
    }
Example #2
0
        public async Task <Unit> Handle(AddPaymentMethodCommand request, CancellationToken cancellationToken)
        {
            var paymentMethod = new PricingPaymentMethod(request.Description, request.MaxInstallments);

            if (!paymentMethod.IsValid())
            {
                return(await Unit.Task);
            }

            var  taxesEntity   = new List <PricingPaymentMethodTax>();
            bool taxesAreValid = true;

            foreach (var item in request.TaxesCommands)
            {
                var tax = new PricingPaymentMethodTax(item.Description, item.TaxValue, paymentMethod.Id);

                if (!tax.IsValid())
                {
                    taxesAreValid = false;
                }
                else
                {
                    taxesEntity.Add(tax);
                }
            }

            if (!taxesAreValid)
            {
                return(await Unit.Task);
            }

            await _unitOfWork.BeginTransactionAsync(cancellationToken);

            await _unitOfWork.PaymentMethodPersistentRepository.AddAsync(paymentMethod);

            await _unitOfWork.PaymentMethodPersistentRepository.AddTaxesAsync(taxesEntity);

            var result = await _unitOfWork.CommitAsync();

            if (!result)
            {
                await _domainNotificationHandler.Handle(new DomainNotification("Persistence", "Ocorreu um erro ao gravar os dados."), cancellationToken);
            }

            return(await Unit.Task);
        }