@using Core.Entities @model Tuple[], IEnumerable[], Web.Controllers.HomeController.ScheduleOptions> @{ ViewData["Title"] = "Schedule"; var slot = 0; var schedule = Model.Item1; var unassignedStudents = Model.Item2; var allStudents = schedule.SelectMany(t => t).SelectMany(t => t.Students).Distinct().ToList(); var allMeetingTeams = schedule.SelectMany(t => t).Distinct(); }
@{ List>> overlaps; } @foreach (var timeslot in schedule) { overlaps = Team.GetStudentTeamOverlaps(timeslot).ToList(); var partialTeams = timeslot.Where(t => t is PartialTeam && t.EventDefinition.EventFormat is not EventFormat.Individual); var fullTeams = timeslot.Where(t => !partialTeams.Contains(t));

Time Slot @(slot + 1)

@Model.Item3.Date.ToShortDateString()

Teams

@foreach (var team in fullTeams.Where(t => t.EventDefinition.EventFormat is EventFormat.Team).OrderBy(t => t.Name)) { @await Html.PartialAsync("ScheduleTeamPartial", Tuple.Create(team, overlaps, Model.Item3.AbsentStudents)) }
if (partialTeams.Any()) { @foreach (var team in partialTeams.OrderBy(t => t.Name)) { @await Html.PartialAsync("ScheduleTeamPartial", Tuple.Create(team, overlaps, Model.Item3.AbsentStudents)) }
}

Individual

Use time for individual eventDefinition or to work on a team eventDefinition

@foreach (var team in fullTeams.Where(t => t.EventDefinition.EventFormat is EventFormat.Individual).OrderBy(t => t.Name)) { @* @await Html.PartialAsync("ScheduleTeamPartial", Tuple.Create(team, overlaps)) *@ } @foreach (var student in unassignedStudents[slot]) { }
@team.Captain?.FirstName (@team.EventDefinition.Name@if(team.EventDefinition.RegionalEvent){ @* (Regional) *@}) @student.FirstName
slot++; }

Missed team eventDefinitions for today

@foreach (var student in allStudents.OrderBy(s => s.FirstName)) { var studentMeetings = student.Teams.Where(t => allMeetingTeams.Any(mt => mt.Name == t.Name && mt.Students.Contains(student))); var studentMissed = student.Teams.Where(t => studentMeetings.All(mt => mt.Name != t.Name)).ToList(); var studentMissedTeams = studentMissed.Where(t => t.EventDefinition.EventFormat is EventFormat.Team); var studentMissedIndividual = studentMissed.Where(t => t.EventDefinition.EventFormat is EventFormat.Individual); if (studentMissedTeams.Any()) { } if (studentMissedIndividual.Any()) { } }
@student.FirstName @string.Join(", ", studentMissedTeams.Select(t => t.ToStringWithIndividualAndRegional()))
@student.FirstName @string.Join(", ", studentMissedIndividual.Select(t => t.ToStringWithIndividualAndRegional()))
@functions { private void GetTeamClass(Team team) { if (team.EventDefinition.RegionalEvent) { @Html.Raw("regional") ; } } }