import { useState } from "react"; import { useNavigate } from "react-router-dom"; import usersService from "../../../services/UsersService"; import InputCom from "../../Helpers/Inputs/InputCom"; import LoadingSpinner from "../../Spinners/LoadingSpinner"; import { Form, Formik } from "formik"; import * as Yup from "yup"; export default function FamilyProfile({ familyData, className }) { const validationSchema = Yup.object().shape({ firstname: Yup.string().required("Firstname is required"), lastname: Yup.string() // .min(3, "Minimum 3 characters") // .max(25, "Maximum 25 characters") .required("Lastname is required"), year: Yup.number() .required("Year is required") .min( new Date().getFullYear() - process.env.REACT_APP_FAMILY_MAXIMUM_AGE, `Age must be within ${process.env.REACT_APP_FAMILY_MINIMUM_AGE} to ${process.env.REACT_APP_FAMILY_MAXIMUM_AGE} years` ) .max( new Date().getFullYear() - process.env.REACT_APP_FAMILY_MINIMUM_AGE, `Age must be within ${process.env.REACT_APP_FAMILY_MINIMUM_AGE} to ${process.env.REACT_APP_FAMILY_MAXIMUM_AGE} years` ), month: Yup.number() .required("Month is required") .min(1, "Month is required"), }); const navigate = useNavigate(); const api = new usersService(); let [requestStatus, setRequestStatus] = useState({ loading: false, status: false, message: "", }); // let [updateDetails, setUpdateDetails] = useState({ // family_uid: familyData.uid, // firstname: familyData.firstname, // lastname: familyData.lastname, // year: familyData.year, // month: familyData.month, // action: 22020 // }) // initial values for formik let initialValues = { family_uid: familyData?.uid, firstname: familyData?.firstname, lastname: familyData?.lastname, year: familyData?.year, month: familyData?.month, enable_traking: familyData?.enable_traking, }; // const handleChange = ({ target: { name, value } }) => { // setUpdateDetails((prev) => ({ ...prev, [name]: value })); // }; const updateFamily = (values, helpers) => { setRequestStatus({ loading: true, status: false, message: "" }); // let {firstname, lastname, year, month} = updateDetails // if(!firstname || !lastname || year == 0 || month == 0) { // setRequestStatus({loading:false, status:false, message: 'Please fill all fields'}) // return setTimeout(()=>{ // setRequestStatus({loading:false, status:false, message: ''}) // }, 5000) // } api .getFamilyUpdate(values) .then((res) => { if (res.data.internal_return < 0) { return setRequestStatus({ loading: false, status: false, message: "Failed, try again!", }); } setRequestStatus({ loading: false, status: true, message: "Family account updated", }); setTimeout(() => { navigate("/acc-family", { replace: true }); }, 5000); }) .catch((error) => { setRequestStatus({ loading: false, status: false, message: "Unable to update, try again!", }); }) .finally(() => { setTimeout(() => { setRequestStatus({ loading: false, status: false, message: "" }); }, 5000); }); }; return (
{(props) => { return (
{/* Age dropdown */}
{((props.errors.year && props.touched.year) || (props.errors.month && props.touched.month)) && ( {" "} {props.errors.year || props.errors.month} )}
{/* Location dropdown */}
{/* {((props.errors.year && props.touched.year) || (props.errors.month && props.touched.month)) && ( {" "} {props.errors.year || props.errors.month} )} */}
{requestStatus.message && (
{requestStatus.message}
)}
{requestStatus.loading ? ( <>
) : ( )}
); }}
); } // Get the current year // const currentYear = new Date().getFullYear() - process.env.REACT_APP_FAMILY_MINIMUM_AGE; // Calculate the current year and the year 3 years before the current year const currentYear = new Date().getFullYear(); const startYear = currentYear - 3; // Generate an array of years from 4 years before the current year to 18 years before the current year const years = Array.from({ length: 15 }, (_, index) => startYear - index).reverse(); // const latestYears = years.slice(0, process.env.REACT_APP_FAMILY_YEAR_RANGE); const months = [ { id: "1", name: "January" }, { id: "2", name: "February" }, { id: "3", name: "March" }, { id: "4", name: "April" }, { id: "5", name: "May" }, { id: "6", name: "June" }, { id: "7", name: "July" }, { id: "8", name: "August" }, { id: "9", name: "September" }, { id: "10", name: "October" }, { id: "11", name: "November" }, { id: "12", name: "December" }, ];