Enhance event occurrence parsing with school level filtering

This commit introduces a new SchoolLevel enum and updates the EventOccurrenceParser to filter event occurrences based on the specified school level (Middle School or High School). The EventOccurrenceParseResult and EventOccurrenceParserResult classes have been updated to track skipped section headers and counts for both school levels. Additionally, the EventOccurrenceParserService has been modified to read the school level from configuration, and the UI has been updated to allow users to select the school level for event imports. This enhancement improves the accuracy of event parsing and provides better user feedback on skipped occurrences.
This commit is contained in:
2026-01-09 09:39:00 -05:00
parent ea1a4a04ad
commit 8183c0200d
7 changed files with 270 additions and 27 deletions
@@ -125,9 +125,50 @@
{
<MudAlert Severity="Severity.Success" Dense="true">
Successfully parsed @_parseResult.TotalParsed occurrence(s) from @_parseResult.Occurrences.Count event definition(s)
@if (_parseResult.SkippedMSEventCount > 0 || _parseResult.SkippedHSEventCount > 0)
{
<text> (Skipped @(_parseResult.SkippedMSEventCount + _parseResult.SkippedHSEventCount) event occurrence(s) from other school level)</text>
}
</MudAlert>
}
@* Skipped Section Headers *@
@if ((_parseResult.SkippedMSSectionHeaders.Any() || _parseResult.SkippedHSSectionHeaders.Any()) && _parseResult.IsSuccess)
{
<MudExpansionPanels Elevation="0" Class="mt-2">
@if (_parseResult.SkippedMSSectionHeaders.Any())
{
<MudExpansionPanel Text="@($"Skipped MS Section Headers ({_parseResult.SkippedMSSectionHeaders.Count})")"
Icon="@Icons.Material.Filled.Info"
iconcolor="Color.Info">
<MudList T="string">
@foreach (var header in _parseResult.SkippedMSSectionHeaders)
{
<MudListItem T="string">
<MudText>@header</MudText>
</MudListItem>
}
</MudList>
</MudExpansionPanel>
}
@if (_parseResult.SkippedHSSectionHeaders.Any())
{
<MudExpansionPanel Text="@($"Skipped HS Section Headers ({_parseResult.SkippedHSSectionHeaders.Count})")"
Icon="@Icons.Material.Filled.Info"
iconcolor="Color.Info">
<MudList T="string">
@foreach (var header in _parseResult.SkippedHSSectionHeaders)
{
<MudListItem T="string">
<MudText>@header</MudText>
</MudListItem>
}
</MudList>
</MudExpansionPanel>
}
</MudExpansionPanels>
}
@* Locations Summary *@
@if (_parseResult.IsSuccess && _parseResult.Occurrences.Any())
{