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

export interface RoutePermissionRule {
  permission?: PermissionCheck;
  superAdminOnly?: boolean;
}

export const ROUTE_PERMISSIONS: Partial<Record<string, RoutePermissionRule>> = {
  [ROUTES.TICKETS]: { permission: PERMISSIONS.DEPARTMENT_TICKETS_VIEW },
  [ROUTES.TICKET_CREATE]: { permission: PERMISSIONS.DEPARTMENT_TICKETS_CREATE },
  [ROUTES.SEARCH]: { permission: PERMISSIONS.DEPARTMENT_TICKETS_VIEW },
  [ROUTES.SETTINGS]: {
    permission: [
      PERMISSIONS.DEPARTMENT_SETTINGS_MANAGE,
      PERMISSIONS.COMPANY_SETTINGS_MANAGE,
      PERMISSIONS.GLOBAL_SETTINGS_MANAGE,
    ],
  },
  [ROUTES.ADMIN_COMPANIES]: { superAdminOnly: true },
  [ROUTES.ADMIN_ROLES]: { superAdminOnly: true },
  [ROUTES.ADMIN_USERS]: {
    permission: [PERMISSIONS.COMPANY_USERS_MANAGE, PERMISSIONS.DEPARTMENT_USERS_MANAGE],
  },
  [ROUTES.ADMIN_INVITES]: {
    permission: [PERMISSIONS.COMPANY_USERS_MANAGE, PERMISSIONS.USERS_INVITE, PERMISSIONS.DEPARTMENT_USERS_MANAGE],
  },
  [ROUTES.ADMIN_DEPARTMENTS]: { permission: PERMISSIONS.COMPANY_DEPARTMENTS_MANAGE },
  [ROUTES.ADMIN_CATEGORIES]: { permission: PERMISSIONS.DEPARTMENT_CATEGORIES_MANAGE },
  [ROUTES.ADMIN_TICKET_META]: { permission: PERMISSIONS.DEPARTMENT_SETTINGS_MANAGE },
  [ROUTES.ADMIN_NOTIFICATION_TEMPLATES]: { permission: PERMISSIONS.DEPARTMENT_SETTINGS_MANAGE },
  [ROUTES.SETTINGS_SLA]: { permission: PERMISSIONS.DEPARTMENT_SLA_MANAGE },
  [ROUTES.ADMIN_ASSIGNEE_PERFORMANCE]: { permission: PERMISSIONS.COMPANY_REPORTS_VIEW },
  [ROUTES.ADMIN_AGENT_PERFORMANCE]: { permission: PERMISSIONS.COMPANY_REPORTS_VIEW },
  [ROUTES.ADMIN_AUDIT_LOGS]: {
    permission: [
      PERMISSIONS.GLOBAL_AUDIT_VIEW,
      PERMISSIONS.COMPANY_AUDIT_VIEW,
      PERMISSIONS.DEPARTMENT_AUDIT_VIEW,
    ],
  },
};
