import { useEffect } from "react";
import {
  Box,
  Typography,
  RadioGroup,
  FormControlLabel,
  Radio,
  useTheme,
} from "@mui/material";

import { useQuizViewStore, updateAnswer } from "@root/quizView";

import RadioCheck from "@ui_kit/RadioCheck";
import RadioIcon from "@ui_kit/RadioIcon";

import type { QuizQuestionVarImg } from "../../../model/questionTypes/varimg";

type VarimgProps = {
  currentQuestion: QuizQuestionVarImg;
};

export const Varimg = ({ currentQuestion }: VarimgProps) => {
  const { answers } = useQuizViewStore();
  const theme = useTheme();
  const { answer } = answers.find(({ questionId }) => questionId === currentQuestion.content.id) ?? {};
  const variant = currentQuestion.content.variants.find(({ id }) => answer === id);

  useEffect(() => {
    if (!answer) {
      updateAnswer(currentQuestion.content.id, currentQuestion.content.variants[0].id);
    }
  }, []);

  return (
    <Box>
      <Typography variant="h5">{currentQuestion.title}</Typography>
      <Box sx={{ display: "flex", marginTop: "20px", }}>
        <RadioGroup
          name={currentQuestion.id}
          value={currentQuestion.content.variants.findIndex(({ id }) => answer === id)}
          onChange={({ target }) =>
            updateAnswer(
              currentQuestion.content.id,
              currentQuestion.content.variants[Number(target.value)].id
            )
          }
          sx={{
            display: "flex",
            flexWrap: "wrap",
            flexDirection: "row",
            justifyContent: "space-between",
            flexBasis: "100%",
          }}
        >
          <Box sx={{ display: "flex", flexDirection: "column", width: "100%" }}>
            {currentQuestion.content.variants.map(({ id, answer }, index) => (
              <FormControlLabel
                key={id}
                sx={{
                  marginBottom: "15px",
                  borderRadius: "5px",
                  padding: "15px",
                  color: "#4D4D4D",
                  border: `1px solid ${theme.palette.grey2.main}`,
                  display: "flex",
                }}
                value={index}
                control={
                  <Radio checkedIcon={<RadioCheck />} icon={<RadioIcon />} />
                }
                label={answer}
              />
            ))}
          </Box>
        </RadioGroup>
        {(variant?.extendedText || currentQuestion.content.back) && (
          <Box sx={{ maxWidth: "450px", width: "100%", height: "450px", border: "1px solid #E3E3E3", borderRadius: "12px", overflow: "hidden", }}>
            <img
              src={answer ? variant?.extendedText : currentQuestion.content.back}
              style={{ width: "100%", height: "100%", objectFit: "cover" }}
              alt=""
            />
          </Box>
        )}
      </Box>
    </Box>
  );
};
