import { useAddAnswer } from "@/utils/hooks/useAddAnswer";
import type { QuizQuestionVarImg, QuizQuestionVariant } from "@frontend/squzanswerer";
import { Box, Typography, useMediaQuery, useTheme } from "@mui/material";
import { updateQuestion } from "@root/questions/actions";
import CustomCheckbox from "@ui_kit/CustomCheckbox";
import CustomTextField from "@ui_kit/CustomTextField";
import { memo } from "react";

type SettingOptionsAndPictProps = {
  questionId: string;
  replText: string;
  isRequired: boolean;
  isLargeCheck: boolean;
  isOwn: boolean;
  ownPlaceholder?: boolean;
  isMulti?: boolean;
  question: QuizQuestionVarImg;
};

const SettingOptionsAndPict = memo<SettingOptionsAndPictProps>(function ({ question, questionId, ownPlaceholder, isMulti, isLargeCheck, replText, isRequired, isOwn }) {
  const theme = useTheme();
  const { switchOwn } = useAddAnswer();

  const isWrappColumn = useMediaQuery(theme.breakpoints.down(980));
  const isFigmaTablte = useMediaQuery(theme.breakpoints.down(990));
  const isTablet = useMediaQuery(theme.breakpoints.down(985));
  const isMobile = useMediaQuery(theme.breakpoints.down(680));


  const setReplText = (replText: string) => {
    updateQuestion(questionId, (question) => {
      if (question.type !== "varimg") return;

      question.content.replText = replText;
    });
  };

  return (
    <>
      <Box
        sx={{
          display: "flex",
          justifyContent: "space-between",
          flexDirection: isWrappColumn ? "column" : "none",
          pb: "20px",
          pl: "20px",
          pt: isTablet ? "5px" : "0px",
        }}
      >
         <Box
          sx={{
            pt: "20px",
            display: "flex",
            flexDirection: "column",
            gap: "14px",
            maxWidth: isFigmaTablte ? "297px" : "360px",
            width: "100%",
          }}
        >
          <Typography
            sx={{
              height: isMobile ? "18px" : "auto",
              fontWeight: "500",
              fontSize: "18px",
              color: " #4D4D4D",
            }}
          >
            Настройки ответов
          </Typography>
          <CustomCheckbox
            dataCy="checkbox-own-answer"
            sx={{ mr: isMobile ? "0px" : "16px" }}
            label={'Вариант "свой ответ"'}
            checked={isOwn}
            handleChange={({ target }) => {
              switchOwn({ question, checked: target.checked })
            }}
          />
          <CustomCheckbox
            dataCy="checkbox-long-text-answer"
            sx={{ mr: isMobile ? "0px" : "16px" }}
            label={"Многострочный ответ"}
            checked={isLargeCheck}
            handleChange={({ target }) => {
              updateQuestion<QuizQuestionVariant>(questionId, (question) => {
                question.content.largeCheck = target.checked;
              });
            }}
          />
          {!isWrappColumn && (
            <Box sx={{ mt: isMobile ? "11px" : "6px", width: "100%" }}>
              <Typography
                sx={{
                  height: isMobile ? "18px" : "auto",
                  fontWeight: "500",
                  fontSize: "18px",
                  color: " #4D4D4D",
                  mb: "14px",
                }}
              >
                Текст-заглушка на картинке
              </Typography>
              <CustomTextField
                sx={{
                  maxWidth: "330px",
                  width: "100%",
                  mr: isMobile ? "0px" : "16px",
                }}
                maxLength={60}
                placeholder={"Пример текста"}
                value={replText}
                onChange={({ target }) => setReplText(target.value)}
              />
            </Box>
          )}
        </Box>
        <Box
          sx={{
            pt: isMobile ? "0px" : "20px",
            pr: isFigmaTablte ? "19px" : "20px",
            display: "flex",
            flexDirection: "column",
            gap: isMobile ? "13px" : "14px",
            width: isMobile ? "auto" : "100%",
          }}
        >
          <Typography
            sx={{
              height: isMobile ? "18px" : "auto",
              fontWeight: "500",
              fontSize: "18px",
              color: " #4D4D4D",
              mt: isMobile ? "10px" : ""
            }}
          >
            Настройки вопросов
          </Typography>
          <CustomCheckbox
            dataCy="checkbox-optional-question"
            sx={{ mr: isMobile ? "0px" : "16px" }}
            label={"Необязательный вопрос"}
            checked={!isRequired}
            handleChange={({ target }) =>
              updateQuestion<QuizQuestionVarImg>(questionId, (question) => {
                if (question.type !== "varimg") return;

                question.content.required = !target.checked;
              })
            }
          />
          {isWrappColumn && (
            <Box
              sx={{
                pt: "20px",
                display: "flex",
                flexDirection: "column",
                gap: "14px",
                maxWidth: isFigmaTablte ? "297px" : "360px",
                width: "100%",
              }}
            >
              <Typography
                sx={{
                  height: isMobile ? "18px" : "auto",
                  fontWeight: "500",
                  fontSize: "18px",
                  color: " #4D4D4D",
                }}
              >
                Текст-заглушка на картинке
              </Typography>
              <CustomTextField
                sx={{ maxWidth: "360px", width: "100%" }}
                placeholder={"Пример текста"}
                value={replText}
                maxLength={60}
                onChange={({ target }) => setReplText(target.value)}
              />
            </Box>
          )}
        </Box>
      </Box>
    </>
  );
});

SettingOptionsAndPict.displayName = "SettingOptionsAndPict";

export default SettingOptionsAndPict;
