"use client"; import { Queries } from "@/api/queries"; import { v4 } from "uuid"; import { useState, useEffect, useContext } from "react"; import { IQuizQuestionsWinners } from "@/models/quizQuestionsWinners.model"; import QuizContext from "@/context/QuizContext"; import { useQuizSearchActive } from "@/store/store"; interface Message { answer: string; score: number; date: string; serial_number: number; serial_number_for_correct: number; starred_src: string; quiz_id: number; question_id: number; } interface Winner { total_score_of_client: string; correct_answers_time: string; client_id: number; client: { id: number; phone: string; answers: { id: number; question_id: number; score: number; serial_number_for_correct: number; client_id: number; }[]; }; } interface IProps { quizId: number; quizFinished: boolean; smsNumber: string; } const QuizWinnerTable = ({ quizId, quizFinished, smsNumber }: IProps) => { const [winnersData, setWinnersData] = useState(); const { questionsData } = useContext(QuizContext).quizQuestionsContext; const { quizSearchData } = useContext(QuizContext).quizSearchContext; const { active } = useQuizSearchActive(); useEffect(() => { if (!active) { Queries.getQuizWinners(quizId).then((res) => { setWinnersData(res); }); } else if (active) { setWinnersData(undefined); } }, [quizId, active]); return winnersData?.data.length !== 0 ? (

Bäsleşigiň jemi

{/* Desktop table */}
{/* Table Head */}
{winnersData?.data[0].client_id || quizSearchData?.data ? (
Ýeri
) : null} {winnersData?.data[0].client.phone || quizSearchData?.data ? (
Telefon beligisi
) : null} {winnersData?.data[0].client.answers.length || quizSearchData?.data ? (
Jogap beriş nobatlary
) : null} {winnersData?.data[0].total_score_of_client || quizSearchData?.data ? (
Nobatlaryň jemi
) : null} {winnersData?.data[0].total_score_of_client || quizSearchData?.data ? (
Utuklaryň jemi
) : null}
{/* Table Body */}
{winnersData ? winnersData?.data.map((winner, id) => (
{id > 0 && winner.correct_answers_time === winnersData.data[id - 1].correct_answers_time ? id : id + 1}
{winnersData.data[0].client.phone ? (
+{winner.client.phone}
) : null} {winnersData.data[0].client.answers.length !== 0 ? (
{questionsData ? questionsData.map((question) => { const matchingAnswer = winner.client.answers.find( (answer) => answer.question_id === question.id && answer.score > 0 ) || winner.client.answers.find( (answer) => answer.question_id === question.id ); return ( {matchingAnswer && matchingAnswer.score !== 0 ? matchingAnswer.serial_number_for_correct : matchingAnswer && matchingAnswer?.score === 0 ? "X" : "0"} ); }) : null}
) : null} {winnersData.data[0].total_score_of_client ? (
{winner.correct_answers_time}
) : null} {winnersData.data[0].total_score_of_client ? (
{winner.total_score_of_client}
) : null}
)) : quizSearchData && (
{/* Place of the client */}
{quizSearchData.result.place}
{/* Client phone number */}
+ {Object.keys(quizSearchData.data).map( (questionId, i) => i === 0 && quizSearchData.data[questionId].answers[0].client )}
{/* Serial number answer to questions */}
{Object.keys(quizSearchData.data) .map((quistionId) => quizSearchData.data[quistionId]) .map((question) => { const matchingAnswer = question.answers[0]; return ( {matchingAnswer && matchingAnswer.score !== 0 ? matchingAnswer.serial_number_for_correct : matchingAnswer && matchingAnswer?.score === 0 ? "X" : "0"} ); })}
{quizSearchData.result.total_serial}
{quizSearchData.result.total_score}
)}
{/* Mobile table */}
{/* Table Head */}
{winnersData?.data[0].client_id || quizSearchData?.data ? (
Ýeri
) : null} {winnersData?.data[0].client.phone || quizSearchData?.data ? (
Telefon beligisi
) : null} {winnersData?.data[0].total_score_of_client || quizSearchData?.data ? (
Nobatlaryň jemi
) : null} {winnersData?.data[0].total_score_of_client || quizSearchData?.data ? (
Utuklaryň jemi
) : null}
{/* Table Body */}
{winnersData ? winnersData?.data.map((winner, id) => (
{id + 1}
{winnersData.data[0].client.phone ? (
+{winner.client.phone}
) : null} {winnersData.data[0].total_score_of_client ? (
{winner.correct_answers_time}
) : null} {winnersData.data[0].total_score_of_client ? (
{winner.total_score_of_client}
) : null}
{winnersData?.data[0].client.answers.length !== 0 ? (
Jogap beriş nobatlary:
) : null} {winnersData.data[0].client.answers.length !== 0 ? (
{questionsData ? questionsData.map((question) => { const matchingAnswer = winner.client.answers.find( (answer) => answer.question_id === question.id && answer.score > 0 ) || winner.client.answers.find( (answer) => answer.question_id === question.id ); return ( {matchingAnswer && matchingAnswer.score !== 0 ? matchingAnswer.serial_number_for_correct : matchingAnswer && matchingAnswer?.score === 0 ? "X" : "0"} ); }) : null}
) : null}
)) : quizSearchData && (
{quizSearchData.result.place}
+ {Object.keys(quizSearchData.data).map( (questionId, i) => i === 0 && quizSearchData.data[questionId].answers[0] .client )}
{quizSearchData.result.total_serial}
{quizSearchData.result.total_score}
Jogap beriş nobatlary:
{Object.keys(quizSearchData.data) .map( (quistionId) => quizSearchData.data[quistionId] ) .map((question) => { const matchingAnswer = question.answers[0]; return ( {matchingAnswer && matchingAnswer.score !== 0 ? matchingAnswer.serial_number_for_correct : matchingAnswer && matchingAnswer?.score === 0 ? "X" : "0"} ); })}
)}
{/* Rules block */}

Belgileriň düşündirilişi

100
Bäsleşikde gazanylan utuklaryň jemi
100
Soraga jogaplaryň tertip belgisiniň jemi
1
Dogry jogaplara näçinji bolup jogap berdi
X
Soraga nädogry jogap berdi
0
Soraga jogap ugratmady
) : null; }; export default QuizWinnerTable;