Пример #1
0
        public ICommandResult Handle(CreateCreditCommand command)
        {
            //Validar command


            //Recuperar customer
            var customer = _customerRepository.GetById(command.CustomerId);

            //Validar customer


            //Criar VO's


            //Criar Entidades
            var credit = new Credit(command.Value, command.Description, command.DueDate);

            customer.Statement.AddInput(credit);

            //Validar VO's e entidades


            //Persistir no banco
            _inputRepository.SaveFromStatement(customer.Statement);

            //Retonar valor
            return(new GenericCommandResult(true, $"Crédito adicionado com sucesso", credit));
        }
Пример #2
0
            public async Task Succeed_With_Valid_Request(
                CreateAccountCommand createToAccountCommand,
                CreateAccountCommand createFromAccountCommand,
                CreateCreditCommand createCreditCommand,
                TestServer server)
            {
                var client = server.CreateClient();

                var initialToAccount = await client.PostAsJsonAsync <CreateAccountCommand, AccountModel>("api/accounts", createToAccountCommand);

                var initialFromAccount = await client.PostAsJsonAsync <CreateAccountCommand, AccountModel>("api/accounts", createFromAccountCommand);

                var funds = await client.PostAsJsonAsync <FundsModel, FundsModel>($"api/accounts/{initialFromAccount.AccountId}/credits", createCreditCommand.Funds);

                initialFromAccount.Balance = funds.Amount;

                var createTransferCommand = new CreateTransferCommand()
                {
                    Funds = createCreditCommand.Funds,
                    ReceivingAccountId = initialToAccount.AccountId,
                    SendingAccountId   = initialFromAccount.AccountId
                };

                await client.PostAsJsonAsync <CreateTransferCommand, FundsModel>($"api/accounts/transfers", createTransferCommand);

                var resultToAccount = await client.GetAsync <AccountModel>($"api/accounts/{initialToAccount.AccountId}");

                var resultFromAccount = await client.GetAsync <AccountModel>($"api/accounts/{initialFromAccount.AccountId}");

                Assert.True(resultFromAccount.Balance ==
                            initialFromAccount.Balance - createCreditCommand.Funds.Amount);

                Assert.True(resultToAccount.Balance ==
                            initialToAccount.Balance + createCreditCommand.Funds.Amount);
            }
            public async Task Throw_Bad_Request_With_Missing_Account(
                CreateCreditCommand command,
                [Frozen] Mock <IRepository> repo,
                CreateCreditHandler sut)
            {
                repo.Setup(p => p.FindAsync(It.IsAny <IScalar <Account> >())).ReturnsAsync((Account)null);

                await Assert.ThrowsAsync <BadRequestException>(async() => { await sut.Handle(command, new CancellationToken()); });
            }
            public async Task Returns_Created_With_Valid_Request(
                CreateCreditCommand command,
                FundsModel model,
                [Frozen] Mock <IMediator> mediator,
                AccountsController sut)
            {
                mediator.Setup(p => p.Send(It.IsAny <IRequest <FundsModel> >(), It.IsAny <CancellationToken>())).ReturnsAsync(model);

                var message = await sut.PostCredit(command) as OkObjectResult;

                Assert.True(message != null);
                Assert.True(message.StatusCode == 200);
                Assert.True((FundsModel)message.Value == model);
            }
            public async Task Fail_With_Invalid_Currency(
                CreateAccountCommand createAccountCommand,
                CreateCreditCommand createCreditCommand,
                TestServer server)
            {
                createCreditCommand.Funds.Currency = "Garbage";

                var client = server.CreateClient();

                var accountModel = await client.PostAsJsonAsync <CreateAccountCommand, AccountModel>("api/accounts", createAccountCommand);

                var fundsModel = await client.PostAsJsonAsync <FundsModel, FundsModel>($"api/accounts/{accountModel.AccountId}/credits", createCreditCommand.Funds);

                Assert.True(fundsModel == null);
            }
        private void ApplyOnClick(object sender, EventArgs eventArgs)
        {
            var model = new CreateCreditRequestModel(_name.Text, _bank.Text, _type, _percent.Text, _duration.Text, _startDate.Text, _amount.Text);

            if (model.IsValid(ShowError))
            {
                ThreadPool.QueueUserWorkItem(w =>
                {
                    ShowLoaderInMainThread();
                    var commandDelegate = new CommandDelegate <CreateCreditResponce>(OnSuccess, ShowError, ShowErrorNotEnternet);
                    var command         = new CreateCreditCommand(LocalDb.Instance, commandDelegate);
                    command.Execute(model);
                    DissmissLoaderInMainThread();
                });
            }
        }
            public async Task Succeed_With_Valid_Request(
                CreateAccountCommand createAccountCommand,
                CreateCreditCommand createCreditCommand,
                TestServer server)
            {
                var client = server.CreateClient();

                var accountModel = await client.PostAsJsonAsync <CreateAccountCommand, AccountModel>("api/accounts", createAccountCommand);

                var fundsModel = await client.PostAsJsonAsync <FundsModel, FundsModel>($"api/accounts/{accountModel.AccountId}/credits",
                                                                                       createCreditCommand.Funds);

                var result = await client.GetAsync <AccountModel>($"api/accounts/{accountModel.AccountId}");

                Assert.True(result.Balance == fundsModel.Amount);
            }
            public async Task Succeed_With_Valid_Request(
                Account account,
                CreateCreditCommand command,
                [Frozen] Mock <IRepository> repo,
                CreateCreditHandler sut)
            {
                var originalBalance = account.Balance.Amount;

                repo.Setup(p => p.FindAsync(It.IsAny <IScalar <Account> >())).ReturnsAsync(account);

                var result = await sut.Handle(command, new CancellationToken());

                repo.Verify(p => p.FindAsync(It.IsAny <IScalar <Account> >()), Times.Once());
                repo.Verify(p => p.UnitOfWork.CommitAsync(), Times.Once());

                Assert.True(result.Amount == originalBalance + command.Funds.Amount);
            }
Пример #9
0
 public ICommandResult CreditPost([FromBody] CreateCreditCommand command)
 {
     command.CustomerId = Guid.Parse(User.FindFirst(ClaimTypes.Sid)?.Value);
     return(_handler.Handle(command));
 }
 public async Task <IActionResult> PostCredit(CreateCreditCommand command)
 {
     return(await Handle <CreateCreditCommand, FundsModel>(command, Ok));
 }