Exemplo n.º 1
0
        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"));
            }
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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"));
        }
Exemplo n.º 5
0
        void Reimburse(decimal amount, int userId)
        {
            var reimbursementRequest = new ReloadRequest(amount, userId, -1);

            _transactionService.Reload(reimbursementRequest);
        }