2024-03-25 10:32:09 +00:00
|
|
|
|
import { Box, Skeleton, useMediaQuery, useTheme } from "@mui/material";
|
2024-01-20 10:27:21 +00:00
|
|
|
|
import HeaderFull from "@ui_kit/Header/HeaderFull";
|
|
|
|
|
import SectionWrapper from "@ui_kit/SectionWrapper";
|
2024-02-09 09:09:18 +00:00
|
|
|
|
import { FC, useEffect, useState } from "react";
|
2024-02-20 11:54:08 +00:00
|
|
|
|
import { PrePaymentModal } from "./PrePaymentModal";
|
2024-01-21 22:09:26 +00:00
|
|
|
|
import { FilterModal } from "@ui_kit/Modal/FilterModal/FilterModal";
|
2024-02-09 15:49:24 +00:00
|
|
|
|
|
2024-02-10 01:41:13 +00:00
|
|
|
|
import { resultApi } from "@api/result";
|
2024-02-10 14:02:56 +00:00
|
|
|
|
import { useResultStore } from "@root/results/store";
|
2024-03-25 10:32:09 +00:00
|
|
|
|
import { setResults } from "@root/results/actions";
|
2024-02-26 14:22:40 +00:00
|
|
|
|
import { useCurrentQuiz } from "@root/quizes/hooks";
|
2024-02-09 15:49:24 +00:00
|
|
|
|
import { useQuizStore } from "@root/quizes/store";
|
2024-02-20 11:54:08 +00:00
|
|
|
|
import { useUserStore } from "@root/user";
|
|
|
|
|
|
2024-02-21 21:16:10 +00:00
|
|
|
|
import CustomPagination from "@ui_kit/CustomPagination";
|
2024-03-25 10:32:09 +00:00
|
|
|
|
import { parseFilters } from "./helper";
|
|
|
|
|
import { QuizSettingsMenu } from "./QuizSettingsMenu";
|
|
|
|
|
import { AnswerList } from "./AnswerList";
|
2024-03-25 14:43:57 +00:00
|
|
|
|
import { useGetData } from "./useGetData";
|
2024-01-20 10:27:21 +00:00
|
|
|
|
|
2024-02-10 01:41:13 +00:00
|
|
|
|
const itemsTime = [
|
2024-02-10 14:02:56 +00:00
|
|
|
|
"За всё время",
|
2024-02-10 01:41:13 +00:00
|
|
|
|
"Сегодня",
|
|
|
|
|
"Вчера",
|
|
|
|
|
"Последние 7 дней",
|
|
|
|
|
"Последние 30 дней",
|
|
|
|
|
"Этот месяц",
|
|
|
|
|
];
|
2024-02-11 19:21:12 +00:00
|
|
|
|
const itemsNews = ["Все заявки", "Новые"];
|
2024-02-09 19:08:04 +00:00
|
|
|
|
|
2024-01-20 10:27:21 +00:00
|
|
|
|
export const QuizAnswersPage: FC = () => {
|
|
|
|
|
const theme = useTheme();
|
|
|
|
|
const isTablet = useMediaQuery(theme.breakpoints.down(1000));
|
2024-01-21 22:09:26 +00:00
|
|
|
|
const isMobile = useMediaQuery(theme.breakpoints.down(600));
|
2024-02-09 15:49:24 +00:00
|
|
|
|
|
2024-01-21 22:09:26 +00:00
|
|
|
|
const [filterModalOpen, setFilterModalOpen] = useState<boolean>(false);
|
2024-02-16 21:06:22 +00:00
|
|
|
|
const [page, setPage] = useState(1);
|
2024-02-10 01:41:13 +00:00
|
|
|
|
const [filterNew, setFilterNew] = useState<string>("Все заявки");
|
2024-02-10 14:02:56 +00:00
|
|
|
|
const [filterDate, setFilterDate] = useState<string>("За всё время");
|
2024-02-20 11:54:08 +00:00
|
|
|
|
const [prePaymentModalOpen, setPrePaymentModalOpen] =
|
|
|
|
|
useState<boolean>(false);
|
|
|
|
|
const { userAccount } = useUserStore();
|
|
|
|
|
|
2024-02-10 14:02:56 +00:00
|
|
|
|
const filterNewHC = (value: string) => {
|
2024-02-11 19:21:12 +00:00
|
|
|
|
setFilterNew(value);
|
|
|
|
|
};
|
2024-02-10 14:02:56 +00:00
|
|
|
|
const filterDateHC = (value: string) => {
|
2024-02-11 19:21:12 +00:00
|
|
|
|
setFilterDate(value);
|
|
|
|
|
};
|
2024-02-09 15:49:24 +00:00
|
|
|
|
|
2024-02-06 02:00:38 +00:00
|
|
|
|
const quiz = useCurrentQuiz();
|
2024-02-09 15:49:24 +00:00
|
|
|
|
const { editQuizId } = useQuizStore();
|
2024-02-16 21:19:35 +00:00
|
|
|
|
const { results, total_count } = useResultStore();
|
|
|
|
|
|
2024-02-16 21:06:22 +00:00
|
|
|
|
const countPagination = Math.ceil(total_count / 10);
|
2024-03-25 13:06:41 +00:00
|
|
|
|
|
2024-03-25 14:43:57 +00:00
|
|
|
|
useGetData(filterNew, filterDate);
|
2024-02-06 02:00:38 +00:00
|
|
|
|
|
2024-03-25 13:06:41 +00:00
|
|
|
|
useEffect(() => {
|
|
|
|
|
return setResults([]);
|
|
|
|
|
}, []);
|
|
|
|
|
|
2024-02-20 11:54:08 +00:00
|
|
|
|
useEffect(() => {
|
2024-02-21 10:26:06 +00:00
|
|
|
|
if (!userAccount) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (
|
|
|
|
|
!Object.keys(userAccount.privileges || {}).length ||
|
|
|
|
|
userAccount.privileges?.[""]?.amount === 0
|
|
|
|
|
) {
|
2024-02-20 11:54:08 +00:00
|
|
|
|
setPrePaymentModalOpen(true);
|
2024-02-21 10:26:06 +00:00
|
|
|
|
|
|
|
|
|
return;
|
2024-02-20 11:54:08 +00:00
|
|
|
|
}
|
2024-02-21 10:26:06 +00:00
|
|
|
|
|
|
|
|
|
setPrePaymentModalOpen(false);
|
2024-02-20 11:54:08 +00:00
|
|
|
|
}, [userAccount]);
|
|
|
|
|
|
2024-02-21 21:16:10 +00:00
|
|
|
|
const PaginationHC = async (e, value) => {
|
|
|
|
|
setPage(value);
|
|
|
|
|
const result = await resultApi.getList(
|
|
|
|
|
editQuizId,
|
|
|
|
|
value - 1,
|
2024-02-26 14:22:40 +00:00
|
|
|
|
parseFilters(filterNew, filterDate),
|
2024-02-21 21:16:10 +00:00
|
|
|
|
);
|
|
|
|
|
setResults(result);
|
|
|
|
|
};
|
|
|
|
|
|
2024-02-06 02:00:38 +00:00
|
|
|
|
if (quiz === undefined)
|
|
|
|
|
return (
|
|
|
|
|
<Skeleton sx={{ width: "100vw", height: "100vh", transform: "none" }} />
|
|
|
|
|
);
|
|
|
|
|
|
2024-01-20 10:27:21 +00:00
|
|
|
|
return (
|
|
|
|
|
<Box>
|
2024-03-19 15:58:20 +00:00
|
|
|
|
<HeaderFull isRequest={true} sx={{ position: "fixed", zIndex: 9 }} />
|
2024-01-21 22:09:26 +00:00
|
|
|
|
<SectionWrapper
|
2024-03-19 15:58:20 +00:00
|
|
|
|
sx={{ padding: isMobile ? "115px 16px" : "115px 20px 20px" }}
|
2024-01-21 22:09:26 +00:00
|
|
|
|
maxWidth="lg"
|
|
|
|
|
>
|
2024-03-25 10:32:09 +00:00
|
|
|
|
<QuizSettingsMenu
|
|
|
|
|
quiz={quiz}
|
|
|
|
|
total_count={total_count}
|
|
|
|
|
isTablet={isTablet}
|
|
|
|
|
filterNew={filterNew}
|
|
|
|
|
filterDate={filterDate}
|
|
|
|
|
setPrePaymentModalOpen={setPrePaymentModalOpen}
|
|
|
|
|
editQuizId={editQuizId}
|
|
|
|
|
page={page}
|
|
|
|
|
setFilterModalOpen={setFilterModalOpen}
|
|
|
|
|
setFilterNew={setFilterNew}
|
|
|
|
|
setFilterDate={setFilterDate}
|
|
|
|
|
filterNewHC={filterNewHC}
|
|
|
|
|
filterDateHC={filterDateHC}
|
|
|
|
|
itemsTime={itemsTime}
|
|
|
|
|
itemsNews={itemsNews}
|
|
|
|
|
/>
|
2024-02-21 21:16:10 +00:00
|
|
|
|
<CustomPagination
|
|
|
|
|
countPagination={countPagination}
|
2024-02-16 21:06:22 +00:00
|
|
|
|
page={page}
|
2024-02-21 21:16:10 +00:00
|
|
|
|
onChange={PaginationHC}
|
2024-02-16 21:06:22 +00:00
|
|
|
|
/>
|
2024-03-25 10:32:09 +00:00
|
|
|
|
<AnswerList
|
|
|
|
|
isTablet={isTablet}
|
|
|
|
|
results={results}
|
|
|
|
|
setPrePaymentModalOpen={setPrePaymentModalOpen}
|
|
|
|
|
/>
|
2024-01-20 10:27:21 +00:00
|
|
|
|
</SectionWrapper>
|
2024-01-21 22:09:26 +00:00
|
|
|
|
<FilterModal
|
|
|
|
|
open={filterModalOpen}
|
|
|
|
|
handleClose={() => setFilterModalOpen(false)}
|
2024-02-10 01:41:13 +00:00
|
|
|
|
filterNew={filterNew}
|
|
|
|
|
filterDate={filterDate}
|
2024-02-10 14:02:56 +00:00
|
|
|
|
setFilterNew={filterNewHC}
|
|
|
|
|
setFilterDate={filterDateHC}
|
|
|
|
|
itemsTime={itemsTime}
|
|
|
|
|
itemsNews={itemsNews}
|
2024-01-21 22:09:26 +00:00
|
|
|
|
/>
|
2024-02-20 11:54:08 +00:00
|
|
|
|
<PrePaymentModal
|
|
|
|
|
open={prePaymentModalOpen}
|
|
|
|
|
setOpen={setPrePaymentModalOpen}
|
|
|
|
|
/>
|
2024-01-20 10:27:21 +00:00
|
|
|
|
</Box>
|
|
|
|
|
);
|
|
|
|
|
};
|