using Microsoft.AspNetCore.Mvc; using PlanTempus.Application.Features.Localization.Services; namespace PlanTempus.Application.Features.Dashboard.Components; public class AttentionListViewComponent : ViewComponent { private readonly ILocalizationService _localization; public AttentionListViewComponent(ILocalizationService localization) { _localization = localization; } public IViewComponentResult Invoke(string key) { var model = AttentionListCatalog.Get(key, _localization); return View(model); } } public class AttentionListViewModel { public required string Key { get; init; } public required string Title { get; init; } public required IReadOnlyList AttentionKeys { get; init; } } internal class AttentionListData { public required string Key { get; init; } public required string TitleKey { get; init; } public required IReadOnlyList AttentionKeys { get; init; } } public static class AttentionListCatalog { private static readonly Dictionary Lists = new() { ["current-attentions"] = new AttentionListData { Key = "current-attentions", TitleKey = "dashboard.attentions.title", AttentionKeys = ["attention-1", "attention-2", "attention-3"] } }; public static AttentionListViewModel Get(string key, ILocalizationService localization) { if (!Lists.TryGetValue(key, out var list)) throw new KeyNotFoundException($"AttentionList with key '{key}' not found"); return new AttentionListViewModel { Key = list.Key, Title = localization.Get(list.TitleKey), AttentionKeys = list.AttentionKeys }; } }