Пример #1
0
        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."));
            }
        }
Пример #2
0
        public IActionResult Put([FromBody] Models.Balance balance)
        {
            Models.Balance result = _balanceRepository.UpdateBalance(balance);

            if (result != null)
            {
                return(Accepted(result));
            }
            else
            {
                return(StatusCode(500));
            }
        }
Пример #3
0
        public IActionResult Post([FromBody] Models.Balance balance)
        {
            var result = _balanceRepository.CreateBalance(balance);

            if (result == 0)
            {
                return(StatusCode(201));
            }
            else
            {
                return(StatusCode(500));
            }
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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."));
            }
        }
Пример #6
0
        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);
            }
        }