import { ROUTES } from '@/shared/constants/routes';
import { PERMISSIONS } from '@/features/auth/constants/permissions';
import type { PermissionCheck } from '@/features/auth/constants/permissions';

export interface NavItemConfig {
  path: string;
  labelKey: string;
  permission?: PermissionCheck;
  superAdminOnly?: boolean;
}

export const MAIN_NAV_ITEMS: NavItemConfig[] = [
  { path: ROUTES.DASHBOARD, labelKey: 'common:navigation.dashboard' },
  {
    path: ROUTES.TICKETS,
    labelKey: 'common:navigation.tickets',
    permission: PERMISSIONS.DEPARTMENT_TICKETS_VIEW,
  },
  {
    path: ROUTES.PROJECTS,
    labelKey: 'common:navigation.projects',
    permission: PERMISSIONS.DEPARTMENT_TICKETS_VIEW,
  },
  {
    path: ROUTES.SEARCH,
    labelKey: 'common:navigation.search',
    permission: PERMISSIONS.DEPARTMENT_TICKETS_VIEW,
  },
];

export const ADMIN_NAV_ITEMS: NavItemConfig[] = [
  {
    path: ROUTES.ADMIN_COMPANIES,
    labelKey: 'admin:nav.companies',
    superAdminOnly: true,
  },
  {
    path: ROUTES.ADMIN_ROLES,
    labelKey: 'admin:nav.roles',
    superAdminOnly: true,
  },
  {
    path: ROUTES.ADMIN_USERS,
    labelKey: 'admin:nav.users',
    permission: [PERMISSIONS.COMPANY_USERS_MANAGE, PERMISSIONS.DEPARTMENT_USERS_MANAGE],
  },
  {
    path: ROUTES.ADMIN_INVITES,
    labelKey: 'admin:nav.invites',
    permission: [PERMISSIONS.COMPANY_USERS_MANAGE, PERMISSIONS.USERS_INVITE, PERMISSIONS.DEPARTMENT_USERS_MANAGE],
  },
  {
    path: ROUTES.ADMIN_DEPARTMENTS,
    labelKey: 'admin:nav.departments',
    permission: PERMISSIONS.COMPANY_DEPARTMENTS_MANAGE,
  },
  {
    path: ROUTES.ADMIN_CATEGORIES,
    labelKey: 'admin:nav.categories',
    permission: PERMISSIONS.DEPARTMENT_CATEGORIES_MANAGE,
  },
  {
    path: ROUTES.ADMIN_TICKET_META,
    labelKey: 'admin:nav.ticketMeta',
    permission: PERMISSIONS.DEPARTMENT_SETTINGS_MANAGE,
  },
  {
    path: ROUTES.ADMIN_NOTIFICATION_TEMPLATES,
    labelKey: 'admin:nav.templates',
    permission: PERMISSIONS.DEPARTMENT_SETTINGS_MANAGE,
  },
  {
    path: ROUTES.SETTINGS_SLA,
    labelKey: 'admin:nav.sla',
    permission: PERMISSIONS.DEPARTMENT_SLA_MANAGE,
  },
  {
    path: ROUTES.ADMIN_ASSIGNEE_PERFORMANCE,
    labelKey: 'admin:nav.assigneePerformance',
    permission: PERMISSIONS.COMPANY_REPORTS_VIEW,
  },
  {
    path: ROUTES.ADMIN_AUDIT_LOGS,
    labelKey: 'admin:nav.audit',
    permission: [
      PERMISSIONS.GLOBAL_AUDIT_VIEW,
      PERMISSIONS.COMPANY_AUDIT_VIEW,
      PERMISSIONS.DEPARTMENT_AUDIT_VIEW,
    ],
  },
];

export const SETTINGS_NAV_ITEM: NavItemConfig = {
  path: ROUTES.SETTINGS,
  labelKey: 'settings:title',
  permission: [
    PERMISSIONS.DEPARTMENT_SETTINGS_MANAGE,
    PERMISSIONS.COMPANY_SETTINGS_MANAGE,
    PERMISSIONS.GLOBAL_SETTINGS_MANAGE,
  ],
};
