public IActionResult DepositFunds(decimal amount, string transactionId) { _logger.LogInformation($"Deposit/{transactionId}/{amount} was called"); ErrorModel errorResult = new ErrorModel(); if (amount <= 0) { errorResult.ErrorCode = "NegativeOrZeroValue"; errorResult.ErrorDescription = "უარყოფითი ან ნულოვანი მნიშვნელობის გადაცემა არაა დაშვებული"; return(BadRequest(errorResult)); } ErrorCode gameDecreaseBalanceResult = _gameBalanceManager.DecreaseBalance(amount, transactionId); try { if (gameDecreaseBalanceResult != ErrorCode.Success) { errorResult.ErrorCode = gameDecreaseBalanceResult.ToString(); errorResult.ErrorDescription = gameDecreaseBalanceResult.GetErrorDescription() + $" (GameBalance)"; return(BadRequest(errorResult)); } } catch (Exception ex) { errorResult.ErrorCode = ErrorCode.UnknownError.ToString(); errorResult.ErrorDescription = ErrorCode.UnknownError.GetErrorDescription(); _logger.LogError($"Error executing Deposit/{transactionId}/{amount}: {ex.Message}"); return(BadRequest(ErrorCode.UnknownError)); } ErrorCode casinoIncreaseBalanceResult = _casinoBalanceManager.IncreaseBalance(amount, transactionId); if (casinoIncreaseBalanceResult != ErrorCode.Success) { casinoIncreaseBalanceResult = _gameBalanceManager.Rollback(transactionId); if (casinoIncreaseBalanceResult == ErrorCode.Success) { casinoIncreaseBalanceResult = ErrorCode.TransactionRollbacked; } } try { if (gameDecreaseBalanceResult != ErrorCode.Success) { errorResult.ErrorCode = casinoIncreaseBalanceResult.ToString(); if (casinoIncreaseBalanceResult == ErrorCode.TransactionRollbacked) { errorResult.ErrorDescription = casinoIncreaseBalanceResult.GetErrorDescription() + $" (GameBalance)"; } else { errorResult.ErrorDescription = casinoIncreaseBalanceResult.GetErrorDescription() + $" (CasinoBalance)"; } return(BadRequest(errorResult)); } else { return(Ok()); } } catch (Exception ex) { errorResult.ErrorCode = ErrorCode.UnknownError.ToString(); errorResult.ErrorDescription = ErrorCode.UnknownError.GetErrorDescription(); _logger.LogError($"Error executing Deposit/{transactionId}/{amount}: {ex.Message}"); return(BadRequest(ErrorCode.UnknownError)); } }