9668ec162d
Introduced a new Event Calendar component that displays scheduled events using the Heron.MudCalendar. Implemented IEventOccurrenceService to fetch event occurrences, and added mock data for initial testing. Updated navigation menu to include a link to the Event Calendar.
64 lines
1.7 KiB
Plaintext
64 lines
1.7 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" />
|
|
|
|
<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;
|
|
}
|
|
}
|
|
|