import { ModuleType } from "omsorgcore-client-ts";

export const NAV_MODULES = {
  Mitarbeiter: ModuleType.Employees,
  Kunden: ModuleType.Facilities,
  Disposition: ModuleType.Orders,
  Abwesenheiten: ModuleType.Absences,
  Zeiterfassung: ModuleType.TimeEntries,
  Rechnungen: ModuleType.Invoices,
  Controlling: ModuleType.Controlling,
  Debug: ModuleType.UserManagement,
  "Audit-Log": ModuleType.AuditLog
};

// Papierkorb hat kein eigenes Modul-Recht - sichtbar, sobald irgendein "Recover"-Recht auf einem
// der Objekte mit Soft-Delete besteht (siehe TrashController in omsorgCore).
export const TRASH_MODULES = [
  ModuleType.Employees,
  ModuleType.Facilities,
  ModuleType.Contracts,
  ModuleType.Orders,
  ModuleType.Absences,
  ModuleType.TimeEntries,
  ModuleType.Assignments
];

// Einstellungen bündelt drei unabhängige Rechte (siehe SettingsPage.jsx, die jeden Tab einzeln
// gegen sein eigenes Modul prüft) - der Sidebar-Tab selbst ist sichtbar, sobald irgendeines davon
// View gewährt, analog zum Papierkorb-Muster oben.
export const SETTINGS_MODULES = [ModuleType.Users, ModuleType.UserManagement, ModuleType.Configuration];

export function isNavItemVisible(label, hasPermission) {
  if (label === "Papierkorb") {
    return TRASH_MODULES.some((module) => hasPermission(module, "Recover"));
  }

  if (label === "Einstellungen") {
    return SETTINGS_MODULES.some((module) => hasPermission(module, "View"));
  }

  const module = NAV_MODULES[label];
  return !module || hasPermission(module, "View");
}
