/**
 * Mapping of sidebar URLs to their corresponding permission keys
 * This defines which permission is required to VIEW each module/page
 */

export const URL_PERMISSION_MAPPING: Record<string, string> = {
  // Dashboard - always visible (no specific permission needed)
  "/": "view_dashboard",

  // Time Tracking
  "/time-tracking": "view_time_tracking",

  // My Leaves - personal leaves (usually always accessible)
  "/my-leaves": "view_leaves",

  // My Salary Slips - personal salary slips (usually always accessible)
  "/my-salary-slips": "view_salary_settings",

  // Leave Requests/Reports
  "/leave-report": "view_leaves",

  // Salary Management
  "/salary-management": "view_payroll", // or create specific permission

  // Reports
  "/reports": "view_reports",
  "/reports/project-costing": "view_reports",
  "/timesheet": "view_time_tracking",
  "/clockin-report": "view_time_tracking",

  // Project Management
  "/clients": "view_clients",
  "/projects": "view_projects",
  "/consultants": "view_consultants",
  "/contractors": "view_contractors",
  "/vendors": "view_vendors",

  // Team Management
  "/employees": "view_employees",
  "/departments": "view_departments",
  "/admin-users/roles": "view_roles",

  // Company Settings
  "/activity-types": "view_activity_types",
  "/leave-types": "view_leave_types",
  "/salary-settings": "view_salary_settings",
  "/company-settings": "view_company_settings",

  // Companies (Super Admin)
  "/companies": "view_company",
};

/**
 * Get the permission key required for a given URL
 */
export const getPermissionForUrl = (url: string): string | null => {
  return URL_PERMISSION_MAPPING[url] || null;
};

/**
 * Check if a URL requires any specific permission
 */
export const urlRequiresPermission = (url: string): boolean => {
  return url in URL_PERMISSION_MAPPING;
};

/**
 * URLs that should always be visible (no permission check)
 */
export const ALWAYS_VISIBLE_URLS = [
  "/", // Dashboard - usually always accessible
];

/**
 * Check if a URL should always be visible regardless of permissions
 */
export const isAlwaysVisible = (url: string): boolean => {
  return ALWAYS_VISIBLE_URLS.includes(url);
};
