This commit is contained in:
Ebube
2023-05-29 00:33:53 +01:00
parent 6e4cea82b9
commit f3f85e4d6c
+56 -23
View File
@@ -5,6 +5,7 @@ import InputCom from "../Helpers/Inputs/InputCom/index";
import SiteService from "../../services/SiteService"; import SiteService from "../../services/SiteService";
import { Form, Formik, Field } from "formik"; import { Form, Formik, Field } from "formik";
import * as Yup from "yup"; import * as Yup from "yup";
import LoadingSpinner from "../Spinners/LoadingSpinner";
const validationSchema = Yup.object().shape({ const validationSchema = Yup.object().shape({
family: Yup.string().required("THis is required "), family: Yup.string().required("THis is required "),
@@ -21,13 +22,21 @@ const validationSchema = Yup.object().shape({
function JobListPopout({ details, onClose, situation }) { function JobListPopout({ details, onClose, situation }) {
const [familyList, setFamilyList] = useState([]); const [familyList, setFamilyList] = useState([]);
const [loader, setLoader] = useState(false); let [loader, setLoader] = useState({
member: false,
jobFields: {
family: false,
public: false,
individual: false,
group: false,
},
});
const apiCall = useMemo(() => new SiteService(), []); const apiCall = useMemo(() => new SiteService(), []);
// member listing // member listing
const memberList = useCallback(async () => { const memberList = useCallback(async () => {
setLoader(true); setLoader({ member: true, jobFields: false });
try { try {
let reqData = { let reqData = {
limit: 20, limit: 20,
@@ -40,10 +49,10 @@ function JobListPopout({ details, onClose, situation }) {
if (data?.internal_return >= 0 && data?.status == "OK") { if (data?.internal_return >= 0 && data?.status == "OK") {
let { result_list } = data; let { result_list } = data;
setFamilyList(result_list); setFamilyList(result_list);
setLoader(false); setLoader({ member: false, jobFields: false });
} else return; } else return;
} catch (error) { } catch (error) {
setLoader(false); setLoader({ member: false, jobFields: false });
throw new Error(error); throw new Error(error);
} }
}, [apiCall]); }, [apiCall]);
@@ -66,43 +75,60 @@ function JobListPopout({ details, onClose, situation }) {
}; };
const jobFieldHandler = async (values, helpers) => { const jobFieldHandler = async (values, helpers) => {
setLoader(true);
let { job_id, job_uid, job_description } = details; let { job_id, job_uid, job_description } = details;
let jobReq = {
job_id,
job_uid,
job_description: job_description !== null ? job_description : " ",
};
let reqData; let reqData;
// for family input // for family input
values?.family !== "" && console.log(values?.family); if (values?.family !== "") {
// for public input
if (values?.public !== "") {
reqData = { reqData = {
job_id, ...jobReq,
job_uid, family_uid: values?.family,
job_description, action: 13025,
assign_mode: 110011,
};
setLoader({ jobFields: { family: true } });
} else if (values?.public !== "") {
// for public input
reqData = {
...jobReq,
duration: Number(values?.public), duration: Number(values?.public),
action: 13025, action: 13025,
assign_mode: 110022, assign_mode: 110022,
}; };
setLoader({ jobFields: { public: true } });
} else if (values?.individual !== "") { } else if (values?.individual !== "") {
// for individual input // for individual input
reqData = { reqData = {
job_id, ...jobReq,
job_uid,
job_description,
email: values?.individual, email: values?.individual,
action: 13025, action: 13025,
assign_mode: 110033, 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 } });
} }
try { try {
const res = await apiCall.assignJobTask(reqData); const res = await apiCall.assignJobTask(reqData);
let { data } = await res; let { data } = await res;
setLoader(false); setLoader({ member: false, jobFields: false });
console.log(data); onClose();
throw new Response(data); throw new Response(data);
} catch (error) { } catch (error) {
setLoader(false); setLoader({ member: false, jobFields: false });
throw new Error(error); throw new Error(error);
} }
}; };
@@ -200,7 +226,8 @@ function JobListPopout({ details, onClose, situation }) {
value={props?.values.family} value={props?.values.family}
data={familyList} data={familyList}
btnText="Assign to family" btnText="Assign to family"
optionText="family" optionText="select family"
loader={loader?.jobFields.family}
/> />
</Form> </Form>
); );
@@ -223,7 +250,8 @@ function JobListPopout({ details, onClose, situation }) {
value={props?.values.public} value={props?.values.public}
data={publicArray} data={publicArray}
btnText="Show Task to Public" btnText="Show Task to Public"
optionText="Public" optionText="select duration"
loader={loader?.jobFields.public}
/> />
</Form> </Form>
); );
@@ -244,8 +272,10 @@ function JobListPopout({ details, onClose, situation }) {
input={true} input={true}
inputName="individual" inputName="individual"
value={props?.values.individual} value={props?.values.individual}
placeholder="enter email of individual"
inputHandler={props?.handleChange} inputHandler={props?.handleChange}
btnText="Send Offer to Individual" btnText="Send Offer to Individual"
loader={loader?.jobFields.individual}
/> />
</Form> </Form>
); );
@@ -268,6 +298,7 @@ function JobListPopout({ details, onClose, situation }) {
value={props?.values.group} value={props?.values.group}
btnText="Send Order to Group" btnText="Send Order to Group"
optionText="Group" optionText="Group"
loader={loader?.jobFields.group}
/> />
</Form> </Form>
); );
@@ -288,6 +319,7 @@ const JobFieldInput = ({
inputHandler, inputHandler,
inputName, inputName,
inputClass, inputClass,
placeholder,
input, input,
select, select,
label, label,
@@ -295,6 +327,7 @@ const JobFieldInput = ({
btnText, btnText,
parentClass, parentClass,
optionText, optionText,
loader,
data, data,
}) => { }) => {
return ( return (
@@ -327,7 +360,7 @@ const JobFieldInput = ({
{Array.isArray(data) && {Array.isArray(data) &&
data?.map((item, idx) => ( data?.map((item, idx) => (
<React.Fragment key={idx}> <React.Fragment key={idx}>
{inputName === "family" && ( {inputName === "family" && item?.last_login !== "" && (
<option value={item?.family_uid} key={idx}> <option value={item?.family_uid} key={idx}>
{`${item?.firstname} ${item?.lastname}`} {`${item?.firstname} ${item?.lastname}`}
</option> </option>
@@ -357,7 +390,7 @@ const JobFieldInput = ({
labelClass="tracking-wide" labelClass="tracking-wide"
type="text" type="text"
name={inputName} name={inputName}
placeholder="" placeholder={placeholder}
value={value} value={value}
inputHandler={inputHandler} inputHandler={inputHandler}
inputBg="bg-white" inputBg="bg-white"
@@ -371,7 +404,7 @@ const JobFieldInput = ({
name={inputName} name={inputName}
className="px-2 py-1 text-sm text-white btn-gradient tracking-wide rounded-md" className="px-2 py-1 text-sm text-white btn-gradient tracking-wide rounded-md"
> >
{btnText} {loader ? <LoadingSpinner size={5} /> : btnText}
</button> </button>
</div> </div>
</div> </div>