Implements localization for dashboard, cash register, account, and profile sections Adds localization keys for various UI elements, improving internationalization support Refactors view components to use ILocalizationService for dynamic text rendering Prepares ground for multi-language support with translation-ready markup
64 lines
1.9 KiB
C#
64 lines
1.9 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using PlanTempus.Application.Features.Localization.Services;
|
|
|
|
namespace PlanTempus.Application.Features.Dashboard.Components;
|
|
|
|
public class BookingListViewComponent : ViewComponent
|
|
{
|
|
private readonly ILocalizationService _localization;
|
|
|
|
public BookingListViewComponent(ILocalizationService localization)
|
|
{
|
|
_localization = localization;
|
|
}
|
|
|
|
public IViewComponentResult Invoke(string key)
|
|
{
|
|
var model = BookingListCatalog.Get(key, _localization);
|
|
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; }
|
|
}
|
|
|
|
internal class BookingListData
|
|
{
|
|
public required string Key { get; init; }
|
|
public required string TitleKey { get; init; }
|
|
public required string CurrentTime { get; init; }
|
|
public required IReadOnlyList<string> BookingKeys { get; init; }
|
|
}
|
|
|
|
public static class BookingListCatalog
|
|
{
|
|
private static readonly Dictionary<string, BookingListData> Lists = new()
|
|
{
|
|
["todays-bookings"] = new BookingListData
|
|
{
|
|
Key = "todays-bookings",
|
|
TitleKey = "dashboard.bookings.title",
|
|
CurrentTime = "10:45",
|
|
BookingKeys = ["booking-1", "booking-2", "booking-3", "booking-4", "booking-5", "booking-6"]
|
|
}
|
|
};
|
|
|
|
public static BookingListViewModel Get(string key, ILocalizationService localization)
|
|
{
|
|
if (!Lists.TryGetValue(key, out var list))
|
|
throw new KeyNotFoundException($"BookingList with key '{key}' not found");
|
|
|
|
return new BookingListViewModel
|
|
{
|
|
Key = list.Key,
|
|
Title = localization.Get(list.TitleKey),
|
|
CurrentTime = list.CurrentTime,
|
|
BookingKeys = list.BookingKeys
|
|
};
|
|
}
|
|
}
|