76 lines
2.2 KiB
C#
76 lines
2.2 KiB
C#
|
|
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<string, NotificationItemViewModel> 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<string> AllKeys => Notifications.Keys;
|
||
|
|
}
|