using Microsoft.AspNetCore.Mvc; namespace PlanTempus.Application.Features.Dashboard.Components; public class NotificationItemViewComponent : ViewComponent { public IViewComponentResult Invoke(string key) { var model = NotificationItemCatalog.Get(key); return View(model); } } public class NotificationItemViewModel { public required string Key { get; init; } public required string Icon { get; init; } public required string Title { get; init; } public required string Text { get; init; } public required string Time { get; init; } public bool IsUnread { get; init; } } public static class NotificationItemCatalog { private static readonly Dictionary Notifications = new() { ["notif-1"] = new NotificationItemViewModel { Key = "notif-1", Icon = "calendar-plus", Title = "Ny booking", Text = "fra Emma Christensen til Balayage", Time = "For 15 min. siden", IsUnread = true }, ["notif-2"] = new NotificationItemViewModel { Key = "notif-2", Icon = "star", Title = "Ny anmeldelse", Text = "5 stjerner fra Sofie Nielsen", Time = "For 1 time siden", IsUnread = true }, ["notif-3"] = new NotificationItemViewModel { Key = "notif-3", Icon = "x", Title = "Aflysning", Text = "Mette Hansen aflyste kl. 15:00", Time = "For 2 timer siden", IsUnread = false }, ["notif-4"] = new NotificationItemViewModel { Key = "notif-4", Icon = "check", Title = "Bekræftet", Text = "Louise Andersen bekræftede kl. 13:00", Time = "I går kl. 18:30", IsUnread = false } }; public static NotificationItemViewModel Get(string key) { if (Notifications.TryGetValue(key, out var notification)) return notification; throw new KeyNotFoundException($"NotificationItem with key '{key}' not found"); } public static IEnumerable AllKeys => Notifications.Keys; }