Introduces reusable view components for bookings and notifications Implements dynamic rendering of booking items and lists Adds corresponding CSS styles for new dashboard components Enhances dashboard user interface with interactive elements
42 lines
1.2 KiB
C#
42 lines
1.2 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace PlanTempus.Application.Features.Dashboard.Components;
|
|
|
|
public class BookingListViewComponent : ViewComponent
|
|
{
|
|
public IViewComponentResult Invoke(string key)
|
|
{
|
|
var model = BookingListCatalog.Get(key);
|
|
return View(model);
|
|
}
|
|
}
|
|
|
|
public class BookingListViewModel
|
|
{
|
|
public required string Key { get; init; }
|
|
public required string Title { get; init; }
|
|
public required string CurrentTime { get; init; }
|
|
public required IReadOnlyList<string> BookingKeys { get; init; }
|
|
}
|
|
|
|
public static class BookingListCatalog
|
|
{
|
|
private static readonly Dictionary<string, BookingListViewModel> Lists = new()
|
|
{
|
|
["todays-bookings"] = new BookingListViewModel
|
|
{
|
|
Key = "todays-bookings",
|
|
Title = "Dagens bookinger",
|
|
CurrentTime = "10:45",
|
|
BookingKeys = ["booking-1", "booking-2", "booking-3", "booking-4", "booking-5", "booking-6"]
|
|
}
|
|
};
|
|
|
|
public static BookingListViewModel Get(string key)
|
|
{
|
|
if (Lists.TryGetValue(key, out var list))
|
|
return list;
|
|
|
|
throw new KeyNotFoundException($"BookingList with key '{key}' not found");
|
|
}
|
|
}
|