66 lines
2 KiB
C#
66 lines
2 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
||
|
||
namespace PlanTempus.Application.Features.Dashboard.Components;
|
||
|
||
public class AttentionItemViewComponent : ViewComponent
|
||
{
|
||
public IViewComponentResult Invoke(string key)
|
||
{
|
||
var model = AttentionItemCatalog.Get(key);
|
||
return View(model);
|
||
}
|
||
}
|
||
|
||
public class AttentionItemViewModel
|
||
{
|
||
public required string Key { get; init; }
|
||
public required string Icon { get; init; }
|
||
public required string Title { get; init; }
|
||
public required string Description { get; init; }
|
||
public required string ActionText { get; init; }
|
||
public required string Severity { get; init; }
|
||
}
|
||
|
||
public static class AttentionItemCatalog
|
||
{
|
||
private static readonly Dictionary<string, AttentionItemViewModel> Attentions = new()
|
||
{
|
||
["attention-1"] = new AttentionItemViewModel
|
||
{
|
||
Key = "attention-1",
|
||
Icon = "x-circle",
|
||
Title = "Aflyst booking",
|
||
Description = "Mette Hansen aflyste kl. 15:00 – tid nu ledig",
|
||
ActionText = "Fyld tid",
|
||
Severity = "urgent"
|
||
},
|
||
["attention-2"] = new AttentionItemViewModel
|
||
{
|
||
Key = "attention-2",
|
||
Icon = "clock",
|
||
Title = "Ubekræftet booking",
|
||
Description = "Ida Rasmussen har ikke bekræftet kl. 11:30",
|
||
ActionText = "Send påmindelse",
|
||
Severity = "warning"
|
||
},
|
||
["attention-3"] = new AttentionItemViewModel
|
||
{
|
||
Key = "attention-3",
|
||
Icon = "gift",
|
||
Title = "Gavekort udløber snart",
|
||
Description = "GC-D2R4-6TY9 udløber om 3 uger (200 DKK)",
|
||
ActionText = "Se gavekort",
|
||
Severity = "info"
|
||
}
|
||
};
|
||
|
||
public static AttentionItemViewModel Get(string key)
|
||
{
|
||
if (Attentions.TryGetValue(key, out var attention))
|
||
return attention;
|
||
|
||
throw new KeyNotFoundException($"AttentionItem with key '{key}' not found");
|
||
}
|
||
|
||
public static IEnumerable<string> AllKeys => Attentions.Keys;
|
||
}
|