public IActionResult Create([FromBody] CreateTransactionRequestModel request) { if (request == null) { return(BadRequest(GetInvalidRequestResponse(new Exception("Request is empty.")))); } try { Precondition.CheckArgument(!string.IsNullOrEmpty(request.AccountNumber), "AccountNumber", "Account Number cannot be empty."); Precondition.CheckArgument(!string.IsNullOrEmpty(request.BSB), "BSB", "BSB cannot be empty."); Precondition.CheckArgument(!string.IsNullOrEmpty(request.FirstName), "First Name", "First Name cannot be empty."); Precondition.CheckArgument(!string.IsNullOrEmpty(request.AccountNumber), "Last Name", "Last Name cannot be empty."); Precondition.CheckArgument(!(request.Amount <= 1.00), "Amount", "Amount is invalid."); _log.LogInformation("\nTransactionController.Create - Started. - " + DateTime.Now); TransactionsApiResult transactionsApiResult; var httpStatusCode = _transactionService.CreateTransaction( new CreateTranscationRequest { AccountNumber = request.AccountNumber, BSB = request.BSB, FirstName = request.FirstName, LastName = request.LastName, Reference = request.Reference, Amount = request.Amount }, out transactionsApiResult); _log.LogInformation("\nTransactionController.Create - Ended. - " + DateTime.Now); return(StatusCode(httpStatusCode.GetHashCode(), transactionsApiResult)); } catch (ArgumentException ArgEx) { _log.LogError(ArgEx, "\nTransactionController.Create failed. - " + DateTime.Now); return(BadRequest(new TransactionsApiResult { Status = ApiStatusCode.Error, code = 10, Message = ArgEx.Message, Data = ArgEx.InnerException })); } catch (Exception ex) { _log.LogError(ex, "TransactionController.Create failed."); return(StatusCode(500, GetInternalServerErrorResponse(ex))); } }
public async Task <ActionResult <CreateTransactionResponseModel> > CreateTransaction(CreateTransactionRequestModel model) { if (model.Amount <= 0) { return(BadRequest("Invalid amount.")); } string email = HttpContext.User.Identity.Name; var sender = _authService.FindUser(email); var recipient = _authService.FindUserByName(model.Name); if (recipient == null) { return(BadRequest("Invalid username of recipient.")); } if (model.Amount > sender.Balance) { return(BadRequest("Amount greater than your balance.")); } Transaction transaction = await _paymentService.CreateTransactionAsync(sender, recipient, model.Amount); if (transaction == null) { return(BadRequest("Something went wroong.")); } return(new CreateTransactionResponseModel() { Trans_token = new TransactionToken[] { new TransactionToken() { Id = transaction.Id, Date = transaction.CreatedAt.ToString(), Amount = transaction.Amount, Balance = transaction.BalanceRecipient, Username = model.Name } } }); }