"use client"; import { getNextQuizWinnners, getQuizWinnersById } from "@/api/queries"; import { Question } from "@/models/quizQuestions.model"; import { Datum, IQuizQuestionsWinners, ISearchNetije, } from "@/models/quizQuestionsWinners.model"; import { notFound } from "next/navigation"; import React, { useEffect, useState } from "react"; import Loader from "../Loader"; import { useQuizResults, useResultsLoading } from "@/store/store"; const padding = "py-4"; interface IProps { id: string; tapgyr: number; questions: Question[]; } const QuizTapgyrWinners = ({ id, tapgyr, questions }: IProps) => { const [data, setData] = useState([]); const { error, resultData } = useQuizResults(); const [loading, setLoading] = useState(false); const searchLoading = useResultsLoading((state) => state.loading); const [total, setTotal] = useState(0); const [nextPageQueries, setQueries] = useState<{ limit: number; offset: number; }>({ limit: 0, offset: 0, }); async function getData(next?: boolean) { if (next) { const res = await getNextQuizWinnners( Number(id), nextPageQueries.limit, nextPageQueries.offset, tapgyr ); if (res) { setQueries({ limit: res.meta.per_page, offset: nextPageQueries.offset + res.meta.per_page, }); setData([...(data as Datum[]), ...res.data]); } } else { setLoading(true); const res = await getQuizWinnersById(Number(id), tapgyr); if (res) { setTotal(res.meta.total); setQueries({ limit: res.meta.per_page, offset: res.meta.per_page, }); setData(res.data); setLoading(false); } else { notFound(); } } } useEffect(() => { if (!resultData.length && !error) { getData(); } else if (resultData.length) { setData(resultData); setTotal(0); } else if (error) { setTotal(0); setData([]); } }, [resultData]); return (

Gepleşik {tapgyr}

{data.length > 0 && !loading && !searchLoading ? ( {((data[0] as Datum).client_id || (data[0] as ISearchNetije).place) && ( )} {data[0].phone && ( )} {((data[0] as Datum).answers?.length > 0 || (data[0] as ISearchNetije).tapgyr_breakdown?.length) && ( )} {((data[0] as Datum).correct_answers_time || (data[0] as ISearchNetije).total_nobat) && ( )} {((data[0] as Datum).total_score_of_client || (data[0] as ISearchNetije).total_score) && ( )} {data.map((winner, id) => ( {/* Yeri */} {/* Phone number */} {/* Jogap berish nobaty */} {/* Answer time */} {/* Total score */} {/* Mobile jogab berish nobatlary */} ))}
Ýeri Telefon beligisi Nobatlaryň jemi Utuklaryň jemi
{id > 0 && (winner as Datum).correct_answers_time === (data[id - 1] as Datum).correct_answers_time ? id : (winner as ISearchNetije).tapgyr_breakdown ? (winner as ISearchNetije).tapgyr_breakdown.find( (item) => item.tapgyr === tapgyr )?.tapgyr_place : id + 1} +{winner.phone ? winner.phone : "-"}
{(winner as Datum).correct_answers_time ? (winner as Datum).correct_answers_time : (winner as ISearchNetije).tapgyr_breakdown.find( (item) => item.tapgyr === tapgyr )?.tapgyr_total_nobat ? (winner as ISearchNetije).tapgyr_breakdown.find( (item) => item.tapgyr === tapgyr )?.tapgyr_total_nobat : "-"}
{(winner as Datum).total_score_of_client ? (winner as Datum).total_score_of_client : (winner as ISearchNetije).tapgyr_breakdown.find( (item) => item.tapgyr === tapgyr )?.tapgyr_total_score ? (winner as ISearchNetije).tapgyr_breakdown.find( (item) => item.tapgyr === tapgyr )?.tapgyr_total_score : "-"}
Jogap beriş nobatlary
{questions.map((question) => { const matchingAnswer = (winner as Datum).answers?.find( (answer) => answer.question_id === question.id && answer.score > 0 ) || (winner as Datum).answers?.find( (answer) => answer.question_id === question.id ) || ((winner as ISearchNetije).tapgyr_breakdown && (winner as ISearchNetije).tapgyr_breakdown .find((step) => step.tapgyr === tapgyr) ?.answers.find( (answer) => answer.question_id === question.id && answer.score > 0 )) || ((winner as ISearchNetije).tapgyr_breakdown && (winner as ISearchNetije).tapgyr_breakdown .find((step) => step.tapgyr === tapgyr) ?.answers.find( (answer) => answer.question_id === question.id )); return ( {matchingAnswer && matchingAnswer.score !== 0 ? matchingAnswer.serial_number_for_correct : matchingAnswer && matchingAnswer?.score === 0 ? "X" : "0"} ); })}
) : !error ? ( ) : (
{error}
)} {data.length < total && !error && ( )}
); }; export default QuizTapgyrWinners;