Files
encoach_frontend/src/hooks/useAssignmentCorporates.tsx
2024-08-24 10:53:11 +01:00

45 lines
1.2 KiB
TypeScript

import { AssignmentWithCorporateId } from "@/interfaces/results";
import axios from "axios";
import { useEffect, useState } from "react";
export default function useAssignmentsCorporates({
corporates,
startDate,
endDate,
}: {
corporates: string[];
startDate: Date | null;
endDate: Date | null;
}) {
const [assignments, setAssignments] = useState<AssignmentWithCorporateId[]>([]);
const [isLoading, setIsLoading] = useState(false);
const [isError, setIsError] = useState(false);
const getData = () => {
if (corporates.length === 0) {
setAssignments([]);
return;
}
setIsLoading(true);
const urlSearchParams = new URLSearchParams({
ids: corporates.join(","),
...(startDate ? { startDate: startDate.toISOString() } : {}),
...(endDate ? { endDate: endDate.toISOString() } : {}),
});
axios
.get<AssignmentWithCorporateId[]>(
`/api/assignments/corporate?${urlSearchParams.toString()}`
)
.then(async (response) => {
setAssignments(response.data);
})
.finally(() => setIsLoading(false));
};
useEffect(getData, [corporates, startDate, endDate]);
return { assignments, isLoading, isError, reload: getData };
}