239 lines
7.1 KiB
TypeScript
239 lines
7.1 KiB
TypeScript
import { Col, Row } from "reactstrap";
|
|
import ValidationField from "../../../../Components/ValidationField/ValidationField";
|
|
import { useGetAllGrade } from "../../../../api/grade";
|
|
import { useGetAllSubject } from "../../../../api/subject";
|
|
import { useGetAllUnit } from "../../../../api/unit";
|
|
import { useGetAllCurriculum } from "../../../../api/curriculum";
|
|
import { useGetAllLesson } from "../../../../api/lesson";
|
|
import { useFormikContext } from "formik";
|
|
import { PackageInitialValues } from "../../../../types/Package";
|
|
import { useValidationValidationParamState } from "../../../../Components/ValidationField/state/ValidationValidationParamState";
|
|
import { useEffect } from "react";
|
|
import ConfigurationField from "../../Field/ConfigurationField";
|
|
import FieldGroup from "../../Field/FieldGroup";
|
|
|
|
const Form = () => {
|
|
const { values, setFieldValue } = useFormikContext<PackageInitialValues>();
|
|
|
|
const { ValidationParamState } = useValidationValidationParamState();
|
|
const {
|
|
GradeName, GradeCurrentPage,
|
|
SubjectName, SubjectCurrentPage,
|
|
UnitName, UnitCurrentPage,
|
|
CurriculumName, CurriculumCurrentPage,
|
|
LessonName, LessonCurrentPage
|
|
|
|
|
|
} = ValidationParamState;
|
|
|
|
const { curriculums_ids, grade_id, subjects_ids, units_ids, lessons_ids } = values;
|
|
|
|
|
|
|
|
|
|
/// grade_id
|
|
const GradeDisabled = !!grade_id;
|
|
const { data: Grade, isLoading: isLoadingGrade } = useGetAllGrade({
|
|
name: GradeName,
|
|
page: GradeCurrentPage
|
|
});
|
|
const GradeOption = Grade?.data ?? []
|
|
const canChangeGradePage = !!Grade?.links?.next;
|
|
const GradePage = Grade?.meta?.currentPage;
|
|
|
|
|
|
/// subjects_ids
|
|
const SubjectDisabled = !!subjects_ids && subjects_ids?.length > 0;
|
|
const { data: Subject, isLoading: isLoadingSubject } = useGetAllSubject({
|
|
grade_id: grade_id,
|
|
name: SubjectName,
|
|
page: SubjectCurrentPage
|
|
}, { enabled: GradeDisabled });
|
|
const SubjectOption = Subject?.data ?? []
|
|
const canChangeSubjectPage = !!Subject?.links?.next;
|
|
const SubjectPage = Subject?.meta?.currentPage;
|
|
|
|
/// units_ids
|
|
const UnitDisabled = !!units_ids && units_ids?.length > 0;
|
|
const { data: Unit, isLoading: isLoadingUnit } = useGetAllUnit({
|
|
subjects_ids: subjects_ids,
|
|
name: UnitName,
|
|
page: UnitCurrentPage
|
|
}, { enabled: SubjectDisabled });
|
|
const UnitOption = Unit?.data ?? []
|
|
const canChangeUnitPage = !!Unit?.links?.next;
|
|
const UnitPage = Unit?.meta?.currentPage;
|
|
|
|
/// curriculums_ids
|
|
const CurriculumDisabled = !!curriculums_ids && curriculums_ids?.length > 0;
|
|
const { data: Curriculum, isLoading: isLoadingCurriculum } = useGetAllCurriculum({
|
|
units_ids: units_ids,
|
|
name: CurriculumName,
|
|
page: CurriculumCurrentPage
|
|
}, { enabled: UnitDisabled });
|
|
const CurriculumOption = Curriculum?.data ?? []
|
|
const canChangeCurriculumPage = !!Curriculum?.links?.next;
|
|
const CurriculumPage = Curriculum?.meta?.currentPage;
|
|
|
|
/// lessons_ids
|
|
const { data: Lesson, isLoading: isLoadingLesson } = useGetAllLesson({
|
|
curriculums_ids: curriculums_ids,
|
|
name: LessonName,
|
|
page: LessonCurrentPage
|
|
}, { enabled: CurriculumDisabled });
|
|
const LessonOption = Lesson?.data ?? []
|
|
const canChangeLessonPage = !!Lesson?.links?.next;
|
|
const LessonPage = Lesson?.meta?.currentPage;
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
const GradeChildren = (subjects_ids && subjects_ids?.length > 0 || units_ids && units_ids?.length > 0 || curriculums_ids && curriculums_ids?.length > 0 || lessons_ids && lessons_ids?.length > 0);
|
|
|
|
if (!grade_id && GradeChildren) {
|
|
setFieldValue("subjects_ids", []);
|
|
setFieldValue("units_ids", []);
|
|
setFieldValue("curriculums_ids", []);
|
|
setFieldValue("lessons_ids", []);
|
|
return;
|
|
}
|
|
console.log(1);
|
|
|
|
const SubjectChildren = (units_ids && units_ids?.length > 0 || curriculums_ids && curriculums_ids?.length > 0 || lessons_ids && lessons_ids?.length > 0)
|
|
console.log( subjects_ids && subjects_ids?.length < 1 && SubjectChildren);
|
|
|
|
if (subjects_ids && subjects_ids?.length < 1 && SubjectChildren) {
|
|
console.log(1);
|
|
|
|
setFieldValue("units_ids", []);
|
|
setFieldValue("curriculums_ids", []);
|
|
setFieldValue("lessons_ids", []);
|
|
return;
|
|
}
|
|
const UnitChildren = (curriculums_ids && curriculums_ids?.length > 0 || lessons_ids && lessons_ids?.length > 0)
|
|
if (units_ids && units_ids?.length < 1 && UnitChildren) {
|
|
setFieldValue("curriculums_ids", []);
|
|
setFieldValue("lessons_ids", []);
|
|
return;
|
|
}
|
|
const CurriculumChildren = (lessons_ids && lessons_ids?.length > 0)
|
|
if (curriculums_ids && curriculums_ids?.length < 1 && CurriculumChildren) {
|
|
setFieldValue("lessons_ids", []);
|
|
return;
|
|
}
|
|
}, [grade_id, subjects_ids, units_ids, curriculums_ids])
|
|
|
|
|
|
return (
|
|
<Row className="w-100">
|
|
<Col>
|
|
<ValidationField placeholder="name" label="name" name="name" />
|
|
<ValidationField placeholder="price" label="price" name="price" type="number" />
|
|
<FieldGroup array_name='configuration' title='configuration' />
|
|
</Col>
|
|
<Col>
|
|
|
|
{/*
|
|
grade_id
|
|
*/}
|
|
<ValidationField
|
|
searchBy="GradeName"
|
|
name="grade_id"
|
|
label="grade"
|
|
type="Search"
|
|
option={GradeOption}
|
|
isLoading={isLoadingGrade}
|
|
canChangePage={canChangeGradePage}
|
|
PageName={"GradeCurrentPage"}
|
|
page={GradePage}
|
|
|
|
/>
|
|
|
|
{/*
|
|
subjects_ids
|
|
*/}
|
|
|
|
<ValidationField
|
|
searchBy="SubjectName"
|
|
name="subjects_ids"
|
|
label="subject"
|
|
type="Search"
|
|
option={SubjectOption}
|
|
isMulti
|
|
isLoading={isLoadingSubject}
|
|
canChangePage={canChangeSubjectPage}
|
|
PageName={"SubjectCurrentPage"}
|
|
page={SubjectPage}
|
|
disabled={!GradeDisabled}
|
|
|
|
/>
|
|
|
|
|
|
{/*
|
|
units_ids
|
|
*/}
|
|
|
|
<ValidationField
|
|
searchBy="UnitName"
|
|
name="units_ids"
|
|
label="unit"
|
|
type="Search"
|
|
option={UnitOption}
|
|
isMulti
|
|
isLoading={isLoadingUnit}
|
|
canChangePage={canChangeUnitPage}
|
|
PageName={"UnitCurrentPage"}
|
|
page={UnitPage}
|
|
disabled={!SubjectDisabled}
|
|
|
|
/>
|
|
|
|
|
|
{/*
|
|
curriculums_ids
|
|
*/}
|
|
|
|
<ValidationField
|
|
searchBy="CurriculumName"
|
|
name="curriculums_ids"
|
|
label="curriculum"
|
|
type="Search"
|
|
option={CurriculumOption}
|
|
isMulti
|
|
isLoading={isLoadingCurriculum}
|
|
canChangePage={canChangeCurriculumPage}
|
|
PageName={"CurriculumCurrentPage"}
|
|
page={CurriculumPage}
|
|
disabled={!UnitDisabled}
|
|
|
|
/>
|
|
|
|
|
|
|
|
{/*
|
|
lessons_ids
|
|
*/}
|
|
|
|
<ValidationField
|
|
searchBy="LessonName"
|
|
name="lessons_ids"
|
|
label="lesson"
|
|
type="Search"
|
|
option={LessonOption}
|
|
isMulti
|
|
isLoading={isLoadingLesson}
|
|
canChangePage={canChangeLessonPage}
|
|
PageName={"LessonCurrentPage"}
|
|
page={LessonPage}
|
|
disabled={!CurriculumDisabled}
|
|
|
|
/>
|
|
|
|
</Col>
|
|
|
|
</Row>
|
|
);
|
|
};
|
|
|
|
export default Form;
|