diff --git a/PROF-XXI FW Tool/client/src/components/pages/validation/scan/ScanForm.js b/PROF-XXI FW Tool/client/src/components/pages/validation/scan/ScanForm.js new file mode 100644 index 0000000000000000000000000000000000000000..aa1af5a78c2a6d7633a79a3a5bc9ebda1457b9fd --- /dev/null +++ b/PROF-XXI FW Tool/client/src/components/pages/validation/scan/ScanForm.js @@ -0,0 +1,103 @@ +import { useState, useEffect } from "react"; +import validateScan from "./validateScan"; + +const ScanForm = (Submit) => { + const [userAnswers, setUsersAnswers] = useState({ + A1: "", + A2: "", + A3: "", + A4: "", + A5: "", + A6: "", + A7: "", + A8: "", + A9: "", + A10: "", + A11: "", + B1: "", + B2: "", + B3: "", + B4: "", + B5: "", + B6: "", + B7: "", + B8: "", + B9: "", + B10: "", + B11: "", + C1: "", + C2: "", + C3: "", + C4: "", + C5: "", + C6: "", + C7: "", + C8: "", + C9: "", + C10: "", + C11: "", + D1: "", + D2: "", + D3: "", + D4: "", + D5: "", + D6: "", + D7: "", + D8: "", + D9: "", + E1: "", + E2: "", + E3: "", + E4: "", + E5: "", + E6: "", + E7: "", + E8: "", + }); + + const [user, setUser] = useState({ + firstName: "", + lastName: "", + email: "", + position: "Teacher", + }); + + const [isSubmitting, setIsSubmitting] = useState(false); + + const [errors, setErrors] = useState({}); + + const handleChange = (e) => { + const fieldName = e.target.name; + const fieldValue = e.target.value; + setUsersAnswers({ ...userAnswers, [fieldName]: fieldValue }); + }; + + const handleUserChange = (e) => { + const fieldName = e.target.name; + const fieldValue = e.target.value; + setUser({ ...user, [fieldName]: fieldValue }); + }; + + const handleSubmit = (e) => { + e.preventDefault(); + setErrors(validateScan(user, userAnswers)); + setIsSubmitting(true); + }; + + useEffect(() => { + if (Object.keys(errors).length === 0 && isSubmitting) { + Submit(); + } + }, [errors]); + + return { + handleChange, + handleUserChange, + handleSubmit, + user, + userAnswers, + errors, + }; +}; + +export default ScanForm;