PlanTempusApp/PlanTempus.Application/Features/Services/Components/ServiceDetailHeader/ServiceDetailHeaderViewComponent.cs

62 lines
2.4 KiB
C#
Raw Normal View History

using Microsoft.AspNetCore.Mvc;
using PlanTempus.Application.Features.Localization.Services;
namespace PlanTempus.Application.Features.Services.Components;
public class ServiceDetailHeaderViewComponent : ViewComponent
{
private readonly ILocalizationService _localization;
public ServiceDetailHeaderViewComponent(ILocalizationService localization)
{
_localization = localization;
}
public IViewComponentResult Invoke(string key)
{
var service = ServiceDetailCatalog.Get(key);
var model = new ServiceDetailHeaderViewModel
{
Name = service.Name,
IsActive = service.IsActive,
StatusText = service.IsActive
? _localization.Get("services.detail.header.active")
: _localization.Get("services.detail.header.inactive"),
DurationRange = service.DurationRange,
FromPrice = service.FromPrice,
EmployeeCount = service.EmployeeCount,
BookingsThisYear = service.BookingsThisYear,
LabelDuration = _localization.Get("services.detail.header.duration"),
LabelFromPrice = _localization.Get("services.detail.header.fromPrice"),
LabelEmployees = _localization.Get("services.detail.header.employees"),
LabelBookingsThisYear = _localization.Get("services.detail.header.bookingsThisYear"),
Tags = service.Tags.Select(t => new ServiceTagViewModel { Text = t.Text, CssClass = t.CssClass }).ToList()
};
return View(model);
}
}
public class ServiceDetailHeaderViewModel
{
public required string Name { get; init; }
public required bool IsActive { get; init; }
public required string StatusText { get; init; }
public required string DurationRange { get; init; }
public required string FromPrice { get; init; }
public required string EmployeeCount { get; init; }
public required string BookingsThisYear { get; init; }
public required string LabelDuration { get; init; }
public required string LabelFromPrice { get; init; }
public required string LabelEmployees { get; init; }
public required string LabelBookingsThisYear { get; init; }
public List<ServiceTagViewModel> Tags { get; init; } = new();
}
public class ServiceTagViewModel
{
public required string Text { get; init; }
public required string CssClass { get; init; }
}