import React, { useState } from "react"; import { useNavigate } from "react-router-dom"; import { toast } from "react-toastify"; import usersService from "../../services/UsersService"; import ModalCom from "../Helpers/ModalCom"; import { PriceFormatter } from "../Helpers/PriceFormatter"; import LoadingSpinner from "../Spinners/LoadingSpinner"; import Detail from "./popoutcomponent/Detail"; import { useDispatch } from "react-redux"; import { tableReload } from "../../store/TableReloads"; const showSuccessToast = (message) => { toast.success(message, { autoClose: 3000, hideProgressBar: true, }); }; function PendingJobsPopout({ details, onClose, situation }) { const dispatch = useDispatch(); const navigate = useNavigate(); const [pendingJobLoader, setPendingJobLoader] = useState({ extend: false, offer: false, cancel: false, }); let [requestMessage, setRequestMessage] = useState({ status: false, message: "", }); const apiCall = new usersService(); const handlePendingJobsBtn = ({ target: { name } }) => { let { job_uid, offer_code } = details; let reqData; let pendingData = { job_uid, offer_code }; if (name == "extend") { // RUNS THIS TO EXTEND JOB EXPIRY BY ONE WEEK reqData = { ...pendingData }; setPendingJobLoader({ extend: true }); apiCall .pendingJobExtend(reqData) .then((res) => { setRequestMessage({ status: true, message: res.data.status }); setTimeout(() => { setPendingJobLoader({ extend: false, offer: false }); setRequestMessage({ status: false, message: "" }); onClose(); dispatch(tableReload({ type: "PENDINGTABLE" })); }, 4000); }) .catch((error) => { setRequestMessage({ status: false, message: "Try Again" }); setTimeout(() => { setPendingJobLoader({ extend: false, offer: false }); setRequestMessage({ status: false, message: "" }); }, 3000); }); } else if (name == "offer") { // RUNS THIS IF JOB IS SENT TO USER reqData = { ...pendingData }; setPendingJobLoader({ offer: true }); apiCall .pendingJobSendTome(reqData) .then((res) => { setRequestMessage({ status: true, message: res.data.status }); setTimeout(() => { setPendingJobLoader({ extend: false, offer: false }); setRequestMessage({ status: false, message: "" }); }, 4000); }) .catch((error) => { setRequestMessage("Try Again"); setTimeout(() => { setPendingJobLoader({ extend: false, offer: false }); setRequestMessage({ status: false, message: "" }); }, 3000); }); } else if (name == "cancel") { // RUNS THIS IF JOB OFFER IS CANCELLED reqData = { ...pendingData, reason: "cancel", offer_result: 3333 }; setPendingJobLoader({ cancel: true }); apiCall .pendingCancelOffer(reqData) .then((res) => { setRequestMessage({ status: true, message: res.data.status }); setTimeout(() => { setPendingJobLoader({ cancel: false }); setRequestMessage({ status: false, message: "" }); onClose(); dispatch(tableReload({ type: "PENDINGTABLE" })); dispatch(tableReload({ type: "JOBTABLE" })); }, 4000); }) .catch((error) => { setRequestMessage("Try Again"); setTimeout(() => { setPendingJobLoader({ cancel: false }); setRequestMessage({ status: false, message: "" }); }, 3000); }); } else return; // try { // if (name === "extend") { // setPendingJobLoader({ extend: true }); // reqData = { ...pendingData }; // // let { data } = // await apiCall.pendingJobExtend(reqData); // showSuccessToast("Job has been extended by a week!"); // dispatch(tableReload({ type: "PENDINGTABLE" })); // } else if (name === "offer") { // setPendingJobLoader({ offer: true }); // reqData = { ...pendingData }; // // let { data } = // await apiCall.pendingJobSendTome(reqData); // showSuccessToast("Offer sent, check your email"); // } else return; // setTimeout(() => { // setPendingJobLoader({ extend: false, offer: false }); // onClose(); // }, 2700); // } catch (error) { // setPendingJobLoader({ extend: false, offer: false }); // throw new Error(error); // } }; return (

Manage Pending Item

{details.title}

!

{/* This Job have been sent to public view */} This Job have been sent to {details.job_to}

This Job will expire

{/* INPUT SECTION */}
{/* ACTION SECTION */}

Actions

Job sent to {details.job_to}

{pendingJobLoader.extend && requestMessage.message && (

{requestMessage.message}

)}
{pendingJobLoader.offer && requestMessage.message && (

{requestMessage.message}

)}
{/* close button */}
{/* end of close button */}
); } export default PendingJobsPopout;