public async Task <IActionResult> AgeGroup(int year) { var race = await this.context.Races .Include(x => x.AgeGroups) .Include(x => x.RaceRunners) .ThenInclude(x => x.Runner) .Include(x => x.RaceRunners) .ThenInclude(x => x.AgeGroup) .Include(x => x.Results) .ThenInclude(x => x.Runner) .FirstAsync(x => x.Date.Year == year); var ageGroups = new List <AgeGroupResultsViewModel>(); foreach (var ageGroup in race.AgeGroups) { var raceRunnerIds = race.RaceRunners.Where(x => x.AgeGroup.Id == ageGroup.Id).Select(x => x.Runner.Id); var ageGroupResults = race.Results.Where(x => raceRunnerIds.Contains(x.Runner.Id)); var results = new List <ResultViewModel>(); foreach (var ageGroupResult in ageGroupResults) { var res = new ResultViewModel { Place = ageGroupResult.AgeGroupPlace, Name = $"{ageGroupResult.Runner.FirstName} {ageGroupResult.Runner.LastName}", Gender = ageGroupResult.Runner.Gender, AgeGroupName = ageGroup.Name, Time = ageGroupResult.Time, RaceName = race.Name }; results.Add(res); } var result = new AgeGroupResultsViewModel { Name = ageGroup.Name, Gender = ageGroup.Gender, Results = results.OrderBy(x => x.Place).ToList() }; ageGroups.Add(result); } var viewModel = new AgeGroupViewModel { Race = race, AgeGroups = ageGroups.OrderBy(x => x.Gender).ThenBy(x => x.Name).ToList() }; return(View(viewModel)); }
public ActionResult Create([Bind(Include = "Id,StartAge,EndAge,AgeCount,CovidCountId")] AgeGroupViewModel ageGroupCountVM) { if (ModelState.IsValid) { var ageGroupCount = new AgeGroupCount(); var agedate = DateTime.Parse(ageGroupCountVM.CovidCountId.ToString()); ageGroupCount.CovidCountId = db.CovidCount.Single(c => c.Day == agedate).Id; ageGroupCount.AgeCount = ageGroupCountVM.AgeCount; ageGroupCount.StartAge = ageGroupCountVM.StartAge; ageGroupCount.EndAge = ageGroupCountVM.EndAge; ageGroupCount.AgeCount = ageGroupCountVM.AgeCount; db.AgeGroupCount.Add(ageGroupCount); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.CovidCountId = new SelectList(db.CovidCount, "Id", "Id", ageGroupCountVM.CovidCountId); return(View(ageGroupCountVM)); }