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()
{
}
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;
}
}