예제 #1
0
        public async void Deposit_Valid_Amount(string pin, string name, string accountId, double amount)
        {
            var account  = Substitute.For <Account>();
            var customer = Substitute.For <Customer>();

            customer.FindAccount(Arg.Any <Guid>())
            .Returns(account);

            customerReadOnlyRepository
            .GetByAccount(Guid.Parse(accountId))
            .Returns(customer);

            var depositUseCase = new DepositService(
                customerReadOnlyRepository,
                customerWriteOnlyRepository,
                converter
                );

            var request = new DepositCommand(
                Guid.Parse(accountId),
                amount
                );

            DepositResult result = await depositUseCase.Handle(request);

            Assert.Equal(request.Amount, result.Transaction.Amount);
        }
예제 #2
0
        public async Task <IActionResult> Deposit(CreateDepositRequest request, CancellationToken token)
        {
            _logger.LogInformation($"{nameof(AccountController)}.{nameof(Deposit)} - {request}");

            if (!ModelState.IsValid)
            {
                return(BadRequest($"Problem with CreateDepositRequest"));
            }

            if (!Currencies.IsValid(request.Currency.ToUpperInvariant()))
            {
                return(BadRequest($"Currency symbol entered is invalid!"));
            }

            CreateDeposit deposit = await CreateDepositFromLocalCurrency(request, token);

            if (!_options.BaseCurrency.Equals(request.Currency, StringComparison.InvariantCultureIgnoreCase))
            {
                deposit = await CreateDepositFromForeignCurrency(request, token);
            }

            DepositResult depositResult = await _accountService.Deposit(deposit);

            if (depositResult.Status == AccountStatus.Error)
            {
                return(BadRequest($"{depositResult.Message}"));
            }

            AccountDepositResponse response = new AccountDepositResponse(depositResult.AccountId,
                                                                         depositResult.Amount.Value, depositResult.Currency.Value, depositResult.OldBalance.Value,
                                                                         depositResult.NewBalance.Value);

            return(Ok(response));
        }
예제 #3
0
        public DepositView(DepositResult data)
        {
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }

            this.Data = data;
        }
        public async Task <IActionResult> Deposit([FromBody] DepositCommand command)
        {
            DepositResult depositResult = await _depositCommandHandler.Execute(command);

            if (depositResult == null)
            {
                return(new NoContentResult());
            }
            Model model = new Model(
                depositResult.Transaction.Amount,
                depositResult.Transaction.Description,
                depositResult.Transaction.TransactionDate,
                depositResult.UpdatedBalance);

            return(new ObjectResult(model));
        }
        public async void Deposit_Valid_Amount(string accountId, double amount)
        {
            var account  = new Account(Guid.NewGuid());
            var customer = new Customer("08724050601", "Jorge Perales Diaz");

            accountReadOnlyRepository
            .Get(Guid.Parse(accountId))
            .Returns(account);

            var depositUseCase = new DepositUseCase(
                accountReadOnlyRepository,
                accountWriteOnlyRepository
                );

            DepositResult result = await depositUseCase.Execute(
                Guid.Parse(accountId),
                amount);

            Assert.Equal(amount, result.Transaction.Amount);
        }
예제 #6
0
        public async Task <IActionResult> Deposit([FromBody] DepositRequest request)
        {
            DepositResult depositResult = await depositService.Execute(
                request.AccountId,
                request.Amount);

            if (depositResult == null)
            {
                return(new NoContentResult());
            }

            Model model = new Model(
                depositResult.Transaction.Amount,
                depositResult.Transaction.Description,
                depositResult.Transaction.TransactionDate,
                depositResult.UpdatedBalance
                );

            return(new ObjectResult(model));
        }
예제 #7
0
        public async Task <IActionResult> Deposit([FromBody] DepositRequest request)
        {
            var command = new DepositCommand(
                request.AccountId,
                request.Amount);

            DepositResult depositResult = await depositService.Process(command);

            if (depositResult == null)
            {
                return(new NoContentResult());
            }

            DepositModel model = new DepositModel(
                depositResult.Transaction.Amount,
                depositResult.Transaction.Description,
                depositResult.Transaction.TransactionDate,
                depositResult.UpdatedBalance
                );

            return(new ObjectResult(model));
        }
        public async void Deposit_Valid_Amount(string accountId, double amount)
        {
            var account  = new Account(Guid.NewGuid());
            var customer = new Customer("08724050601", "Ivan Paulovich");

            accountReadOnlyRepository
            .Get(Guid.Parse(accountId))
            .Returns(account);

            var depositUseCase = new DepositService(
                accountReadOnlyRepository,
                accountWriteOnlyRepository
                );

            var request = new DepositCommand(
                Guid.Parse(accountId),
                amount
                );

            DepositResult result = await depositUseCase.Process(request);

            Assert.Equal(request.Amount, result.Transaction.Amount);
        }
예제 #9
0
        public async void Deposit_Valid_Amount(string accountId, double amount)
        {
            var account = Substitute.For<Account>();
            var customer = Substitute.For<Customer>();

            accountReadOnlyRepository
                .Get(Guid.Parse(accountId))
                .Returns(account);

            var depositUseCase = new DepositService(
                accountReadOnlyRepository,
                accountWriteOnlyRepository,
                converter
            );

            var request = new DepositCommand(
                Guid.Parse(accountId),
                amount
            );

            DepositResult result = await depositUseCase.Process(request);

            Assert.Equal(request.Amount, result.Transaction.Amount);
        }