Refactor event occurrence parsing to unify section header handling and event count tracking

This commit updates the EventOccurrenceParseResult and EventOccurrenceParserResult classes to consolidate the handling of skipped section headers and event counts into a single set of properties. The previous separate lists and counts for middle school and high school sections have been replaced with a unified approach, improving clarity and maintainability. Additionally, the EventOccurrenceParserService has been modified to reflect these changes, ensuring consistent behavior across the application. This refactor enhances the overall structure of the event parsing logic.
This commit is contained in:
2026-01-10 18:19:16 -05:00
parent b7e812bb63
commit ecd6173a44
11 changed files with 528 additions and 472 deletions
@@ -1,11 +1,8 @@
@page "/calendar/event-occurrences/import"
@attribute [Authorize]
@using Core.Entities
@using Core.Models
@using Core.Services
@using Microsoft.EntityFrameworkCore
@using WebApp.Components.Shared.Components
@using MudBlazor
@inject IEventOccurrenceParserService ParserService
@inject AppDbContext Context
@inject NavigationManager NavigationManager
@@ -125,47 +122,29 @@
{
<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)
@if (_parseResult.SkippedEventCount > 0)
{
<text> (Skipped @(_parseResult.SkippedMSEventCount + _parseResult.SkippedHSEventCount) event occurrence(s) from other school level)</text>
<text> (Skipped @_parseResult.SkippedEventCount event occurrence(s) from other school level)</text>
}
</MudAlert>
}
@* Skipped Section Headers *@
@if ((_parseResult.SkippedMSSectionHeaders.Any() || _parseResult.SkippedHSSectionHeaders.Any()) && _parseResult.IsSuccess)
@if (_parseResult.SkippedSectionHeaders.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>
}
<MudExpansionPanel Text="@($"Skipped Section Headers ({_parseResult.SkippedSectionHeaders.Count})")"
Icon="@Icons.Material.Filled.Info"
iconcolor="Color.Info">
<MudList T="string">
@foreach (var header in _parseResult.SkippedSectionHeaders)
{
<MudListItem T="string">
<MudText>@header</MudText>
</MudListItem>
}
</MudList>
</MudExpansionPanel>
</MudExpansionPanels>
}