import { ALL_WIZARD_STATUSES } from "@/domain/work-orders/types/work-order-wizard"; import { WO_TYPES, type WOType } from "@/domain/work-orders/types/work-order-wizard"; import type { DashboardRangeKey } from "@/domain/dashboard/types/dashboard-range"; import { addDaysIso, businessTodayIso, dashboardRangeParams, } from "@/domain/dashboard/utils/dashboard-range-utils"; export const WORK_ORDERS_ROUTE = "/workorders"; export const UPLIFTS_ROUTE = "/uplifts"; export const OPEN_WIZARD_STATUSES: readonly string[] = ALL_WIZARD_STATUSES.filter( (status) => status !== "Completed", ); export function workOrderDrilldownUrl(search: URLSearchParams): string { const query = search.toString(); return query ? `${WORK_ORDERS_ROUTE}?${query}` : WORK_ORDERS_ROUTE; } function setDateRange(search: URLSearchParams, range: DashboardRangeKey): void { const params = dashboardRangeParams(range); if (params.dateFrom && params.dateTo) { search.set("dateFrom", params.dateFrom); search.set("dateTo", params.dateTo); } } export function workOrderRangeDrilldownSearch(range: DashboardRangeKey): URLSearchParams { const search = new URLSearchParams(); setDateRange(search, range); return search; } export function workOrderStatusDrilldownSearch( status: string, range: DashboardRangeKey, ): URLSearchParams { const search = workOrderRangeDrilldownSearch(range); search.set("statuses", status); return search; } export function workOrderTypeDrilldownSearch( type: string, range: DashboardRangeKey, ): URLSearchParams | null { if (!WO_TYPES.includes(type as WOType)) return null; const search = workOrderRangeDrilldownSearch(range); search.set("types", type); return search; } export function workOrderDispatcherDrilldownSearch( dispatcherId: string, range: DashboardRangeKey, ): URLSearchParams { const search = workOrderRangeDrilldownSearch(range); search.set("dispatchers", dispatcherId); return search; } export function scheduledTomorrowDrilldownSearch( today: string = businessTodayIso(), ): URLSearchParams { const tomorrow = addDaysIso(today, 1); const search = new URLSearchParams(); search.set("dateFrom", tomorrow); search.set("dateTo", tomorrow); return search; } export function avetaPendingDrilldownSearch(today: string = businessTodayIso()): URLSearchParams { const search = new URLSearchParams(); search.set("dateFrom", today); search.set("dateTo", addDaysIso(today, 1)); search.set("aveta", "1"); search.set("docs", "No"); search.set("statuses", OPEN_WIZARD_STATUSES.join(",")); return search; }