Adds dashboard booking and notification components
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
This commit is contained in:
parent
9b2ace7bc0
commit
abcf8ee75e
15 changed files with 648 additions and 14 deletions
|
|
@ -0,0 +1,120 @@
|
|||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace PlanTempus.Application.Features.Dashboard.Components;
|
||||
|
||||
public class BookingItemViewComponent : ViewComponent
|
||||
{
|
||||
public IViewComponentResult Invoke(string key)
|
||||
{
|
||||
var model = BookingItemCatalog.Get(key);
|
||||
return View(model);
|
||||
}
|
||||
}
|
||||
|
||||
public class BookingItemViewModel
|
||||
{
|
||||
public required string Key { get; init; }
|
||||
public required string TimeStart { get; init; }
|
||||
public required string TimeEnd { get; init; }
|
||||
public required string Service { get; init; }
|
||||
public required string CustomerName { get; init; }
|
||||
public required string EmployeeInitials { get; init; }
|
||||
public required string EmployeeName { get; init; }
|
||||
public required string Status { get; init; }
|
||||
public string? IndicatorColor { get; init; }
|
||||
|
||||
public string StatusText => Status switch
|
||||
{
|
||||
"completed" => "Gennemført",
|
||||
"inprogress" => "I gang",
|
||||
"confirmed" => "Bekræftet",
|
||||
"pending" => "Afventer",
|
||||
_ => Status
|
||||
};
|
||||
}
|
||||
|
||||
public static class BookingItemCatalog
|
||||
{
|
||||
private static readonly Dictionary<string, BookingItemViewModel> Bookings = new()
|
||||
{
|
||||
["booking-1"] = new BookingItemViewModel
|
||||
{
|
||||
Key = "booking-1",
|
||||
TimeStart = "08:00",
|
||||
TimeEnd = "08:30",
|
||||
Service = "Herreklip",
|
||||
CustomerName = "Thomas Berg",
|
||||
EmployeeInitials = "MH",
|
||||
EmployeeName = "Maria Hansen",
|
||||
Status = "completed"
|
||||
},
|
||||
["booking-2"] = new BookingItemViewModel
|
||||
{
|
||||
Key = "booking-2",
|
||||
TimeStart = "08:30",
|
||||
TimeEnd = "09:00",
|
||||
Service = "Dameklip",
|
||||
CustomerName = "Katrine Holm",
|
||||
EmployeeInitials = "AS",
|
||||
EmployeeName = "Anna Sørensen",
|
||||
Status = "completed"
|
||||
},
|
||||
["booking-3"] = new BookingItemViewModel
|
||||
{
|
||||
Key = "booking-3",
|
||||
TimeStart = "09:00",
|
||||
TimeEnd = "09:30",
|
||||
Service = "Skægtrimning",
|
||||
CustomerName = "Mikkel Skov",
|
||||
EmployeeInitials = "PK",
|
||||
EmployeeName = "Peter Kristensen",
|
||||
Status = "completed"
|
||||
},
|
||||
["booking-4"] = new BookingItemViewModel
|
||||
{
|
||||
Key = "booking-4",
|
||||
TimeStart = "10:30",
|
||||
TimeEnd = "11:00",
|
||||
Service = "Herreklip",
|
||||
CustomerName = "Jonas Petersen",
|
||||
EmployeeInitials = "MH",
|
||||
EmployeeName = "Maria Hansen",
|
||||
Status = "inprogress",
|
||||
IndicatorColor = "blue"
|
||||
},
|
||||
["booking-5"] = new BookingItemViewModel
|
||||
{
|
||||
Key = "booking-5",
|
||||
TimeStart = "10:00",
|
||||
TimeEnd = "11:00",
|
||||
Service = "Føn + Styling",
|
||||
CustomerName = "Rikke Dam",
|
||||
EmployeeInitials = "LJ",
|
||||
EmployeeName = "Louise Jensen",
|
||||
Status = "inprogress",
|
||||
IndicatorColor = "purple"
|
||||
},
|
||||
["booking-6"] = new BookingItemViewModel
|
||||
{
|
||||
Key = "booking-6",
|
||||
TimeStart = "11:00",
|
||||
TimeEnd = "12:00",
|
||||
Service = "Balayage",
|
||||
CustomerName = "Emma Christensen",
|
||||
EmployeeInitials = "AS",
|
||||
EmployeeName = "Anna Sørensen",
|
||||
Status = "confirmed",
|
||||
IndicatorColor = "teal"
|
||||
}
|
||||
};
|
||||
|
||||
public static BookingItemViewModel Get(string key)
|
||||
{
|
||||
if (Bookings.TryGetValue(key, out var booking))
|
||||
return booking;
|
||||
|
||||
throw new KeyNotFoundException($"BookingItem with key '{key}' not found");
|
||||
}
|
||||
|
||||
public static IEnumerable<string> AllKeys => Bookings.Keys;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue