import React, { useEffect, useMemo, useRef } from "react"; import { useDispatch, useSelector } from "react-redux"; import { updateEducationalDetails } from "../redux/registrationFormSlice"; import { TextField, Button, Grid, FormControl, InputLabel, Select, MenuItem, } from "@mui/material"; import { useEducationMasters, useEducationList } from "../hooks/useMasters"; const EducationalDetailsForm = ({ onSubmitStep, onSkipStep, errors, onFieldChange, }) => { const dispatch = useDispatch(); const data = useSelector((state) => state.registerform.educationalDetails); const inputRef = useRef(null); const requiredMark = *; const { data: educationMasters, isLoading: isEducationMastersLoading } = useEducationMasters(); const educationListQuery = useEducationList(data.fieldOfStudy); const studyFieldOptions = useMemo(() => { const raw = educationMasters; if (!raw) return []; if (Array.isArray(raw)) return raw; return raw.studyFields || raw.study_fields || raw.fieldOfStudy || []; }, [educationMasters]); const qualificationOptions = useMemo(() => { const raw = educationListQuery.data; if (!raw) return []; if (Array.isArray(raw)) return raw; return raw.education || raw.data || []; }, [educationListQuery.data]); const occupationOptions = useMemo(() => { const raw = educationMasters; if (!raw) return []; if (Array.isArray(raw)) return raw; return raw.occupation || raw.occupations || []; }, [educationMasters]); const employeeTypeOptions = useMemo(() => { const raw = educationMasters; if (!raw) return []; if (Array.isArray(raw)) return raw; return raw.employeeType || raw.employee_type || []; }, [educationMasters]); const annualIncomeOptions = useMemo(() => { const raw = educationMasters; if (!raw) return []; if (Array.isArray(raw)) return raw; return raw.annualIncome || raw.annual_income || []; }, [educationMasters]); const workLocationOptions = useMemo(() => { const raw = educationMasters; if (!raw) return []; if (Array.isArray(raw)) return []; return raw.workLocation || raw.work_location || raw.workLocations || []; }, [educationMasters]); const getOptionLabel = (item, fallback = "") => { if (!item) return fallback; if (typeof item === "string") return item; return ( item.study_field_name || item.education_name || item.occupation_name || item.employee_type_name || item.annual_income_name || item.work_location_name || item.name || fallback ); }; useEffect(() => { inputRef.current?.focus(); }, []); const handleChange = (field, value) => { const updates = { [field]: value }; const fieldsToClear = [field]; if (field === "fieldOfStudy") { updates.qualification = ""; fieldsToClear.push("qualification"); } dispatch(updateEducationalDetails(updates)); if (onFieldChange) onFieldChange(fieldsToClear); }; const handleSubmit = () => { console.log("Submitting educational details:", data); onSubmitStep(); }; return ( <>
{/* Field of Study */}
Select Field of Study {errors.fieldOfStudy && (

{errors.fieldOfStudy}

)}
{/* Highest Qualification */}
Select Highest Qualification {errors.qualification && (

{errors.qualification}

)}
{/* College Name */}
handleChange("collegeName", e.target.value)} error={Boolean(errors.collegeName)} helperText={errors.collegeName} placeholder="Enter College Name" variant="outlined" />
{/* Occupation */}
Select Occupation {errors.occupation && (

{errors.occupation}

)}
{/* Company / Organization Name */}
handleChange("organization", e.target.value)} error={Boolean(errors.organization)} helperText={errors.organization} placeholder="Enter Company / Organization Name" variant="outlined" />
{/* Employee Type */}
Select Employee Type {errors.employeeType && (

{errors.employeeType}

)}
{/* Annual Income */}
Select Annual Income {errors.income && (

{errors.income}

)}
{/* Work Location */}
{workLocationOptions.length > 0 ? ( Select Work Location {errors.workLocation && (

{errors.workLocation}

)}
) : ( handleChange("workLocation", e.target.value)} error={Boolean(errors.workLocation)} helperText={errors.workLocation} placeholder="Enter Work Location" variant="outlined" /> )}
); }; export default EducationalDetailsForm;