frontPanel/src/pages/QuizAnswersPage/useGetData.ts
IlyaDoronin 17a697893d fix
2024-05-15 14:44:10 +03:00

62 lines
1.6 KiB
TypeScript

import { useEffect } from "react";
import { useQuizStore } from "@root/quizes/store";
import { quizApi } from "@api/quiz";
import { setQuizes } from "@root/quizes/actions";
import { questionApi } from "@api/question";
import { setQuestions } from "@root/questions/actions";
import { resultApi } from "@api/result";
import { parseFilters } from "./helper";
import { setResults } from "@root/results/actions";
export const useGetData = (filterNew: string, filterDate: string): void => {
const { editQuizId } = useQuizStore();
useEffect(() => {
const getData = async (): Promise<void> => {
if (editQuizId !== null) {
const [quizes, quizesError] = await quizApi.getList();
if (quizesError) {
console.error(
"An error occurred while receiving data: ",
quizesError,
);
return;
}
setQuizes(quizes);
const [questions, questionsError] = await questionApi.getList({
quiz_id: editQuizId,
});
if (questionsError) {
return console.error(questionsError);
}
setQuestions(questions);
const [result, resultError] = await resultApi.getList(
editQuizId,
0,
parseFilters(filterNew, filterDate),
);
if (resultError || !result) {
console.error(resultError);
return;
}
if (result.total_count === 0) {
console.error("No results found");
}
setResults(result);
}
};
getData();
}, [editQuizId, filterNew, filterDate, setResults]);
};