Exemplo n.º 1
0
        public TestResultsView()
        {
            InitializeComponent();

            _viewModel  = DIContainer.Resolve <TestResultsViewModel>();
            DataContext = _viewModel;
        }
        public ActionResult Index(int?pageIndex)
        {
            var userId = this.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier);

            if (userId == null)
            {
                return(this.View());
            }

            int pageSize = 50;

            var paginatedResults  = new Dictionary <int, PaginatedCollection <TestResultEntryViewModel> >();
            var testResultListDto = this._resultsService.GetAllTestResults();

            for (var i = 1; i <= testResultListDto.Count; i++)
            {
                if (testResultListDto.TryGetValue(i, out var results))
                {
                    var totalTestResults = new List <TestResultEntryViewModel>();

                    foreach (var result in results)
                    {
                        totalTestResults.Add(new TestResultEntryViewModel
                        {
                            Week1Points    = result.Week1Points,
                            Week1Place     = result.Week1Place,
                            Week2Points    = result.Week2Points,
                            Week2Place     = result.Week2Place,
                            Week3Points    = result.Week3Points,
                            Week3Place     = result.Week3Place,
                            FinalPoints    = result.FinalPoints,
                            FinalPlace     = result.FinalPlace,
                            UserId         = result.UserId,
                            CorrectAnswers = result.CorrectAnswersCount,
                            WrongAnswers   = result.WrongAnswersCount,
                            UserName       = result.UserName,
                        });
                    }

                    paginatedResults.Add(i, new PaginatedCollection <TestResultEntryViewModel>(totalTestResults, pageIndex ?? 1, pageSize));
                }
            }

            var userPosition = this._resultsService.GetUserPosition(userId);
            var vm           = new TestResultsViewModel()
            {
                UserWeek1Position = userPosition.Week1Place ?? 0,
                UserWeek2Position = userPosition.Week2Place ?? 0,
                UserWeek3Position = userPosition.Week3Place ?? 0,
                UserFinalPosition = userPosition.FinalPlace ?? 0,
                TotalTestResults  = paginatedResults
            };

            return(this.View(vm));
        }
Exemplo n.º 3
0
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            var runningTestsViewModel = e.Parameter as RunningTestsViewModel;

            if (runningTestsViewModel == null)
            {
                throw new InvalidOperationException("Running tests view model not provided");
            }

            // Force a Garbage Collection to make sure that the WeakReferences as invalidated.
            GC.Collect(GC.MaxGeneration, GCCollectionMode.Default, blocking: true);
            await System.Threading.Tasks.Task.Delay(1000);

            var model = new TestResultsViewModel(runningTestsViewModel.Results);

            DataContext = model;

            ListViewCategories.ItemsSource = new TestResultsCategoryViewModel[]
            {
                model.Passed,
                model.PassedButSourceWasChanged,
                model.Failed,
                model.Leaked,
                model.New,
            };

            if (model.Failed.Results.Count > 0)
            {
                ListViewCategories.SelectedItem = model.Failed;
            }

            else if (model.PassedButSourceWasChanged.Results.Count > 0)
            {
                ListViewCategories.SelectedItem = model.PassedButSourceWasChanged;
            }

            else if (model.Leaked.Results.Count > 0)
            {
                ListViewCategories.SelectedItem = model.Leaked;
            }

            else if (model.New.Results.Count > 0)
            {
                ListViewCategories.SelectedItem = model.New;
            }

            else
            {
                ListViewCategories.SelectedItem = model.Passed;
            }

            base.OnNavigatedTo(e);
        }
Exemplo n.º 4
0
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            var runningTestsViewModel = e.Parameter as RunningTestsViewModel;

            if (runningTestsViewModel == null)
            {
                throw new InvalidOperationException("Running tests view model not provided");
            }

            var model = new TestResultsViewModel(runningTestsViewModel.Results);

            DataContext = model;

            ListViewCategories.ItemsSource = new TestResultsCategoryViewModel[]
            {
                model.Passed,
                model.Failed,
                model.FailedButSourceWasChanged,
                model.PassedButSourceWasChanged,
                model.New
            };

            if (model.Failed.Results.Count > 0)
            {
                ListViewCategories.SelectedItem = model.Failed;
            }

            else if (model.FailedButSourceWasChanged.Results.Count > 0)
            {
                ListViewCategories.SelectedItem = model.FailedButSourceWasChanged;
            }

            else if (model.PassedButSourceWasChanged.Results.Count > 0)
            {
                ListViewCategories.SelectedItem = model.PassedButSourceWasChanged;
            }

            else if (model.New.Results.Count > 0)
            {
                ListViewCategories.SelectedItem = model.New;
            }

            else
            {
                ListViewCategories.SelectedItem = model.Passed;
            }

            base.OnNavigatedTo(e);
        }
Exemplo n.º 5
0
        void TestResultsView_Loaded(object sender, RoutedEventArgs e)
        {
            this.viewModel = this.DataContext as TestResultsViewModel;
            if (this.viewModel != null)
            {
                this.viewModel.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(trvm_PropertyChanged);
                SetUpGrid();
            }

            // Set Initial RadiologyTest Selection
            if (this.viewModel.RadiologyTests.Count > 0)
            {
                this.viewModel.SelectedRadiologyTest = this.viewModel.RadiologyTests[0];
            }
        }
Exemplo n.º 6
0
        public ActionResult Index()
        {
            var userId = this.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier);

            if (userId == null)
            {
                return(this.View());
            }

            var userPosition = this._resultsService.GetUserPosition(userId);
            var vm           = new TestResultsViewModel()
            {
                UserWeek1Position = userPosition.Week1Place ?? 0,
                UserWeek2Position = userPosition.Week2Place ?? 0,
                UserWeek3Position = userPosition.Week3Place ?? 0,
                UserFinalPosition = userPosition.FinalPlace ?? 0
            };

            return(this.View(vm));
        }
Exemplo n.º 7
0
        public async Task <IActionResult> Results([FromQuery] string token)
        {
            var generatedQuiz = await _dbContext.UserQuizzes
                                .Where(e => e.Tag == token)
                                .Include(e => e.SourceQuiz)
                                .ThenInclude(e => e.QuizBlocks)
                                .ThenInclude(e => e.Question)
                                .Include(e => e.SourceQuiz)
                                .ThenInclude(e => e.QuizBlocks)
                                .ThenInclude(e => e.Answers)
                                .Include(e => e.UserAnswers)
                                .FirstOrDefaultAsync().ConfigureAwait(false);

            if (generatedQuiz == null)
            {
                return(StatusCode(404, $"Тест с заданным идентификатором ({token}) не найден."));
            }

            var generatedQuizIsEnded = DateTime.Now > generatedQuiz.StartTime.Add(TimeSpan.FromSeconds(generatedQuiz.SourceQuiz.TotalTimeSecs)) ||
                                       generatedQuiz.IsEnded;

            if (!generatedQuizIsEnded)
            {
                return(RedirectToAction("QuizProcess", new { token }));
            }

            if (!generatedQuiz.IsEnded)
            {
                generatedQuiz.IsEnded = true;
                generatedQuiz.EndTime = generatedQuiz.StartTime.AddSeconds(generatedQuiz.SourceQuiz.TotalTimeSecs);
                _dbContext.UserQuizzes.Update(generatedQuiz);
                await _dbContext.SaveChangesAsync().ConfigureAwait(false);
            }

            var model = new TestResultsViewModel();

            model.TestTitle           = generatedQuiz.SourceQuiz.Title;
            model.StartTime           = generatedQuiz.StartTime;
            model.CorrectAnswersCount = 0;

            if (generatedQuiz.SourceQuiz.MaxQuizBlocksCount > 0 && generatedQuiz.SourceQuiz.MaxQuizBlocksCount <= generatedQuiz.SourceQuiz.QuizBlocks.Count)
            {
                if (generatedQuiz.SourceQuiz.ShowResultsToUser)
                {
                    model.QuizBlocks = TranslateSessionResultModel(generatedQuiz).ToList();
                    var tempQuiz = Translation.Translate(generatedQuiz);
                    tempQuiz = CommonHelpers.ShuffleQuizData(tempQuiz);
                    var quizBlockIds = tempQuiz.SourceQuiz.QuizBlocks.Take(tempQuiz.SourceQuiz.MaxQuizBlocks).Select(e => e.Id).ToList();
                    model.QuizBlocks = model.QuizBlocks.Where(e => quizBlockIds.Contains(e.BlockId)).ToList();
                }

                model.QuestionCount = generatedQuiz.SourceQuiz.MaxQuizBlocksCount;
            }
            else
            {
                model.QuestionCount = generatedQuiz.SourceQuiz.QuizBlocks.Count;
            }

            foreach (var quizBlock in generatedQuiz.SourceQuiz.QuizBlocks)
            {
                var quizUserAnswer = generatedQuiz.UserAnswers.FirstOrDefault(e => e.QuizBlockId == quizBlock.Id);
                if (quizUserAnswer == null)
                {
                    continue;
                }

                if (CommonHelpers.CheckQuizAnswer(quizBlock, quizUserAnswer))
                {
                    model.CorrectAnswersCount++;
                }
            }

            return(View(model));
        }