import { Field, Form, Formik } from "formik"; import React, { useCallback, useEffect, useMemo, useState } from "react"; import * as Yup from "yup"; import SiteService from "../../services/SiteService"; import InputCom from "../Helpers/Inputs/InputCom/index"; import ModalCom from "../Helpers/ModalCom"; import LoadingSpinner from "../Spinners/LoadingSpinner"; import Detail from "./popoutcomponent/Detail"; import { tableReload } from "../../store/TableReloads"; import { useDispatch } from "react-redux"; const validationSchema = Yup.object().shape({ family: Yup.string().required("This is required "), public: Yup.string(), individual: Yup.string() .email("Invalid email format") .matches( /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/, "Invalid email format" ) .required("Email is required"), group: Yup.string(), }); function JobListPopout({ details, onClose, situation }) { const dispatch = useDispatch() const [familyList, setFamilyList] = useState([]); let [loader, setLoader] = useState({ member: false, jobFields: { family: false, public: false, individual: false, group: false, }, }); const apiCall = useMemo(() => new SiteService(), []); // member listing const memberList = useCallback(async () => { setLoader({ member: true, jobFields: false }); try { let reqData = { limit: 20, offset: 0, action: 22010, }; let res = await apiCall.familyListings(reqData); const { data } = res; if (data?.internal_return >= 0 && data?.status == "OK") { let { result_list } = data; setFamilyList(result_list); setLoader({ member: false, jobFields: false }); } else return; } catch (error) { setLoader({ member: false, jobFields: false }); throw new Error(error); } }, [apiCall]); useEffect(() => { memberList(); }, [memberList]); let initialValues = { family: "", public: "", individual: "", group: "", }; let [textArea, setTextArea] = useState(details?.job_detail); const [errMsg, setErrMsg] = useState({ deliveryDetail: "", jobFields: { family: "", public: "", individual: "", group: "", }, }); const handleInputChange = ({ target: { value } }) => { setTextArea(value); }; const errorHandler = ({ target: { name } }) => { try { if (name === "family") setErrMsg({ jobFields: { family: "please select a family member" } }); else if (name === "public") setErrMsg({ jobFields: { public: "please select duration" } }); else if (name === "individual") setErrMsg({ jobFields: { individual: "please enter email" } }); else if (name === "group") setErrMsg({ jobFields: { group: "please select a family member" } }); } finally { setTimeout(() => { setErrMsg({ jobFields: "" }); }, 3000); } }; const jobFieldHandler = async (values, helpers) => { let { job_id, job_uid } = details; if (!textArea) { setErrMsg({ deliveryDetail: "delivery detail is required!" }); return; } let jobReq = { job_id, job_uid, job_description: textArea, }; let reqData; // for family input if (values?.family !== "") { reqData = { ...jobReq, family_uid: values?.family, action: 13025, assign_mode: 110011, }; setLoader({ jobFields: { family: true } }); } else if (values?.public !== "") { // for public input reqData = { ...jobReq, duration: Number(values?.public), action: 13025, assign_mode: 110022, }; setLoader({ jobFields: { public: true } }); } else if (values?.individual !== "") { // for individual input reqData = { ...jobReq, email: values?.individual, action: 13025, assign_mode: 110033, }; setLoader({ jobFields: { individual: true } }); } else if (values?.group !== "") { // for group input reqData = { ...jobReq, email: values?.individual, action: 13025, assign_mode: 110033, }; setLoader({ jobFields: { group: true } }); } else { return; } try { const res = await apiCall.assignJobTask(reqData); let { data } = await res; setLoader({ jobFields: false }); dispatch(tableReload({ type: "JOBTABLE" })); onClose(); throw new Response(data); } catch (error) { setLoader({ jobFields: false }); throw new Error(error); } }; // console.log("Job List P >> ", details) return (

{details.title}

{/*

{details.title}

*/} {/* INPUT SECTION */}