Example #1
0
        public async Task <IActionResult> Index(int value, [Bind("SelectedCity")] ExamsViewModel viewModel)
        {
            var exams = await _repository.Query <Exam>()
                        .Include(exam => exam.City)
                        .ToListAsync();

            List <ExamViewModel> examViewModels = new List <ExamViewModel>();

            exams.ForEach(x => examViewModels.Add(ExamMappings.ToViewModel(x)));
            examViewModels = examViewModels.OrderByDescending(x => x.Date).ToList();

            List <string> AcceptancePeriod = await CalculateAcceptancePeriods(examViewModels);

            var AcceptancePeriods = new List <SelectListItem>();

            foreach (var ap in AcceptancePeriod)
            {
                AcceptancePeriods.Add(new SelectListItem {
                    Value = AcceptancePeriod.FindIndex(a => a == ap).ToString(), Text = ap
                });
            }
            viewModel.AcceptancePeriod = AcceptancePeriods;
            viewModel.ExamViewModels   = examViewModels.Where(x => x.SetAcceptancePeriod == AcceptancePeriods.ElementAt(value).Text).ToList();
            var SelectedAcceptancePeriod = AcceptancePeriods.ElementAt(value);

            viewModel.SelectedAcceptancePeriod   = SelectedAcceptancePeriod.Text;
            TempData["SelectedAcceptancePeriod"] = SelectedAcceptancePeriod.Value;

            var selectedExams = examViewModels.Where(x => x.SetAcceptancePeriod == SelectedAcceptancePeriod.Text).ToList();

            var results = await _repository.Query <Result>().ToListAsync();

            int studentsCountInAcceptancePeriod = 0;

            foreach (var selectedExam in selectedExams)
            {
                int examId = exams.FirstOrDefault(x => x.Date == selectedExam.Date).Id;
                studentsCountInAcceptancePeriod += results.Count(x => x.ExamId == examId);
            }
            TempData["Count"] = studentsCountInAcceptancePeriod;
            _logger.LogInformation("Found {Count} records. User {User}.", viewModel.ExamViewModels.Count(), _user);
            return(View(viewModel));
        }