public async Task <IActionResult> Create([Bind("CityId,Date,Comment,Id,Created,SelectedCity")] ExamViewModel examViewModel)
        {
            if (ModelState.IsValid)
            {
                var latestDate = _repository.Query <Exam>()
                                 .OrderBy(x => x.Created)
                                 .LastOrDefault();
                var exam = ExamMappings.ToEntity(examViewModel);
                var city = await _repository.Query <City>().FirstOrDefaultAsync(x => x.Name == examViewModel.SelectedCity);

                exam.CityId = city.Id;
                var previousUrl = TempData["ReturnPath"].ToString();
                if (latestDate != null)
                {
                    exam.Tasks = latestDate.Tasks;
                    await _repository.InsertAsync(exam);

                    _logger.LogInformation("New exam added to DB. User {User}.", _user);
                    return(Redirect(previousUrl));
                }
                else
                {
                    _logger.LogWarning("Exam was null. Nothing added to DB. User {User}.", _user);
                }
                await _repository.InsertAsync(exam);

                return(Redirect(previousUrl));
            }
            return(RedirectToAction(nameof(Index)));
        }
Beispiel #2
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));
        }