2024-04-16 10:57:38 +00:00
|
|
|
|
import { useTheme } from "@mui/material";
|
|
|
|
|
import {
|
|
|
|
|
Dispatch,
|
|
|
|
|
FC,
|
|
|
|
|
SetStateAction,
|
|
|
|
|
useCallback,
|
|
|
|
|
useMemo,
|
|
|
|
|
useState,
|
|
|
|
|
} from "react";
|
2024-06-04 00:08:24 +00:00
|
|
|
|
import { ItemsSelectionView } from "./ItemsSelectionView/ItemsSelectionView";
|
|
|
|
|
import { ItemDetailsView } from "./ItemDetailsView/ItemDetailsView";
|
2024-06-05 15:29:46 +00:00
|
|
|
|
import { TagQuestionObject, TitleKeys, TQuestionEntity } from "../AmoCRMModal";
|
2024-04-16 10:57:38 +00:00
|
|
|
|
import Box from "@mui/material/Box";
|
2024-06-04 00:08:24 +00:00
|
|
|
|
import type { AllTypesQuestion } from "@model/questionTypes/shared"
|
2024-06-05 15:29:46 +00:00
|
|
|
|
import { getQuestionById } from "@/stores/questions/actions";
|
|
|
|
|
import { useQuestionsStore } from "@/stores/questions/store";
|
2024-04-12 15:07:37 +00:00
|
|
|
|
|
2024-06-04 00:08:24 +00:00
|
|
|
|
type Props = {
|
|
|
|
|
handlePrevStep: () => void;
|
|
|
|
|
handleNextStep: () => void;
|
|
|
|
|
questionEntity: TQuestionEntity;
|
|
|
|
|
setQuestionEntity: Dispatch<SetStateAction<TQuestionEntity>>;
|
|
|
|
|
questions: AllTypesQuestion[];
|
2024-04-12 15:07:37 +00:00
|
|
|
|
};
|
|
|
|
|
|
2024-06-04 00:08:24 +00:00
|
|
|
|
export const AmoStep7: FC<Props> = ({
|
|
|
|
|
handlePrevStep,
|
|
|
|
|
handleNextStep,
|
|
|
|
|
questionEntity,
|
|
|
|
|
setQuestionEntity,
|
|
|
|
|
questions,
|
2024-04-12 15:07:37 +00:00
|
|
|
|
}) => {
|
|
|
|
|
const theme = useTheme();
|
2024-04-16 10:57:38 +00:00
|
|
|
|
const [isSelection, setIsSelection] = useState<boolean>(false);
|
|
|
|
|
const [activeItem, setActiveItem] = useState<string | null>(null);
|
|
|
|
|
const [selectedValue, setSelectedValue] = useState<string | null>(null);
|
|
|
|
|
|
|
|
|
|
const handleAdd = useCallback(() => {
|
|
|
|
|
if (!activeItem || !selectedValue) return;
|
|
|
|
|
|
2024-06-04 00:08:24 +00:00
|
|
|
|
setQuestionEntity((prevState) => ({
|
2024-04-16 10:57:38 +00:00
|
|
|
|
...prevState,
|
2024-06-04 00:08:24 +00:00
|
|
|
|
[activeItem]: [...prevState[activeItem as TitleKeys], selectedValue],
|
2024-04-16 10:57:38 +00:00
|
|
|
|
}));
|
2024-06-04 00:08:24 +00:00
|
|
|
|
}, [activeItem, setQuestionEntity, selectedValue]);
|
2024-04-16 10:57:38 +00:00
|
|
|
|
|
2024-06-05 15:29:46 +00:00
|
|
|
|
const items: TagQuestionObject[] = useMemo(
|
|
|
|
|
() => Object.values(questions)
|
|
|
|
|
.filter(({ type }) =>
|
|
|
|
|
type !== "result"
|
|
|
|
|
&& type !== null)
|
|
|
|
|
.map(({ backendId, title }) => ({
|
|
|
|
|
backendId: backendId.toString(),
|
|
|
|
|
title
|
|
|
|
|
})),
|
2024-04-16 10:57:38 +00:00
|
|
|
|
[],
|
|
|
|
|
);
|
2024-06-05 15:29:46 +00:00
|
|
|
|
const translatedQuestionEntity = useMemo(() => {
|
|
|
|
|
const translated = {} as TQuestionEntity;
|
|
|
|
|
|
|
|
|
|
for (let key in questionEntity) {
|
|
|
|
|
// /* ... делать что-то с obj[key] ... */
|
|
|
|
|
translated[key] = questionEntity[key].map((id) =>
|
|
|
|
|
questions.find((q) => q.backendId === Number(id))?.title || id
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
console.log("questionEntity", questionEntity)
|
|
|
|
|
console.log("translated", translated)
|
|
|
|
|
return translated
|
|
|
|
|
},
|
|
|
|
|
[questionEntity],
|
|
|
|
|
)
|
2024-04-16 10:57:38 +00:00
|
|
|
|
|
2024-04-12 15:07:37 +00:00
|
|
|
|
return (
|
|
|
|
|
<Box
|
|
|
|
|
sx={{
|
|
|
|
|
display: "flex",
|
|
|
|
|
flexDirection: "column",
|
|
|
|
|
height: "100%",
|
|
|
|
|
flexGrow: 1,
|
|
|
|
|
}}
|
|
|
|
|
>
|
2024-04-16 10:57:38 +00:00
|
|
|
|
{isSelection ? (
|
|
|
|
|
<ItemsSelectionView
|
|
|
|
|
items={items}
|
2024-06-05 15:29:46 +00:00
|
|
|
|
type="typeQuestions"
|
2024-04-16 10:57:38 +00:00
|
|
|
|
selectedValue={selectedValue}
|
|
|
|
|
setSelectedValue={setSelectedValue}
|
|
|
|
|
onSmallBtnClick={() => {
|
|
|
|
|
setActiveItem(null);
|
|
|
|
|
setIsSelection(false);
|
|
|
|
|
}}
|
|
|
|
|
onLargeBtnClick={() => {
|
|
|
|
|
handleAdd();
|
|
|
|
|
setActiveItem(null);
|
|
|
|
|
setIsSelection(false);
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
) : (
|
2024-06-04 00:08:24 +00:00
|
|
|
|
<ItemDetailsView
|
2024-04-16 10:57:38 +00:00
|
|
|
|
setIsSelection={setIsSelection}
|
2024-06-04 00:08:24 +00:00
|
|
|
|
handleLargeBtn={handleNextStep}
|
|
|
|
|
handleSmallBtn={handlePrevStep}
|
2024-06-05 15:29:46 +00:00
|
|
|
|
questionEntity={translatedQuestionEntity}
|
2024-04-16 10:57:38 +00:00
|
|
|
|
setActiveItem={setActiveItem}
|
2024-04-12 15:07:37 +00:00
|
|
|
|
/>
|
2024-04-16 10:57:38 +00:00
|
|
|
|
)}
|
2024-04-12 15:07:37 +00:00
|
|
|
|
</Box>
|
|
|
|
|
);
|
|
|
|
|
};
|