69 lines
2.6 KiB
C#
69 lines
2.6 KiB
C#
|
|
using Microsoft.AspNetCore.Mvc;
|
||
|
|
using PlanTempus.Application.Features.Localization.Services;
|
||
|
|
|
||
|
|
namespace PlanTempus.Application.Features.Employees.Components;
|
||
|
|
|
||
|
|
public class EmployeeDetailHeaderViewComponent : ViewComponent
|
||
|
|
{
|
||
|
|
private readonly ILocalizationService _localization;
|
||
|
|
|
||
|
|
public EmployeeDetailHeaderViewComponent(ILocalizationService localization)
|
||
|
|
{
|
||
|
|
_localization = localization;
|
||
|
|
}
|
||
|
|
|
||
|
|
public IViewComponentResult Invoke(string key)
|
||
|
|
{
|
||
|
|
var employee = EmployeeDetailCatalog.Get(key);
|
||
|
|
|
||
|
|
var model = new EmployeeDetailHeaderViewModel
|
||
|
|
{
|
||
|
|
Initials = employee.Initials,
|
||
|
|
Name = employee.Name,
|
||
|
|
AvatarColor = employee.AvatarColor,
|
||
|
|
Role = employee.Role,
|
||
|
|
RoleText = _localization.Get(employee.RoleKey),
|
||
|
|
Status = employee.Status,
|
||
|
|
StatusText = _localization.Get(employee.StatusKey),
|
||
|
|
BookingsThisYear = employee.BookingsThisYear,
|
||
|
|
RevenueThisYear = employee.RevenueThisYear,
|
||
|
|
Rating = employee.Rating,
|
||
|
|
EmployedSince = employee.EmployedSince,
|
||
|
|
LabelBookings = _localization.Get("employees.detail.bookings"),
|
||
|
|
LabelRevenue = _localization.Get("employees.detail.revenue"),
|
||
|
|
LabelRating = _localization.Get("employees.detail.rating"),
|
||
|
|
LabelEmployedSince = _localization.Get("employees.detail.employedsince"),
|
||
|
|
Tags = employee.Tags.Select(t => new EmployeeTagViewModel { Text = t.Text, CssClass = t.CssClass }).ToList()
|
||
|
|
};
|
||
|
|
|
||
|
|
return View(model);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public class EmployeeDetailHeaderViewModel
|
||
|
|
{
|
||
|
|
public required string Initials { get; init; }
|
||
|
|
public required string Name { get; init; }
|
||
|
|
public string? AvatarColor { get; init; }
|
||
|
|
public required string Role { get; init; }
|
||
|
|
public required string RoleText { get; init; }
|
||
|
|
public required string Status { get; init; }
|
||
|
|
public required string StatusText { get; init; }
|
||
|
|
public bool IsActive => Status == "active";
|
||
|
|
public required string BookingsThisYear { get; init; }
|
||
|
|
public required string RevenueThisYear { get; init; }
|
||
|
|
public required string Rating { get; init; }
|
||
|
|
public required string EmployedSince { get; init; }
|
||
|
|
public required string LabelBookings { get; init; }
|
||
|
|
public required string LabelRevenue { get; init; }
|
||
|
|
public required string LabelRating { get; init; }
|
||
|
|
public required string LabelEmployedSince { get; init; }
|
||
|
|
public List<EmployeeTagViewModel> Tags { get; init; } = new();
|
||
|
|
}
|
||
|
|
|
||
|
|
public class EmployeeTagViewModel
|
||
|
|
{
|
||
|
|
public required string Text { get; init; }
|
||
|
|
public required string CssClass { get; init; }
|
||
|
|
}
|