public async Task Withdraw_WithCorrectRequest_ReturnSuccessTransactionsResult() { // Arrange var withdrawRequest = new WithdrawRequest { AccountIban = "TH123456", Amount = 500, }; var transactionsResult = new TransactionsResult { Success = true }; transactionsService .WithdrawAsync(Arg.Any <WithdrawRequest>()) .Returns(Task.FromResult(transactionsResult)); // Act var actionResult = await transactionsController.Withdraw(withdrawRequest); var objectResult = actionResult as OkObjectResult; // Assert Assert.NotNull(objectResult); Assert.Equal((int)System.Net.HttpStatusCode.OK, objectResult.StatusCode); Assert.True((objectResult.Value as TransactionsResult).Success); }
public async Task Deposit_WithIncorrectRequest_ReturnFailedTransactionsResult() { // Arrange var depositRequest = new DepositRequest { AccountIban = "TH123456", Amount = 0, }; var transactionsResult = new TransactionsResult { Success = false }; transactionsService .DepositAsync(Arg.Any <DepositRequest>()) .Returns(Task.FromResult(transactionsResult)); // Act var actionResult = await transactionsController.Deposit(depositRequest); var objectResult = actionResult as OkObjectResult; // Assert Assert.NotNull(objectResult); Assert.Equal((int)System.Net.HttpStatusCode.OK, objectResult.StatusCode); Assert.False((objectResult.Value as TransactionsResult).Success); }
public async Task Transfer_WithIncorrectRequest_ReturnSuccessTransactionsResult() { // Arrange var transferRequest = new TransferRequest { FromAccountIban = "AAAAA", ToAccountIban = "BBBBB", Amount = 1000, }; var transactionsResult = new TransactionsResult { Success = false }; transactionsService .TransferAsync(Arg.Any <TransferRequest>()) .Returns(Task.FromResult(transactionsResult)); // Act var actionResult = await transactionsController.Transfer(transferRequest); var objectResult = actionResult as OkObjectResult; // Assert Assert.NotNull(objectResult); Assert.Equal((int)System.Net.HttpStatusCode.OK, objectResult.StatusCode); Assert.False((objectResult.Value as TransactionsResult).Success); }
public async Task <TransactionsResult> WithdrawAsync(WithdrawRequest withdrawRequest) { var transactionsResult = new TransactionsResult { AccountIban = withdrawRequest.AccountIban, Amount = withdrawRequest.Amount, Success = false, ErrorMessage = string.Empty, TransactionsType = "Withdraw", TransactionsDate = DateTime.UtcNow }; if (withdrawRequest.Amount <= 0) { transactionsResult.ErrorMessage = "Withdraw amount is incorret"; return(transactionsResult); } var account = await accountRepository.GetByAccountIbanAsync(withdrawRequest.AccountIban); if (account == null) { transactionsResult.ErrorMessage = "Account does not exists"; return(transactionsResult); } if (account.Balance - withdrawRequest.Amount < 0) { transactionsResult.ErrorMessage = "Account balance less than withdraw amount"; return(transactionsResult); } account.Balance -= withdrawRequest.Amount; await accountRepository.UpdateAccountAsync(account); var withdraw = new Withdraw { WithdrawId = Guid.NewGuid(), AccountId = account.AccountId, Amount = withdrawRequest.Amount, Timestamp = DateTime.UtcNow }; await withdrawRepository.AddWithdrawAsync(withdraw); transactionsResult.Balance = account.Balance; transactionsResult.Success = true; return(transactionsResult); }
public async Task <TransactionsResult> TransferAsync(TransferRequest transferRequest) { var transactionsResult = new TransactionsResult { AccountIban = transferRequest.FromAccountIban, Amount = transferRequest.Amount, Success = false, ErrorMessage = string.Empty, TransactionsType = "Transfer", TransactionsDate = DateTime.UtcNow }; var accountFrom = await accountRepository.GetByAccountIbanAsync(transferRequest.FromAccountIban); var accountTo = await accountRepository.GetByAccountIbanAsync(transferRequest.ToAccountIban); if (accountFrom == null || accountTo == null) { transactionsResult.ErrorMessage = "Account does not exists"; return(transactionsResult); } if (accountFrom.Balance - transferRequest.Amount < 0) { transactionsResult.ErrorMessage = "Account balance not enough"; return(transactionsResult); } accountFrom.Balance -= transferRequest.Amount; accountTo.Balance += transferRequest.Amount; await accountRepository.UpdateAccountAsync(accountFrom); await accountRepository.UpdateAccountAsync(accountTo); var transfer = new Transfer { TransferId = Guid.NewGuid(), FromAccountId = accountFrom.AccountId, ToAccountId = accountTo.AccountId, Amount = transferRequest.Amount, Timestamp = DateTime.UtcNow }; await transferRepository.AddTransferAsync(transfer); transactionsResult.Balance = accountFrom.Balance; transactionsResult.Success = true; return(transactionsResult); }
public async Task <TransactionsResult> DepositAsync(DepositRequest depositRequest) { var transactionsResult = new TransactionsResult { AccountIban = depositRequest.AccountIban, Amount = depositRequest.Amount, Success = false, ErrorMessage = string.Empty, TransactionsType = "Deposit", TransactionsDate = DateTime.UtcNow }; if (depositRequest.Amount <= 0) { transactionsResult.ErrorMessage = "Deposit amount is incorret"; return(transactionsResult); } var account = await accountRepository.GetByAccountIbanAsync(depositRequest.AccountIban); if (account == null) { transactionsResult.ErrorMessage = "Account does not exists"; return(transactionsResult); } var amount = (double)depositRequest.Amount; var fee = amount * 0.1 / 100; var total = amount - fee; account.Balance += (decimal)total; await accountRepository.UpdateAccountAsync(account); var deposit = new Deposit { DepositId = Guid.NewGuid(), AccountId = account.AccountId, Amount = depositRequest.Amount, Timestamp = DateTime.UtcNow }; await depositRepository.AddDepositAsync(deposit); transactionsResult.Balance = account.Balance; transactionsResult.Success = true; return(transactionsResult); }
public TransactionsResult transactionList(string sessionToken, string accountNumber) { var result = new TransactionsResult(); var userId = _checkSessionToken(sessionToken, result); if (userId.HasValue) { var account = mContext.UserAccount .Where(a => a.Number == accountNumber && a.UserId == userId) .FirstOrDefault(); result.Transactions = mContext.Transaction.Where(t => t.UserAccount == account.Id).ToList(); } return(result); }
private void btnTest_Click1(object sender, RoutedEventArgs e) { JsonRpcClient client = new JsonRpcClient(); GetTransactionsMethod method = new GetTransactionsMethod(1, new TransactionRequest("1Nwa0TCr5umw5ZLAvKmHCl+SJDP21dyL")); try { TransactionsResult result = client.PostMethod <TransactionsResult>(method); MessageBox.Show(result.Total.ToString()); MessageBox.Show(result.Transactions[1].Amount); } catch (JsonRpcException ex) { MessageBox.Show(ex.ErrorMessage); } }