Exemple #1
0
        public async Task DadaUmaContaAPagarEOPagamentoDaMesmaComSeisDiasDeAtrasoOValorPagoDeveSerDeCentoEOitoComOitenta()
        {
            var payableAccount = new PayableAccount("Conta de teste", value: 100m, dueDate: DateTime.Now.Date);
            var paidAccount    = await _payableAccountService.Pay(payableAccount, payDay : DateTime.Now.Date.AddDays(6));

            Assert.True(paidAccount.AmountPaid == 106.80m && paidAccount.DelayedDays == 6);
        }
Exemple #2
0
        public async Task <ICommandResult> Handle(PayableAccountCreateCommand request, CancellationToken cancellationToken = default)
        {
            request.Validate();
            if (request.Invalid)
            {
                return(new CommandResult(false, "Dados incompletos", null, request.Notifications));
            }

            var payableAccount = new PayableAccount(request.Name, request.Value, (DateTime)request.DueDate);

            try
            {
                await _payableAccountRepository.InsertAsync(payableAccount, cancellationToken);

                var paidAccount = await _payableAccountService.Pay(payableAccount, (DateTime)request.Payday);

                await _paidAccountRepository.InsertAsync(paidAccount, cancellationToken);

                await _unitOfWork.CommitAsync(cancellationToken);
            }
            catch (Exception ex)
            {
                await _unitOfWork.RollbackAsync(cancellationToken);

                return(new CommandResult(false, "Erro ao gravar o registro", null, ex.Message));
            }
            return(new CommandResult(true, "Conta a pagar registrada", payableAccount));
        }
Exemple #3
0
        public async Task DadaUmaContaAPagarEOPagamentoDaMesmaEmDiaOValorPagoDeveSerIgualAoOriginal()
        {
            var payableAccount = new PayableAccount("Conta de teste", value: 100m, dueDate: DateTime.Now.Date.AddDays(3));
            var paidAccount    = await _payableAccountService.Pay(payableAccount, payDay : DateTime.Now.Date);

            Assert.True(paidAccount.AmountPaid == 100m && paidAccount.DelayedDays == 0);
        }