using Microsoft.AspNetCore.Mvc;

namespace PlanTempus.Application.Features.Dashboard.Components;

public class QuickStatListViewComponent : ViewComponent
{
    public IViewComponentResult Invoke(string key)
    {
        var model = QuickStatListCatalog.Get(key);
        return View(model);
    }
}

public class QuickStatListViewModel
{
    public required string Key { get; init; }
    public required string Title { get; init; }
    public required string Icon { get; init; }
    public required IReadOnlyList<string> StatKeys { get; init; }
}

public static class QuickStatListCatalog
{
    private static readonly Dictionary<string, QuickStatListViewModel> Lists = new()
    {
        ["this-week"] = new QuickStatListViewModel
        {
            Key = "this-week",
            Title = "Denne uge",
            Icon = "chart-line-up",
            StatKeys = ["bookings-week", "revenue-week", "new-customers", "avg-occupancy"]
        }
    };

    public static QuickStatListViewModel Get(string key)
    {
        if (Lists.TryGetValue(key, out var list))
            return list;

        throw new KeyNotFoundException($"QuickStatList with key '{key}' not found");
    }
}
