import { useMutation, useQuery } from "react-query"; import type { MutationOptions } from "@/@types/types/query.types"; import { useAuth } from "@/features/auth/hooks/use-auth"; import { useHttp } from "@/hooks/useHttp"; import { getResultFromStrategyResponse, setParametersToStrategyRunner, } from "@/libs/helpers/strategy-service.helper"; import { useServerDataCtx } from "@/providers/server-data-provider/server-data-provider"; import type { IBookingRequestItem, IBookingRequestListResponse, } from "./demand-service.types"; export const useDemandListMutation = () => { const http = useHttp("wl-display-api"); const { strategyKeys } = useServerDataCtx(); const auth = useAuth(); if (!auth.isAuthenticated) { throw new Error("User is not authenticated"); } const service = () => http .post( "/api/v1/strategy/run", setParametersToStrategyRunner( { CorpRequestSelectListRequest: { UserId: "00000000-0000-0000-0000-000000000000", }, }, strategyKeys.selectList, ), ) .then((res) => getResultFromStrategyResponse(res.data)); return useMutation({ mutationFn: service, mutationKey: "booking-request-list", }); }; export const useDemandListQuery = ( params: { bookingRequestId?: number; }, queryOptions?: MutationOptions, ) => { const http = useHttp("wl-display-api"); const { strategyKeys } = useServerDataCtx(); const service = () => http .post( "/api/v1/strategy/run", setParametersToStrategyRunner( { CorpRequestSelectListRequest: { DataGridRequest: { Page: 1, PageSize: 100, SortColumn: "Id", }, Filter: { ModuleName: null, TravelReason: null, CancelReason: null, RequestStatus: null, RequestId: params.bookingRequestId ?? null, OnlyCurrentUser: false, }, }, }, strategyKeys.selectList, ), ) .then((res) => (getResultFromStrategyResponse(res.data) as any).data); return useQuery({ queryFn: service, queryKey: "booking-request-list", ...queryOptions, }); };