import React,{useState} from 'react' import ModalCom from '../../Helpers/ModalCom' import LoadingSpinner from '../../Spinners/LoadingSpinner' import { useNavigate } from 'react-router-dom' import usersService from '../../../services/UsersService' import { useDispatch } from 'react-redux' import { tableReload } from '../../../store/TableReloads' function ReviewJobAction({jobDetails}) { const dispatch = useDispatch() const apiCall = new usersService() const navigate = useNavigate() const [checked, setChecked] = useState(false) const [action, setAction] = useState('') // VALUE OF NEW EXTENDED TIME const [reqStatus, setReqStatus] = useState({loading:false, status: false, message: ''}) let [popUp, setPopUp] = useState(false) const popUpHandler = () => { if(popUp){ setChecked(false) } setPopUp(prev => !prev) } // FUNCTION TO HANDLE WHEN OWNER ACCEPTS COMPLETION OF JOB const acceptCompletion = () => { setAction('accept') setReqStatus({loading:true, status: false, message: ''}) let reqData = { // API PAYLOADS contract: jobDetails.contract, contract_uid: jobDetails.contract_uid, job_action: 'ACCEPT_COMPLETE', } if(!checked){ // CHECKS IF CHECKBOX IS SELECTED setReqStatus({loading:false, status: false, message: 'Please check the box above'}) return setTimeout(()=>{ setReqStatus({loading:false, status: false, message: ''}) }, 3000) } // API CALL TO ACCEPT COMPLETION BY OWNER apiCall.ownerJobAction(reqData).then((res)=>{ if(res.status != 200 || res.data.internal_return < 0){ setReqStatus({loading:false, status: false, message: 'unable to complete request. Try again'}) return } setReqStatus({loading:false, status: true, message: 'job completion accepted successfully'}) dispatch(tableReload({ type: "WALLETTABLE" })); setTimeout(()=>{ // Sets popout to false and navigates user to /my-review-jobs after 3 seconds popUpHandler() navigate('/my-review-jobs', {replace: true}) }, 3000) }).catch(err => { setReqStatus({loading:false, status: false, message: 'Opps! Network error. Try again'}) }).finally(()=>{ setTimeout(()=>{ setReqStatus({loading:false, status: false, message: ''}) }, 3000) }) } // FUNCTION TO HANDLE WHEN USER/OWNER CLICKS ON REJECT COMPLETION OF JOB const rejectCompletion = () => { setAction('reject') setReqStatus({loading:true, status: false, message: ''}) // Sets loading spinner active let reqData = { // API PAYLOADS contract: jobDetails.contract, contract_uid: jobDetails.contract_uid, job_action: 'REJECT_COMPLETE', } // API CALL TO REJECT COMPLETION BY OWNER apiCall.ownerJobAction(reqData).then((res)=>{ if(res.status != 200 || res.data.internal_return < 0){ setReqStatus({loading:false, status: false, message: 'unable to complete request. Try again'}) return } setReqStatus({loading:false, status: true, message: 'job completion rejected successfully'}) setTimeout(()=>{ // Sets popout to false and navigates user to /my-review-jobs after 3 seconds popUpHandler() navigate('/my-review-jobs', {replace: true}) }, 3000) }).catch(err => { setReqStatus({loading:false, status: false, message: 'Opps! Network error. Try again'}) }).finally(()=>{ setTimeout(()=>{ setReqStatus({loading:false, status: false, message: ''}) }, 3000) }) } return (
This Job is Ready for your review
{/*
*/}
{popUp && (

Completion

{setChecked(prev => !prev)}} className='w-6 h-6 text-sky-blue bg-gray-100 focus:ring-sky-blue' />

I am ready to accept completion

{reqStatus.loading && action=='accept'? : }
{/* EXTEND TIMELINE SECTION */}

I am not ready to accept completion of task

{reqStatus.loading && action=='reject' ? : }
{/* FOR SUCCESS/ERROR DISPLAY SECTION*/}
{reqStatus.message != "" && (!reqStatus.status ? (
{reqStatus.message}
) : ( reqStatus.status && (
{reqStatus.message}
) ))}
{/* END OF FOR SUCCESS/ERROR DISPLAY SECTION*/}
{/* cancel btn */}
)}
) } export default ReviewJobAction