using PlanTempus.Application.Features.Localization.Services; using PlanTempus.Application.Features.Menu.Models; namespace PlanTempus.Application.Features.Menu.Services; /// /// Mock implementation of IMenuService with hardcoded menu data. /// public class MockMenuService : IMenuService { private readonly ILocalizationService _localize; public MockMenuService(ILocalizationService localize) { _localize = localize; } public List GetMenuForRole(UserRole role, string? currentUrl = null) { var allGroups = GetAllMenuGroups(); return allGroups .Select(g => new MenuGroup { Id = g.Id, Label = _localize.Get($"groups.{g.Id}"), SortOrder = g.SortOrder, Items = g.Items .Where(i => role >= i.MinimumRole) .Select(i => new MenuItem { Id = i.Id, Label = _localize.Get($"menu.{i.Id}"), Icon = i.Icon, Url = i.Url, MinimumRole = i.MinimumRole, SortOrder = i.SortOrder, IsActive = currentUrl != null && i.Url.Equals(currentUrl, StringComparison.OrdinalIgnoreCase) }) .OrderBy(i => i.SortOrder) .ToList() }) .Where(g => g.Items.Any()) .OrderBy(g => g.SortOrder) .ToList(); } private static List GetAllMenuGroups() { return new List { // DASHBOARD GROUP new MenuGroup { Id = "dashboard", Label = "Dashboard", SortOrder = 1, Items = new List { new MenuItem { Id = "home", Label = "Dashboard", Icon = "ph-squares-four", Url = "/", MinimumRole = UserRole.Staff, SortOrder = 1 }, new MenuItem { Id = "calendar", Label = "Kalender", Icon = "ph-calendar", Url = "/poc-calendar.html", MinimumRole = UserRole.Staff, SortOrder = 2 }, new MenuItem { Id = "pos", Label = "Kasse", Icon = "ph-cash-register", Url = "/kasse", MinimumRole = UserRole.Staff, SortOrder = 3 } } }, // DATA GROUP new MenuGroup { Id = "data", Label = "Data", SortOrder = 2, Items = new List { new MenuItem { Id = "products", Label = "Produkter & Lager", Icon = "ph-package", Url = "/poc-produkter.html", MinimumRole = UserRole.Manager, SortOrder = 1 }, new MenuItem { Id = "suppliers", Label = "Leverandører", Icon = "ph-truck", Url = "/poc-leverandoerer.html", MinimumRole = UserRole.Manager, SortOrder = 2 }, new MenuItem { Id = "customers", Label = "Kunder", Icon = "ph-users", Url = "/customers", MinimumRole = UserRole.Staff, SortOrder = 3 }, new MenuItem { Id = "employees", Label = "Medarbejdere", Icon = "ph-user", Url = "/poc-medarbejdere.html", MinimumRole = UserRole.Manager, SortOrder = 4 } } }, // ANALYSE GROUP new MenuGroup { Id = "analytics", Label = "Analyse", SortOrder = 3, Items = new List { new MenuItem { Id = "reports", Label = "Statistik & Rapporter", Icon = "ph-chart-bar", Url = "/reports", MinimumRole = UserRole.Manager, SortOrder = 1 } } }, // SYSTEM GROUP new MenuGroup { Id = "system", Label = "System", SortOrder = 4, Items = new List { new MenuItem { Id = "settings", Label = "Indstillinger", Icon = "ph-gear", Url = "/poc-indstillinger.html", MinimumRole = UserRole.Admin, SortOrder = 1 }, new MenuItem { Id = "account", Label = "Abonnement & Konto", Icon = "ph-credit-card", Url = "/konto", MinimumRole = UserRole.Admin, SortOrder = 2 } } } }; } }