import type { FleetResourceSlug } from "@/pages/fleet/config/resources"; import type { BookingListFilter } from "@/services/bookings.service"; import type { ContractListFilter } from "@/services/contracts.service"; import type { RuleEngineListParams } from "@/services/ruleEngine/ruleEngine.service"; import type { CompanyListFilter } from "@/types/customer"; import type { InvoiceListFilter } from "@/types/invoice"; import type { RuleEngineResourceSlug } from "@/types/rule-engine"; import type { TrainScheduleFilters } from "@/types/trainScheduling"; export const QUERY_KEYS = { USERS: { ROOT: ["users"] as const, ADD: ["users", "add"] as const, }, FILES: { ROOT: ["file-upload-settings"] as const, list: () => ["file-upload-settings", "list"] as const, byId: (id: string) => ["file-upload-settings", "detail", id] as const, byCode: (code: string) => ["file-upload-settings", "by-code", code] as const, }, DROPDOWN_SETTINGS: { ROOT: ["dropdown-settings"] as const, list: () => ["dropdown-settings", "list"] as const, byId: (id: string) => ["dropdown-settings", "detail", id] as const, byCode: (code: string) => ["dropdown-settings", "by-code", code] as const, }, CUSTOMERS: { ROOT: ["customers"] as const, stats: ["customers", "stats"] as const, list: (filter?: CompanyListFilter) => ["customers", "list", filter ?? {}] as const, byId: (id: string) => ["customers", "detail", id] as const, bookings: (id: string) => ["customers", "detail", id, "bookings"] as const, documents: (id: string) => ["customers", "detail", id, "documents"] as const, payments: (id: string) => ["customers", "detail", id, "payments"] as const, }, INVOICES: { ROOT: ["invoices"] as const, list: (filter?: InvoiceListFilter) => ["invoices", "list", filter ?? {}] as const, byId: (id: string) => ["invoices", "detail", id] as const, }, BOOKINGS: { ROOT: ["bookings"] as const, list: (filter?: BookingListFilter) => ["bookings", "list", filter ?? {}] as const, listSummary: (filter?: BookingListFilter) => ["bookings", "list-summary", filter ?? {}] as const, byId: (id: string) => ["bookings", "detail", id] as const, clearanceQueue: (region?: string) => ["bookings", "clearance-queue", region ?? "ET"] as const, }, CONTRACTS: { ROOT: ["contracts"] as const, list: (filter?: ContractListFilter) => ["contracts", "list", filter ?? {}] as const, listSummary: (filter?: ContractListFilter) => ["contracts", "list-summary", filter ?? {}] as const, byId: (id: string) => ["contracts", "detail", id] as const, clearance: (id: string) => ["contracts", "clearance", id] as const, clearanceQueue: (region?: string) => ["contracts", "clearance-queue", region ?? "ET"] as const, clearanceHistory: (region?: string) => ["contracts", "clearance-history", region ?? "ET"] as const, djSchedules: ["contracts", "clearance-dj-schedules"] as const, milestones: (id: string) => ["contracts", "milestones", id] as const, capacity: (id: string) => ["contracts", "capacity", id] as const, bookingMilestones: (bookingId: string) => ["contracts", "booking-milestones", bookingId] as const, bookingIncidents: (bookingId: string) => ["contracts", "booking-incidents", bookingId] as const, }, BOOKING_ORDERS: { ROOT: ["booking-orders"] as const, byContract: (contractBookingId: string) => ["booking-orders", "by-contract", contractBookingId] as const, pool: (contractBookingId: string) => ["booking-orders", "pool", contractBookingId] as const, }, TRAIN_SCHEDULING: { ROOT: ["train-scheduling"] as const, eligible: (freightType?: string, filters?: TrainScheduleFilters) => [ "train-scheduling", "eligible-bookings", freightType ?? "CONTAINER", filters ?? {}, ] as const, locomotives: (routeId?: string) => ["train-scheduling", "locomotives", routeId ?? "all"] as const, stations: () => ["train-scheduling", "stations"] as const, schedules: () => ["train-scheduling", "schedules"] as const, scheduleById: (id: string) => ["train-scheduling", "schedule", id] as const, track: (id: string) => ["train-scheduling", "track", id] as const, batchBoard: () => ["train-scheduling", "batch-board"] as const, batchBoardDetail: (scheduleId: string) => ["train-scheduling", "batch-board", scheduleId] as const, unassignedBookings: (id: string) => ["train-scheduling", "unassigned", id] as const, compositionRemovals: (id: string) => ["train-scheduling", "removals", id] as const, importLoadingBookings: (id: string) => ["train-scheduling", "import-loading-bookings", id] as const, }, FLEET: { ROOT: ["fleet"] as const, list: (resource: FleetResourceSlug | string) => ["fleet", "list", resource] as const, }, VEHICLES: { ROOT: ["vehicles"] as const, list: (filter?: Record) => ["vehicles", "list", filter ?? {}] as const, byId: (id: string) => ["vehicles", "detail", id] as const, }, FIRST_MILE: { ROOT: ["first-mile"] as const, list: (filter?: Record) => ["first-mile", "list", filter ?? {}] as const, byId: (id: string) => ["first-mile", "detail", id] as const, }, LAST_MILE: { ROOT: ["last-mile"] as const, list: (filter?: Record) => ["last-mile", "list", filter ?? {}] as const, byId: (id: string) => ["last-mile", "detail", id] as const, }, RULE_ENGINE: { ROOT: ["rule-engine"] as const, list: ( resource: RuleEngineResourceSlug | string, params?: RuleEngineListParams, ) => ["rule-engine", "list", resource, params ?? {}] as const, detail: (resource: RuleEngineResourceSlug | string, id: string) => ["rule-engine", "detail", resource, id] as const, chain: ["rule-engine", "approval-rules", "chain"] as const, selectOptions: ( resource: RuleEngineResourceSlug | string, params?: Record, ) => ["rule-engine", "select-options", resource, params ?? {}] as const, orderList: (resource: RuleEngineResourceSlug | string) => ["rule-engine", "order-list", resource] as const, }, OVERVIEW: { ROOT: ["overview"] as const, dashboard: (range?: string) => ["overview", "dashboard", range ?? "30d"] as const, bookingsTab: (range?: string) => ["overview", "bookings", range ?? "30d"] as const, contractsTab: (range?: string) => ["overview", "contracts", range ?? "30d"] as const, billingTab: (range?: string) => ["overview", "billing", range ?? "30d"] as const, operationsTab: () => ["overview", "operations"] as const, customersTab: (range?: string) => ["overview", "customers", range ?? "30d"] as const, staffTab: (range?: string) => ["overview", "staff", range ?? "30d"] as const, }, FUEL: { ROOT: ["fuel"] as const, purchases: (vehicleId?: string) => ["fuel", "purchases", vehicleId ?? "all"] as const, stats: (vehicleId?: string) => ["fuel", "stats", vehicleId ?? "all"] as const, }, MAINTENANCE: { ROOT: ["maintenance"] as const, schedules: (vehicleId?: string) => ["maintenance", "schedules", vehicleId ?? "all"] as const, upcoming: (vehicleId?: string) => ["maintenance", "upcoming", vehicleId ?? "all"] as const, history: (vehicleId?: string) => ["maintenance", "history", vehicleId ?? "all"] as const, stats: (vehicleId?: string) => ["maintenance", "stats", vehicleId ?? "all"] as const, }, FINANCIAL_REPORTS: { ROOT: ["financial-reports"] as const, fleet: (vehicleId?: string, months?: number) => ["financial-reports", "fleet", vehicleId ?? "all", months ?? 12] as const, }, } as const;