public async Task <IActionResult> Result(int?id) { var user = await usersRepository.Get(id); if (user == null) { return(RedirectToAction("Index")); } var allQUestions = questionsRepository.GetAll(); var allUserAnswers = userAnswersRepository.GetByUserId(id); if (allQUestions.Count == 0) { return(RedirectToAction("Index")); } if (allQUestions.Count != allUserAnswers.Count) { return(RedirectToAction("Quiz", new { id })); } var resultList = new List <Result>(); for (int i = 0; i < allQUestions.Count; i++) { var optionList = optionsRepository.GetByQuestionId(allQUestions[i].QuestionId); resultList.Add(new Result { QuestionText = allQUestions[i].QuestionText, CorrectOption = optionList[allQUestions[i].CorrectOption - 1].OptionText, ChosenOption = optionList[allUserAnswers[i].OptionChosen.Value - 1].OptionText, IsCorrect = allQUestions[i].CorrectOption == allUserAnswers[i].OptionChosen.Value, Id = i + 1 }); } var totalCorrect = 0; foreach (var result in resultList) { if (result.IsCorrect) { totalCorrect++; } } var viewModel = new HomeResultViewModel { Results = resultList, Email = user.Email, TotalCorrect = totalCorrect }; return(View(viewModel)); }
public IActionResult Result(int input) { var viewModel = new HomeResultViewModel(); var errorString = "ERROR - ENTER AMOUNT ACCORDING TO REMAINING BILLS"; var dispensedBillsList = new List <int>(); if (_billService.CheckInputDividesBy100(input) == false) { viewModel.Header = errorString; } if (_billService.CheckEnoughBillsAreAvailable(input) == false) { viewModel.Header = errorString; } if (_billService.CheckRemainingBillsAddUp(input) == false) { viewModel.Header = errorString; } else { dispensedBillsList = _billService.GetSmallestAmountBills(input); var listBillObjects = _billService.ConvertToBills(dispensedBillsList); _billService.UpdateBillsInDB(dispensedBillsList); viewModel.Header = "SUCCESS"; viewModel.DispensedBillItems = listBillObjects.Select(r => new HomeResultViewModel.BillItem { Value = r.Value, Quantity = r.Quantity }).ToList(); } viewModel.RemainingBillItems = _dbContext.Bills.Select(r => new HomeResultViewModel.BillItem { Value = r.Value, Quantity = r.Quantity }).ToList(); return(View(viewModel)); }