2025-03-07 10:18:56 +00:00
|
|
|
"use client";
|
|
|
|
|
import { Queries } from "@/api/queries";
|
|
|
|
|
import QuizHeader from "@/components/quiz/QuizHeader";
|
2025-03-14 10:46:10 +00:00
|
|
|
import QuizResultsSearch from "@/components/quiz/QuizResultsSearch";
|
2025-03-20 10:51:51 +00:00
|
|
|
import QuizResultsTabs from "@/components/quiz/QuizResultsTabs";
|
2025-03-07 10:18:56 +00:00
|
|
|
import QuizTapgyrResults from "@/components/quiz/QuizTapgyrResults";
|
|
|
|
|
import QuizTapgyrWinners from "@/components/quiz/QuizTapgyrWinners";
|
|
|
|
|
import { Data } from "@/models/quizQuestions.model";
|
2025-03-20 10:51:51 +00:00
|
|
|
import { useQuizResults } from "@/store/store";
|
2025-03-13 16:21:41 +00:00
|
|
|
import { notFound } from "next/navigation";
|
2025-03-07 10:18:56 +00:00
|
|
|
import React, { useEffect, useState } from "react";
|
|
|
|
|
|
|
|
|
|
interface IParams {
|
|
|
|
|
params: {
|
|
|
|
|
quiz_id: string;
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const Page = ({ params }: IParams) => {
|
|
|
|
|
const [data, setData] = useState<Data>();
|
2025-03-20 10:51:51 +00:00
|
|
|
const [tab, setTab] = useState<number | string>(0);
|
2025-03-20 11:55:08 +00:00
|
|
|
const [loading, setLoading] = useState<boolean>(false);
|
2025-03-20 10:51:51 +00:00
|
|
|
const { resultData, error } = useQuizResults();
|
2025-03-07 10:18:56 +00:00
|
|
|
|
|
|
|
|
useEffect(() => {
|
2025-04-14 11:14:44 +00:00
|
|
|
const local_info = sessionStorage.getItem("TURKMENTV_QUIZ_RESULTS");
|
2025-03-20 10:51:51 +00:00
|
|
|
if (!resultData.length && !error) {
|
2025-03-20 11:55:08 +00:00
|
|
|
setLoading(true);
|
2025-03-20 10:51:51 +00:00
|
|
|
Queries.getQuizById(params.quiz_id)
|
2025-03-20 11:55:08 +00:00
|
|
|
.then((res) => {
|
|
|
|
|
setData(res.data);
|
2025-04-09 12:56:33 +00:00
|
|
|
if (res.data.steps?.length) {
|
2025-04-14 11:14:44 +00:00
|
|
|
if (local_info) {
|
|
|
|
|
if (
|
|
|
|
|
JSON.parse(local_info)?.tab &&
|
|
|
|
|
JSON.parse(local_info)?.uuid === res.data.uuid
|
|
|
|
|
) {
|
|
|
|
|
setTab(JSON.parse(local_info)?.tab);
|
|
|
|
|
} else {
|
|
|
|
|
setTab(res.data?.steps[res.data?.steps.length - 1].tapgyr - 1);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
setTab(res.data?.steps[res.data?.steps.length - 1].tapgyr - 1);
|
|
|
|
|
}
|
2025-04-09 12:56:33 +00:00
|
|
|
}
|
2025-03-20 11:55:08 +00:00
|
|
|
setLoading(false);
|
|
|
|
|
})
|
|
|
|
|
.catch(() => {
|
|
|
|
|
setLoading(false);
|
|
|
|
|
notFound();
|
|
|
|
|
});
|
2025-03-20 10:51:51 +00:00
|
|
|
}
|
|
|
|
|
}, [resultData, error]);
|
2025-03-07 10:18:56 +00:00
|
|
|
|
2025-04-14 11:14:44 +00:00
|
|
|
useEffect(() => {
|
|
|
|
|
if (data) {
|
|
|
|
|
sessionStorage.setItem(
|
|
|
|
|
"TURKMENTV_QUIZ_RESULTS",
|
|
|
|
|
JSON.stringify({
|
|
|
|
|
uuid: data?.uuid,
|
|
|
|
|
tab: tab,
|
|
|
|
|
})
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}, [data, tab]);
|
|
|
|
|
|
2025-03-07 10:18:56 +00:00
|
|
|
return (
|
|
|
|
|
<section className="container py-[40px]">
|
|
|
|
|
<div className="flex flex-col w-full py-[40px] gap-[80px]">
|
|
|
|
|
<QuizHeader data={data} />
|
2025-03-14 10:46:10 +00:00
|
|
|
<QuizResultsSearch id={params.quiz_id} />
|
2025-03-20 10:51:51 +00:00
|
|
|
<QuizResultsTabs
|
|
|
|
|
steps={data?.steps ? data?.steps : []}
|
|
|
|
|
tab={tab}
|
|
|
|
|
setStep={setTab}
|
2025-03-20 11:55:08 +00:00
|
|
|
loading={loading}
|
2025-03-07 10:18:56 +00:00
|
|
|
/>
|
2025-03-20 10:51:51 +00:00
|
|
|
{tab === "results" && (
|
|
|
|
|
<QuizTapgyrResults
|
|
|
|
|
id={params.quiz_id}
|
|
|
|
|
steps={
|
|
|
|
|
data?.steps ? data?.steps?.map((item) => String(item.tapgyr)) : []
|
|
|
|
|
}
|
|
|
|
|
/>
|
|
|
|
|
)}
|
2025-03-07 10:18:56 +00:00
|
|
|
{data?.has_steps &&
|
|
|
|
|
data.steps &&
|
|
|
|
|
data.steps?.length > 0 &&
|
2025-03-20 10:51:51 +00:00
|
|
|
tab !== "results" && (
|
2025-03-13 16:21:41 +00:00
|
|
|
<QuizTapgyrWinners
|
2025-03-20 10:51:51 +00:00
|
|
|
key={data.steps[Number(tab)].tapgyr}
|
2025-03-13 16:21:41 +00:00
|
|
|
id={params.quiz_id}
|
2025-03-20 10:51:51 +00:00
|
|
|
tapgyr={data.steps[Number(tab)].tapgyr}
|
|
|
|
|
questions={data.steps[Number(tab)].questions}
|
2025-03-13 16:21:41 +00:00
|
|
|
/>
|
2025-03-20 10:51:51 +00:00
|
|
|
)}
|
2025-03-07 10:18:56 +00:00
|
|
|
</div>
|
|
|
|
|
</section>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default Page;
|