mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-05 11:52:03 +00:00
83 lines
2.5 KiB
TypeScript
83 lines
2.5 KiB
TypeScript
|
|
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;
|
||
|
|
}
|