2026-01-12 22:10:57 +01:00
using Microsoft.AspNetCore.Mvc ;
using PlanTempus.Application.Features.Localization.Services ;
namespace PlanTempus.Application.Features.Employees.Components ;
public class EmployeeDetailStatsViewComponent : ViewComponent
{
private readonly ILocalizationService _localization ;
public EmployeeDetailStatsViewComponent ( ILocalizationService localization )
{
_localization = localization ;
}
public IViewComponentResult Invoke ( string key )
{
var employee = EmployeeDetailCatalog . Get ( key ) ;
var model = new EmployeeDetailStatsViewModel
{
BookingsThisYear = employee . BookingsThisYear ,
RevenueThisYear = employee . RevenueThisYear ,
Rating = employee . Rating ,
LabelPerformance = _localization . Get ( "employees.detail.stats.performance" ) ,
LabelBookingsThisYear = _localization . Get ( "employees.detail.stats.bookingsyear" ) ,
LabelRevenueThisYear = _localization . Get ( "employees.detail.stats.revenueyear" ) ,
LabelAvgRating = _localization . Get ( "employees.detail.stats.avgrating" ) ,
2026-01-13 23:46:38 +01:00
LabelOccupancy = _localization . Get ( "employees.detail.stats.occupancy" ) ,
LabelCompletedBookings = _localization . Get ( "employees.detail.stats.completedbookings" ) ,
LabelDate = _localization . Get ( "employees.detail.stats.date" ) ,
LabelTime = _localization . Get ( "employees.detail.stats.time" ) ,
LabelCustomer = _localization . Get ( "employees.detail.stats.customer" ) ,
LabelServices = _localization . Get ( "employees.detail.stats.services" ) ,
LabelDuration = _localization . Get ( "employees.detail.stats.duration" ) ,
LabelAmount = _localization . Get ( "employees.detail.stats.amount" ) ,
LabelStatus = _localization . Get ( "employees.detail.stats.status" ) ,
CompletedBookings = GetMockBookings ( )
2026-01-12 22:10:57 +01:00
} ;
return View ( model ) ;
}
2026-01-13 23:46:38 +01:00
private List < CompletedBookingItem > GetMockBookings ( )
{
return new List < CompletedBookingItem >
{
new ( ) { Date = "23. dec 2024" , Time = "10:00" , Customer = "Maria Hansen" , Services = "Dameklip, Bundfarve" , Duration = "2t 30m" , Amount = "1.510 kr" , Status = "Betalt" , StatusClass = "paid" } ,
new ( ) { Date = "23. dec 2024" , Time = "14:30" , Customer = "Sofie Nielsen" , Services = "Herreklip" , Duration = "30m" , Amount = "350 kr" , Status = "Betalt" , StatusClass = "paid" } ,
new ( ) { Date = "22. dec 2024" , Time = "09:00" , Customer = "Emma Pedersen" , Services = "Dameklip, Highlights" , Duration = "3t 15m" , Amount = "2.150 kr" , Status = "Afventer" , StatusClass = "pending" } ,
new ( ) { Date = "22. dec 2024" , Time = "13:00" , Customer = "Anne Larsen" , Services = "Dameklip" , Duration = "45m" , Amount = "450 kr" , Status = "Betalt" , StatusClass = "paid" } ,
new ( ) { Date = "21. dec 2024" , Time = "11:00" , Customer = "Katrine Jensen" , Services = "Balayage, Olaplex" , Duration = "4t" , Amount = "3.200 kr" , Status = "Betalt" , StatusClass = "paid" }
} ;
}
2026-01-12 22:10:57 +01:00
}
public class EmployeeDetailStatsViewModel
{
public required string BookingsThisYear { get ; init ; }
public required string RevenueThisYear { get ; init ; }
public required string Rating { get ; init ; }
public required string LabelPerformance { get ; init ; }
public required string LabelBookingsThisYear { get ; init ; }
public required string LabelRevenueThisYear { get ; init ; }
public required string LabelAvgRating { get ; init ; }
public required string LabelOccupancy { get ; init ; }
2026-01-13 23:46:38 +01:00
public required string LabelCompletedBookings { get ; init ; }
public required string LabelDate { get ; init ; }
public required string LabelTime { get ; init ; }
public required string LabelCustomer { get ; init ; }
public required string LabelServices { get ; init ; }
public required string LabelDuration { get ; init ; }
public required string LabelAmount { get ; init ; }
public required string LabelStatus { get ; init ; }
public required List < CompletedBookingItem > CompletedBookings { get ; init ; }
}
public class CompletedBookingItem
{
public required string Date { get ; init ; }
public required string Time { get ; init ; }
public required string Customer { get ; init ; }
public required string Services { get ; init ; }
public required string Duration { get ; init ; }
public required string Amount { get ; init ; }
public required string Status { get ; init ; }
public required string StatusClass { get ; init ; }
2026-01-12 22:10:57 +01:00
}