public decimal Reload(ReloadRequest request) { lock (_transactionLock) { _drinksContext.Transactions.Add(GenerateTransaction(request)); _drinksContext.SaveChanges(); } return(_userService.GetBalance(request.UserId)); }
public async Task <IActionResult> Reload([FromForm] ReloadRequest reloadRequest) { var correlationId = Guid.NewGuid(); try { if (string.IsNullOrEmpty(reloadRequest?.Code)) { return(Redirect("/?e=1")); } reloadRequest.Code = reloadRequest.Code.Replace(" ", "").ToLower(); if (reloadRequest.Code != HttpUtility.UrlEncode(reloadRequest.Code)) { return(Redirect("/?e=2")); } var nextQuestionResponse = await _apiServices.Reload(reloadRequest.Code, correlationId); if (nextQuestionResponse == null) { return(Redirect("/?e=2")); } AppendCookie(nextQuestionResponse.SessionId); if (nextQuestionResponse.IsComplete) { if (nextQuestionResponse.IsFilterAssessment) { return(new RedirectResult($"/results/{nextQuestionResponse.JobCategorySafeUrl}")); } return(new RedirectResult($"/results")); } var questionUrl = nextQuestionResponse.GetQuestionPageNumber(); if (nextQuestionResponse.IsFilterAssessment) { return(new RedirectResult($"/q/{nextQuestionResponse.JobCategorySafeUrl}/{questionUrl}")); } return(new RedirectResult($"/q/short/{questionUrl}")); } catch (System.Net.Http.HttpRequestException) { return(Redirect("/?e=2")); } catch (Exception ex) { _log.LogError(ex, $"Correlation Id: {correlationId} - An error occurred rendering action {nameof(Reload)}"); return(RedirectToAction("Error500", "Error")); } }
Transaction GenerateTransaction(ReloadRequest request) { var executingUser = _userService.GetUser(request.ExecutorUserId); if (executingUser == null) { throw new InvalidOperationException("Invalid user ID."); } if (!executingUser.IsAdmin) { throw new InsufficientPermissionsException(); } return(new Transaction(request.Amount, request.UserId, request.ExecutorUserId)); }
public ActionResult AddMoney(AddMoneyModel model) { if (!ModelState.IsValid) { return(View(new AddMoneyModel(_userService.GetAllUsers()))); } // ReSharper disable once PossibleInvalidOperationException var transaction = new ReloadRequest(model.Amount.Value, model.UserId, UserContext.User.Id); _transactionService.Reload(transaction); var tempData = new TempDataFacade(TempData); tempData.SuccessMessage = _userService.GetUser(model.UserId).Name + "'s account has been credited. The current balance is " + _userService.GetBalance(model.UserId).ToString("C"); return(RedirectToAction("AddMoney")); }
void Reimburse(decimal amount, int userId) { var reimbursementRequest = new ReloadRequest(amount, userId, -1); _transactionService.Reload(reimbursementRequest); }