Refactor StateScheduleHandout component to improve event occurrence filtering and display
This commit is contained in:
@@ -106,12 +106,15 @@ else
|
||||
|
||||
<MudContainer Class="pagebreak">
|
||||
<MudText Typo="Typo.h5" Class="mb-2">Combined schedule</MudText>
|
||||
<MudText Typo="Typo.body2" Class="mud-text-secondary mb-3">All imported occurrences for this chapter database.</MudText>
|
||||
@if (_allOccurrences.Count == 0)
|
||||
{
|
||||
<MudText Class="mud-text-secondary">No event occurrences in the database. Import a schedule from the calendar first.</MudText>
|
||||
<MudText Typo="Typo.body2" Class="mud-text-secondary mb-3">Imported occurrences relevant to this chapter.</MudText>
|
||||
@{
|
||||
var combinedOccurrences = GetCombinedScheduleOccurrences().ToList();
|
||||
}
|
||||
@foreach (var dateGroup in _allOccurrences.GroupBy(o => o.StartTime.Date))
|
||||
@if (combinedOccurrences.Count == 0)
|
||||
{
|
||||
<MudText Class="mud-text-secondary">No relevant event occurrences found for your current team registrations.</MudText>
|
||||
}
|
||||
@foreach (var dateGroup in combinedOccurrences.GroupBy(o => o.StartTime.Date))
|
||||
{
|
||||
<MudText Typo="Typo.subtitle2" Class="mt-2 mb-1">@FormatDateHeading(dateGroup.Key)</MudText>
|
||||
<MudSimpleTable Dense="true" Class="state-schedule-table mb-3">
|
||||
@@ -242,6 +245,21 @@ else
|
||||
.DistinctBy(o => (o.StartTime, o.Name ?? ""));
|
||||
}
|
||||
|
||||
private IEnumerable<EventOccurrence> GetCombinedScheduleOccurrences()
|
||||
{
|
||||
return _allOccurrences!
|
||||
.Where(o =>
|
||||
{
|
||||
// Keep chapter-wide/special schedule rows.
|
||||
if (!o.EventDefinitionId.HasValue)
|
||||
return true;
|
||||
|
||||
// Keep only competition events where this chapter has registered teams.
|
||||
return _teamsByEventDefinitionId.TryGetValue(o.EventDefinitionId.Value, out var teams) && teams.Count > 0;
|
||||
})
|
||||
.OrderBy(o => o.StartTime);
|
||||
}
|
||||
|
||||
private IEnumerable<EventSummaryRow> GetEventSummaryRows(Student student)
|
||||
{
|
||||
foreach (var team in student.Teams.OrderBy(t => t.Event.Name))
|
||||
|
||||
Reference in New Issue
Block a user