mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-05 22:22:08 +00:00
68 lines
2.2 KiB
TypeScript
68 lines
2.2 KiB
TypeScript
import { useQuery, type UseQueryResult } from "@tanstack/react-query";
|
|
import { workOrdersApi } from "@/domain/work-orders/api/work-orders-api";
|
|
import { fetchWorkOrderEmployees } from "@/domain/work-orders/use-cases/fetch-work-order-employees";
|
|
import type {
|
|
DispatchDetail,
|
|
EmployeeOption,
|
|
LocationOption,
|
|
TaskListTemplate,
|
|
VendorDropdownItem,
|
|
WorkOrderDetail,
|
|
} from "@/domain/work-orders/types/work-order";
|
|
import { queryKeys } from "@/infra/query-key/query-key";
|
|
import { requireQueryParam } from "@/lib/query/require-query-param";
|
|
|
|
export function useWorkOrderDetail(
|
|
id: string | number | undefined,
|
|
): UseQueryResult<WorkOrderDetail, Error> {
|
|
return useQuery({
|
|
queryKey: queryKeys.workOrders.detail(id ?? ""),
|
|
queryFn: () => workOrdersApi.getById(requireQueryParam(id, "Work order id")),
|
|
enabled: id !== undefined && id !== "",
|
|
});
|
|
}
|
|
|
|
export function useWorkOrderLocations(): UseQueryResult<LocationOption[], Error> {
|
|
return useQuery({
|
|
queryKey: queryKeys.locations.dropdown(),
|
|
queryFn: () => workOrdersApi.fetchLocations(),
|
|
staleTime: 5 * 60 * 1000,
|
|
});
|
|
}
|
|
|
|
export function useWorkOrderEmployeesDropdown(): UseQueryResult<EmployeeOption[], Error> {
|
|
return useQuery({
|
|
queryKey: [...queryKeys.employees.all, "dropdown"] as const,
|
|
queryFn: () => fetchWorkOrderEmployees(),
|
|
staleTime: 5 * 60 * 1000,
|
|
});
|
|
}
|
|
|
|
export function useWorkOrderVendors(
|
|
trade?: string,
|
|
siteZip?: string,
|
|
): UseQueryResult<VendorDropdownItem[], Error> {
|
|
return useQuery({
|
|
queryKey: queryKeys.workOrders.vendors(trade, siteZip),
|
|
queryFn: () => workOrdersApi.fetchVendorsDropdown(trade, siteZip),
|
|
staleTime: 60 * 1000,
|
|
});
|
|
}
|
|
|
|
export function useTaskListTemplates(): UseQueryResult<TaskListTemplate[], Error> {
|
|
return useQuery({
|
|
queryKey: queryKeys.workOrders.taskTemplates(),
|
|
queryFn: () => workOrdersApi.fetchTaskTemplates(),
|
|
staleTime: 5 * 60 * 1000,
|
|
});
|
|
}
|
|
|
|
export function useDispatchDetail(
|
|
dispatchId: string | number | undefined,
|
|
): UseQueryResult<DispatchDetail, Error> {
|
|
return useQuery({
|
|
queryKey: queryKeys.workOrders.dispatch(dispatchId ?? ""),
|
|
queryFn: () => workOrdersApi.getDispatchById(requireQueryParam(dispatchId, "Dispatch id")),
|
|
enabled: dispatchId !== undefined && dispatchId !== "",
|
|
});
|
|
}
|