import React, {useState, useEffect} from 'react' import ModalCom from '../../Helpers/ModalCom' import Detail from '../../jobPopout/popoutcomponent/Detail' import usersService from '../../../services/UsersService' import LoadingSpinner from '../../Spinners/LoadingSpinner' import { PriceFormatter } from '../../Helpers/PriceFormatter' function AssignTaskPopout({action, situation, familyDetails}) { const apiCall = new usersService() let [requestStatus, setRequestStatus] = useState({loading: false, status: false, message: ''}) // HOLDS RESPONSE FOR SENDING API REQUEST let [familyTask, setFamilyTask] = useState({loading: true, data: []}) let [taskType, setTaskType] = useState('select') // SWITCHES BTW SELECT TASK AND NEW TASK let [activeTask, setActiveTask] = useState({id: 0, data: {}}) // HOLDS SELECTED TASK const switchTaskType = ({target:{value}}) => { // FUNCTION TO CHANGE SELECTED ACTIVE TASK setTaskType(value) } const handleActiveTask = (id=0, data={}) => { // FUNCTION TO CHANGE SELECTED ACTIVE TASK setActiveTask({id, data}) } const assignFamilyTask = () => { setRequestStatus({loading: true, status: false, message: ''}) let reqData = {} if(taskType == 'select'){ // RUNS HERE IF TASK TYPE IS SELECT if(!Object.keys(activeTask.data).length){ setRequestStatus({loading: false, status: false, message: 'No Task is seleted'}) return setTimeout(()=>{ setRequestStatus({loading: false, status: false, message: ''}) }, 3000) } reqData = { // API PAYLOADS job_id: activeTask.data?.job_id, job_uid: activeTask.data?.job_uid, family_uid: familyDetails.uid, job_description: activeTask.data?.description, assign_mode: 110011, } apiCall.assignFamilyTask(reqData).then(res => { if(res.status != 200 || res.data.internal_return < 0){ setRequestStatus({loading: false, status: false, message: 'failed to assign task'}) return setTimeout(()=>{ setRequestStatus({loading: false, status: false, message: ''}) }, 5000) } setRequestStatus({loading: false, status: true, message: 'action successful'}) setTimeout(()=>{ setRequestStatus({loading: false, status: false, message: ''}) action() // FUNCTION THAT CLOSES THE MODAL BOX }, 5000) }).catch(err => { setRequestStatus({loading: false, status: false, message: 'An Error occured, try again'}) setTimeout(()=>{ setRequestStatus({loading: false, status: false, message: ''}) }, 5000) }) } if(taskType == 'new'){ // RUNS HERE IF TASK TYPE IS NEW TASK console.log('TESTING') } } useEffect(()=>{ const reqData = { limit: 30, offset: 0, job_type: 'FAMILY', action: 13005 } apiCall.getMyJobList(reqData).then(res => { setFamilyTask({loading: false, data: res?.data?.result_list}) if(res?.data?.result_list?.length){ setActiveTask(prev => ({...prev, data:res?.data?.result_list[0]})) } }).catch(err => { setFamilyTask({loading: false, data: []}) console.log('Error', err) }) },[]) return ( <>

Assign task to {familyDetails?.firstname}

{familyTask.loading ?
: <>
Select Task
New Task
{ taskType == 'select' ? familyTask?.data?.length ? familyTask?.data?.map((item, index)=>(
handleActiveTask(item.job_uid, item)}> handleActiveTask(item.job_uid, item)} className="w-[15px] h-[15px] cursor-pointer" />

{item?.title}

)) :

No Task found!

:

SPACE FOR NEW TASK

}
{familyTask?.data?.length > 0 ?

{activeTask?.data?.title}

{PriceFormatter(activeTask?.data?.price*0.01, activeTask?.data?.currency, activeTask?.data?.curreny_code)}

{`${activeTask?.data?.timeline_days} day(s)`}