/// Contains all role, permission, and entity UUIDs used for access control across the application.
class Permissions {
  // ------------------- Project Management ------------------------------
  /// Permission to manage master data (like dropdowns, configurations)
  static const String manageMaster = "588a8824-f924-4955-82d8-fc51956cf323";

  /// Permission to create, edit, delete projects
  static const String manageProject = "172fc9b6-755b-4f62-ab26-55c34a330614";

  /// Permission to view list of all projects
  static const String viewProjects = "6ea44136-987e-44ba-9e5d-1cf8f5837ebc";

  /// Permission to assign employees to a project
  static const String assignToProject = "b94802ce-0689-4643-9e1d-11c86950c35b";

  // ------------------- Employee Management -----------------------------
  /// Permission to manage employee records
  static const String manageEmployees = "a97d366a-c2bb-448d-be93-402bd2324566";

  /// Permission to view all employees
  static const String viewAllEmployees = "60611762-7f8a-4fb5-b53f-b1139918796b";

  /// Permission to view only team members (subordinate employees)
  static const String viewTeamMembers = "b82d2b7e-0d52-45f3-997b-c008ea460e7f";

  // ------------------- Project Infrastructure --------------------------
  /// Permission to manage project infrastructure (e.g., site details)
  static const String manageProjectInfra =
      "cf2825ad-453b-46aa-91d9-27c124d63373";

  /// Permission to view infrastructure-related details
  static const String viewProjectInfra = "8d7cc6e3-9147-41f7-aaa7-fa507e450bd4";

  // ------------------- Attendance Management ---------------------------
  /// Permission to regularize (edit/update) attendance records
  static const String regularizeAttendance =
      "57802c4a-00aa-4a1f-a048-fd2f70dd44b6";

  // ------------------- Task Management ---------------------------------
  /// Permission to create and manage tasks
  static const String manageTask = "08752f33-3b29-4816-b76b-ea8a968ed3c5";

  /// Permission to approve tasks
  static const String approveTask = "db4e40c5-2ba9-4b6d-b8a6-a16a250ff99c";

  /// Permission to view task lists and details
  static const String viewTask = "9fcc5f87-25e3-4846-90ac-67a71ab92e3c";

  /// Permission to assign tasks for reporting
  static const String assignReportTask = "6a32379b-8b3f-49a6-8c48-4b7ac1b55dc2";

  // ------------------- Directory Roles ---------------------------------
  /// Admin-level directory access
  static const String directoryAdmin = "4286a13b-bb40-4879-8c6d-18e9e393beda";

  /// Manager-level directory access
  static const String directoryManager = "62668630-13ce-4f52-a0f0-db38af2230c5";

  /// Basic directory user access
  static const String directoryUser = "0f919170-92d4-4337-abd3-49b66fc871bb";

  // ------------------- Expense Permissions -----------------------------
  /// View only own expenses
  static const String expenseViewSelf = "385be49f-8fde-440e-bdbc-3dffeb8dd116";

  /// View all employee expenses
  static const String expenseViewAll = "01e06444-9ca7-4df4-b900-8c3fa051b92f";

  /// Create/upload new expenses
  static const String expenseUpload = "0f57885d-bcb2-4711-ac95-d841ace6d5a7";

  /// Review submitted expenses
  static const String expenseReview = "1f4bda08-1873-449a-bb66-3e8222bd871b";

  /// Approve or reject expenses
  static const String expenseApprove = "eaafdd76-8aac-45f9-a530-315589c6deca";

  /// Process expenses for payment or final action
  static const String expenseProcess = "ea5a1529-4ee8-4828-80ea-0e23c9d4dd11";

  /// Full access to manage all expense operations
  static const String expenseManage = "ea5a1529-4ee8-4828-80ea-0e23c9d4dd11";

  /// ID used to track expenses in "Draft" status
  static const String expenseDraft = "297e0d8f-f668-41b5-bfea-e03b354251c8";

  /// List of user IDs who rejected the expense (used for audit trail)
  static const List<String> expenseRejectedBy = [
    "d1ee5eec-24b6-4364-8673-a8f859c60729",
    "965eda62-7907-4963-b4a1-657fb0b2724b",
  ];

  // ------------------- Application Roles -------------------------------
  /// Application role ID for users with full expense management rights
  static const String expenseManagement =
      "a4e25142-449b-4334-a6e5-22f70e4732d7";

  // ------------------- Document Entities -------------------------------
  /// Entity ID for project documents
  static const String projectEntity = "c8fe7115-aa27-43bc-99f4-7b05fabe436e";

  /// Entity ID for employee documents
  static const String employeeEntity = "dbb9555a-7a0c-40f2-a9ed-f0463f1ceed7";

  // ------------------- Document Permissions ----------------------------
  /// Permission to view documents
  static const String viewDocument = "71189504-f1c8-4ca5-8db6-810497be2854";

  /// Permission to upload documents
  static const String uploadDocument = "3f6d1f67-6fa5-4b7c-b17b-018d4fe4aab8";

  /// Permission to modify documents
  static const String modifyDocument = "c423fd81-6273-4b9d-bb5e-76a0fb343833";

  /// Permission to delete documents
  static const String deleteDocument = "40863a13-5a66-469d-9b48-135bc5dbf486";

  /// Permission to download documents
  static const String downloadDocument = "404373d0-860f-490e-a575-1c086ffbce1d";

  /// Permission to verify documents
  static const String verifyDocument = "13a1f30f-38d1-41bf-8e7a-b75189aab8e0";
}

/// Contains constants for menu item IDs fetched from the sidebar menu API.
class MenuItems {
  /// Dashboard menu
  static const String dashboard = "29e03eda-03e8-4714-92fa-67ae0dc53202";

  /// Daily Task Planning menu
  static const String dailyTaskPlanning =
      "77ac5205-f823-442e-b9e4-2420d658aa02";

  /// Daily Progress Report menu
  static const String dailyProgressReport =
      "299e3cf5-d034-4403-b4a1-ea46d2714832";

  /// Employees menu
  static const String employees = "78f0206d-c6cc-44d0-832a-2031ed203018";

  /// Attendance menu
  static const String attendance = "2f212030-f36b-456c-8e7c-11f00f9ba42b";

  /// Directory menu
  static const String directory = "31bc367b-7c58-4604-95eb-da059a384103";

  /// Expense & Reimbursement menu
  static const String expenseReimbursement =
      "0f0dc1a7-1aca-4cdb-9d7a-8a769ce40728";

  /// Payment Requests menu
  static const String paymentRequests = "b350a59f-2372-4f68-8dcf-f7cfc44523ca";

  /// Advance Payment Statements menu
  static const String advancePaymentStatements =
      "e0251cc1-e6d9-417a-9c76-489cc4b6c347";

  /// Finance menu
  static const String finance = "5ac409dd-bbe0-4d56-bcb9-229bd3a6353c";

  /// Documents menu
  static const String documents = "92d2cc39-9e6a-46b2-ae50-84fbf83c95d3";

  /// Service Projects
  static const String serviceProjects = "7faddfe7-994b-4712-91c2-32ba44129d9b";

  /// Infrastructure Projects
  static const String infraProjects = "5fab4b88-c9a0-417b-aca2-130980fdb0cf";
}

/// Contains all job status IDs used across the application.
class JobStatus {
  /// Level 1 - New
  static const String newStatus = "32d76a02-8f44-4aa0-9b66-c3716c45a918";

  /// Level 2 - Assigned
  static const String assigned = "cfa1886d-055f-4ded-84c6-42a2a8a14a66";

  /// Level 3 - In Progress
  static const String inProgress = "5a6873a5-fed7-4745-a52f-8f61bf3bd72d";

  /// Level 4 - Work Done
  static const String workDone = "aab71020-2fb8-44d9-9430-c9a7e9bf33b0";

  /// Level 5 - Review Done
  static const String reviewDone = "ed10ab57-dbaa-4ca5-8ecd-56745dcbdbd7";

  /// Level 6 - Closed
  static const String closed = "3ddeefb5-ae3c-4e10-a922-35e0a452bb69";

  /// Level 7 - On Hold
  static const String onHold = "75a0c8b8-9c6a-41af-80bf-b35bab722eb2";
}
