using Heron.MudCalendar; using MudBlazor; namespace WebApp.Models; /// /// Calendar event item model for Heron.MudCalendar component. /// Maps from EventOccurrence entity to calendar event format. /// public class CalendarEventItem : CalendarItem { /// /// Gets the original EventOccurrence data. /// public Core.Entities.EventOccurrence? EventOccurrenceData { get; set; } /// /// Gets the associated EventDefinition if available. /// public Core.Entities.EventDefinition? EventDefinition { get; set; } /// /// Parameterless constructor required by Heron.MudCalendar component. /// public CalendarEventItem() { // Initialize base class properties to avoid null reference issues Text = string.Empty; Start = DateTime.MinValue; End = DateTime.MinValue; } public CalendarEventItem(Core.Entities.EventOccurrence occurrence, Core.Entities.EventDefinition? eventDefinition = null) { // Set base class properties that the calendar component uses Text = GetEventTitle(occurrence, eventDefinition); Start = occurrence.StartTime; End = occurrence.EndTime ?? occurrence.StartTime.AddHours(1); this.EventOccurrenceData = occurrence; this.EventDefinition = eventDefinition; } private static string GetEventTitle(Core.Entities.EventOccurrence occurrence, Core.Entities.EventDefinition? eventDefinition) { var title = occurrence.Name; if (eventDefinition != null && !string.IsNullOrEmpty(eventDefinition.Name)) { title = $"{eventDefinition.Name} - {title}"; } if (!string.IsNullOrEmpty(occurrence.Location)) { title += $" ({occurrence.Location})"; } return title; } }