import React, { useState } from 'react' import { useNavigate } from 'react-router-dom' import ModalCom from '../../Helpers/ModalCom' import LoadingSpinner from '../../Spinners/LoadingSpinner' import usersService from '../../../services/UsersService' import {NewDateTimeFormatter }from '../../../lib/NewDateTimeFormatter' function CurrentTaskAction({jobDetails}) { const currTime = new Date().getTime() / (1000*60*60) const minDueTime = new Date(jobDetails?.minimum_due).getTime() / (1000*60*60) const canSendForReview = Number(jobDetails.strict_timeline) ? currTime >= minDueTime : true // calculation to determine when send for review button will be active const apiCall = new usersService() const navigate = useNavigate() const [checked, setChecked] = useState(false) 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 USER CLICKS ON SEND FOR REVIEW AND ACCEPTANCE const taskCompletedSubmit = () => { setReqStatus({loading:true, status: false, message: ''}) // Sets loading spinner active let reqData = { contract: jobDetails.contract, contract_uid: jobDetails.contract_uid, job_action: 'NOTIFY_COMPLETE', } if(!checked){ // checks that 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 MARK TASK AS COMPLETED BY WORKER apiCall.workerJobAction(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: 'Task marked completed successfully'}) setTimeout(()=>{ // Sets popout to false and navigates user to /mytask after 3 seconds popUpHandler() navigate('/mytask', {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 (
{jobDetails.job_type == 'MEDIA' ?
:
I completed this task and ready for review and acceptance.
}
{popUp && (

Confirm Completion

{!canSendForReview ? <>

This task can be marked completed after {NewDateTimeFormatter(jobDetails?.minimum_due)}

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

If you have completed this task

{reqStatus.loading ? : }
{/* FOR SUCCESS/ERROR DISPLAY SECTION*/} {reqStatus.message &&
{reqStatus.message}
} {/* END OF FOR SUCCESS/ERROR DISPLAY SECTION*/} }
{/* cancel btn */}
)}
) } export default CurrentTaskAction