cd34be1f82
Registered the new EventOccurrenceParserService in Program.cs to handle event occurrence parsing. Updated the _Imports.razor file to reflect the renaming of the EventCalendar component to Calendar. Removed the obsolete EventCalendar component to streamline the codebase.
68 lines
2.0 KiB
Plaintext
68 lines
2.0 KiB
Plaintext
@page "/event-calendar"
|
|
@attribute [Authorize]
|
|
@using WebApp.Components.Shared.Components
|
|
@using WebApp.Models
|
|
@using WebApp.Services
|
|
@using Heron.MudCalendar
|
|
@inject IEventOccurrenceService EventOccurrenceService
|
|
|
|
<PageHeader Title="Event Calendar" Description="View competition schedules and event occurrences">
|
|
<ActionButtons>
|
|
<MudButton StartIcon="@Icons.Material.Filled.ImportExport" Href="calendar/event-occurrences/import" Variant="Variant.Filled" Color="Color.Primary">Import</MudButton>
|
|
</ActionButtons>
|
|
</PageHeader>
|
|
|
|
<MudPaper Elevation="2" Class="pa-6">
|
|
@if (_calendarItems == null)
|
|
{
|
|
<MudProgressLinear Indeterminate="true" />
|
|
<MudText>Loading calendar events...</MudText>
|
|
}
|
|
else
|
|
{
|
|
<MudCalendar T="CalendarEventItem"
|
|
Items="_calendarItems"
|
|
View="CalendarView.Day"
|
|
CurrentDay=_calendarDate
|
|
/>
|
|
}
|
|
</MudPaper>
|
|
|
|
@code {
|
|
private List<CalendarEventItem>? _calendarItems;
|
|
private DateTime _calendarDate = DateTime.Today;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
await LoadCalendarEvents();
|
|
}
|
|
|
|
private async Task LoadCalendarEvents()
|
|
{
|
|
var occurrences = await EventOccurrenceService.GetEventOccurrencesAsync();
|
|
_calendarItems = occurrences
|
|
.Select(occ => new CalendarEventItem(occ))
|
|
.ToList();
|
|
|
|
// Find the next date with events
|
|
_calendarDate = GetNextDateWithEvents();
|
|
}
|
|
|
|
private DateTime GetNextDateWithEvents()
|
|
{
|
|
if (_calendarItems == null || !_calendarItems.Any())
|
|
{
|
|
return DateTime.Today;
|
|
}
|
|
|
|
var today = DateTime.Today;
|
|
var nextEvent = _calendarItems
|
|
.Where(item => item.Start.Date >= today)
|
|
.OrderBy(item => item.Start)
|
|
.FirstOrDefault();
|
|
|
|
return nextEvent?.Start.Date ?? _calendarItems.OrderBy(item => item.Start).First().Start.Date;
|
|
}
|
|
}
|
|
|