public IActionResult Withdraw(Models.ActivityRequest request) { // Make sure amount is greater than zero if (request.Amount > 0) { // Update Balance Models.Balance accountBalance = _balanceRepository.GetBalanceById(request.AccountId); // Make sure balance can cover withdrawal if (accountBalance.CurrentBalance >= request.Amount) { accountBalance.CurrentBalance -= request.Amount; Models.Balance result = _balanceRepository.UpdateBalance(accountBalance); // Add Activity _activityRepository.CreateActivity(new Models.Activity { AccountId = request.AccountId, Amount = request.Amount, ActivityTypeId = Models.ActivityType.Withdrawal }); return(Accepted(result)); } else { return(BadRequest("Not enough funds available to withdraw.")); } } else { return(BadRequest("Amount must be greater than zero.")); } }
public IActionResult Put([FromBody] Models.Balance balance) { Models.Balance result = _balanceRepository.UpdateBalance(balance); if (result != null) { return(Accepted(result)); } else { return(StatusCode(500)); } }
public IActionResult Post([FromBody] Models.Balance balance) { var result = _balanceRepository.CreateBalance(balance); if (result == 0) { return(StatusCode(201)); } else { return(StatusCode(500)); } }
public int CreateBalance(Models.Balance balance) { string sql = $@"INSERT INTO dbo.Balance (AccountId, CurrentBalance, CurrentFloor) VALUES (@AccountId, @CurrentBalance, @CurrentFloor)"; try { _logger.LogDebug($@"{_className}: Creating Balance for Account {balance.AccountId}"); using (var connection = new SqlConnection(_connectionString)) { connection.Query(sql, new { AccountId = balance.AccountId, CurrentBalance = balance.CurrentBalance, CurrentFloor = balance.CurrentFloor }); } return(0); } catch (Exception e) { _logger.LogError($@"{_className}: Error creating Balance for Account {balance.AccountId} - {e.Message}"); return(-1); } }
public IActionResult Deposit(Models.ActivityRequest request) { // Make sure amount is greater than zero if (request.Amount > 0) { // Update Balance Models.Balance accountBalance = _balanceRepository.GetBalanceById(request.AccountId); accountBalance.CurrentBalance += request.Amount; Models.Balance result = _balanceRepository.UpdateBalance(accountBalance); // Add Activity _activityRepository.CreateActivity(new Models.Activity { AccountId = request.AccountId, Amount = request.Amount, ActivityTypeId = Models.ActivityType.Deposit }); return(Accepted(result)); } else { return(BadRequest("Amount must be greater than zero.")); } }
public Models.Balance UpdateBalance(Models.Balance balance) { string sql = $@"UPDATE dbo.Balance SET CurrentBalance = @CurrentBalance, CurrentFloor = @CurrentFloor WHERE AccountId = @AccountId"; try { _logger.LogDebug($@"{_className}: Updating Balance for Account {balance.AccountId} to {balance.CurrentBalance}"); using (var connection = new SqlConnection(_connectionString)) { connection.Execute(sql, new { AccountId = balance.AccountId, CurrentBalance = balance.CurrentBalance, CurrentFloor = balance.CurrentFloor }); } return(GetBalanceById(balance.AccountId)); } catch (Exception e) { _logger.LogError($@"{_className}: Error updating Balance for Account {balance.AccountId} - {e.Message}"); return(null); } }