private async static Task <TransactionBaseResponse> TestDeposit(TransactionBaseRequest request) { var client = new httpClientSerive(); var response = await client.PostDeposit(request); Console.WriteLine("Deposit result: " + JsonConvert.SerializeObject(response)); return(response); }
public void InsertTransaction(TransactionBaseRequest request, string message) { var transaction = new TransactionHistory { AccountId = request.AccountNumber, Amount = request.Amount, Currency = request.Currency, IsSuccess = true, Message = message }; _uow.TransactionHistoryRepo.Create(transaction); }
public void InsertNotExistedAccountNumber() { //Arr var transaction = new TransactionBaseRequest(5, 500000, "VND"); //Act var result = Assert.ThrowsAsync <CustomException>(() => _transactionService.Deposit(transaction)); //Assert result.ShouldBeOfType <CustomException>(); result.AccountNumber.ShouldBe(5); result.ErrorCode.ShouldBe("E3"); result.ErrorMessage.ShouldBe("Account number does not existed"); }
public void InsertInValidAmount() { //Arr var transaction = new TransactionBaseRequest(1, -500000, "VND"); //Act var result = Assert.ThrowsAsync <CustomException>(() => _transactionService.Deposit(transaction)); //Assert result.ShouldBeOfType <CustomException>(); result.ErrorMessage.ShouldBe("Amount can not be negative"); result.ErrorCode.ShouldBe("E6"); result.AccountNumber.ShouldBe(1); }
public void InsertInValidAccountNumberAndCurrency() { //Arr var transaction = new TransactionBaseRequest(-4, 500000, null); //Act var result = Assert.ThrowsAsync <CustomException>(() => _transactionService.Deposit(transaction)); //Assert result.ShouldBeOfType <CustomException>(); result.ErrorMessage.ShouldBe("Account Number can not be negative"); result.ErrorCode.ShouldBe("E5"); result.AccountNumber.ShouldBe(-4); }
public void WithdrawOutOfBanlance() { //Arr var transaction = new TransactionBaseRequest(1, 2000, "USD"); //Act var result = Assert.ThrowsAsync <CustomException>(() => _transactionService.Withdraw(transaction)); //Assert result.ShouldBeOfType <CustomException>(); result.AccountNumber.ShouldBe(1); result.ErrorCode.ShouldBe("E1"); result.ErrorMessage.ShouldBe("The Balance is not enough for withdrawal"); }
public void WithdrawNewCurrency() { //Arr var transaction = new TransactionBaseRequest(1, 500000, "VND"); //Act var result = Assert.ThrowsAsync <CustomException>(() => _transactionService.Withdraw(transaction)); //Assert result.ShouldBeOfType <CustomException>(); result.AccountNumber.ShouldBe(1); result.ErrorCode.ShouldBe("E4"); result.ErrorMessage.ShouldBe("This account doesn't have this currency. Please try with another currency"); }
public void InsertInValidCurrency() { //Arr var transaction = new TransactionBaseRequest(1, 500000, null); //Act var result = Assert.ThrowsAsync <CustomException>(() => _transactionService.Withdraw(transaction)); //Assert result.ShouldBeOfType <CustomException>(); result.ErrorMessage.ShouldBe("Currency can not be null or empty"); result.ErrorCode.ShouldBe("E7"); result.AccountNumber.ShouldBe(1); }
public async Task <TransactionBaseResponse> Deposit(TransactionBaseRequest request) { request.Validate(); //Check account valid var account = (await _uow.AccountInfoRepo.FindByConditionAsync(x => x.Id == request.AccountNumber && !x.IsDeleted)).FirstOrDefault(); if (account == null) { throw new CustomException(ErrorCode.E3, request.AccountNumber); } var accountDetail = (await _uow.AccountDetailRepo.FindByConditionAsync(x => x.AcountInfoId == request.AccountNumber && x.Currency == request.Currency && !x.IsDeleted)).FirstOrDefault(); //Check account existed with this currency if (accountDetail != null) { accountDetail.Balance += request.Amount; _uow.AccountDetailRepo.Update(accountDetail); } else { accountDetail = new AccountDetail { AcountInfoId = request.AccountNumber, Balance = request.Amount, Currency = request.Currency, IsDeleted = false }; _uow.AccountDetailRepo.Create(accountDetail); } InsertTransaction(request, Contanst.Message.DepositSucceeded); await _uow.SaveAsyn(); return(new TransactionBaseResponse { AccountNumber = request.AccountNumber, Balance = accountDetail.Balance, Currency = accountDetail.Currency, Successful = true, Message = Contanst.Message.TransactionSucceeded }); }
public async Task DepositNewCurrency() { //Arr var transaction = new TransactionBaseRequest(1, 500000, "VND"); //Act var result = await _transactionService.Deposit(transaction); //Assert result.ShouldBeOfType <TransactionBaseResponse>(); result.AccountNumber.ShouldBe(1); result.Balance.ShouldBe(500000); result.Currency.ShouldBe("VND"); result.Successful.ShouldBe(true); result.Message.ShouldBe("Transaction succeeded"); var trasactionHistory = (await _fakeuow.TransactionHistoryRepo.FindAllAsync()).OrderByDescending(x => x.Id).FirstOrDefault(); trasactionHistory.AccountId.ShouldBe(1); trasactionHistory.Amount.ShouldBe(500000); trasactionHistory.Currency.ShouldBe("VND"); trasactionHistory.IsSuccess.ShouldBe(true); }
public async Task <TransactionBaseResponse> PostWithdraw(TransactionBaseRequest request) { return(await PostAsync <TransactionBaseRequest, TransactionBaseResponse>("account/withdraw", request)); }
public async Task <TransactionBaseResponse> PostDeposit(TransactionBaseRequest request) { return(await PostAsync <TransactionBaseRequest, TransactionBaseResponse>("account/deposit", request)); }
public async Task <ActionResult> Withdraw([FromBody] TransactionBaseRequest request) { HttpContext.Session.SetInt32("AccountNumber", request.AccountNumber); return(Json(await _transactionService.Withdraw(request))); }