import React, { useEffect, useState } from "react"; import { useNavigate } from "react-router-dom"; import Layout from "../Partials/Layout"; import CommonHead from "../UserHeader/CommonHead"; import usersService from "../../services/UsersService"; // import { handlePagingFunc } from "../Pagination/HandlePagination"; // import PaginatedList from "../Pagination/PaginatedList"; import LoadingSpinner from "../Spinners/LoadingSpinner"; import OthersInterestedTable from "./OthersInterestedTable"; export default function ManageInterestOffer(props) { const navigate = useNavigate() const apiCall = new usersService() let [redirectTime, setRedirectTime] = useState(5) let [messageToSend, setMessageToSend] = useState('') let [tab, setTab] = useState("info"); //message STATE FOR SWITCHING BETWEEN TABS let [requestStatus, setRequestStatus] = useState({loading: false, status: false, message: '', processType: ''}) let [messageListReload, setMessageListReload] = useState(false) // STATE TO DETERMINE WHEN MESSAGE LIST WILL RELOAD const [messageList, setMessageList] = useState({loading: true, data: [1,2,3,4,5,6,7,8,95,6,7,8,9]}) // TO BE REMOVED AND REPLACE WITH REAL MESSAGE FROM API CALL // const [currentPage, setCurrentPage] = useState(0); // const indexOfFirstItem = Number(currentPage); // const indexOfLastItem = Number(indexOfFirstItem) + Number(process.env.REACT_APP_ITEM_PER_PAGE); // const currentMessageList = messageList?.data?.slice(indexOfFirstItem, indexOfLastItem); // const handlePagination = (e) => { // handlePagingFunc(e, setCurrentPage); // }; const [selectTab, setValue] = useState("today"); const filterHandler = (value) => { setValue(value); }; //FUNCTION TO HANDLE ON CHANGE MESSAGE IN TEXTAREA const onMessageChange = ({target:{value}}) => { if(messageToSend.length > 149){ setRequestStatus({loading: false, status: false, message: 'max of 150 characters', processType: 'sendmessage'}) }else{ setRequestStatus({loading: false, status: false, message: '', processType: 'sendmessage'}) } setMessageToSend(value) } //FUNCTION TO SEND MESSAGE TO CLIENT const sendMessage = () => { let reqData = { // API PAYLOADS msg_type: 'MRKTINT', yourmessage: messageToSend, offer_uid: props.offerDetails.offer_uid, interest_uid: props.offerDetails.interest_uid } setRequestStatus(prev => ({...prev, loading: true, processType: 'sendmessage'})) if(!messageToSend){ setRequestStatus({loading: false, status: false, message: 'Please enter message to send', processType: 'sendmessage'}) return } if(messageToSend.length > 149){ return } apiCall.offerInterestMsg(reqData).then(res=>{ if(res.status != 200 || res.data.internal_return < 0){ setRequestStatus({loading: false, status: false, message: 'message not sent, try again', processType: 'sendmessage'}) return } setRequestStatus({loading: false, status: true, message: 'message sent', processType: 'sendmessage'}) setMessageToSend('') // sets message to empty strings setMessageListReload(prev => !prev) //A FUNCTION TO MAKE MESSAGE LIST RELOAD }).catch(error => { setRequestStatus({loading: false, status: false, message: 'Opps, an error occured', processType: 'sendmessage'}) }).finally(()=>{ setTimeout(() => { setRequestStatus({loading: false, status: false, message: '', processType: ''}) }, 5000); }) } //FUNCTION TO ACCEPT/REJECT OFFER INTEREST const interestOfferProcess = ({target:{name}}) => { setRequestStatus(prev => ({...prev, loading: true, processType: name})) let reqData = { // API PAYLOADS proc: name.toUpperCase(), client_uid : props.offerDetails?.client_uid, offer_code : props.offerDetails?.offer_code, offer_uid: props.offerDetails?.offer_uid, } apiCall.offersInterestProc(reqData).then(res => { if(res.status != 200 || res.data.internal_return < 0){ setRequestStatus({loading: false, status: false, message: 'Unable to complete request', processType: ''}) return } let intervalTime = setInterval(() => { // SETS REDIRECT COUNT DOWN setRedirectTime(prev => prev - 1) }, 1000); setRequestStatus({loading: false, status: true, message: `Offer ${name}ed`, processType: ''}) setTimeout(()=>{ navigate('/offer-interest', {replace: true}) clearInterval(intervalTime) },5000) }).catch(err => { setRequestStatus({loading: false, status: false, message: 'Opps! something went wrong. Try again', processType: ''}) }).finally(()=>{ setTimeout(()=>{ setRequestStatus({loading: false, status: false, message: '', processType: ''}) },5000) }) } useEffect(()=>{ // run API to get message to replace message array above, add reload variable as dependence array. CODE IS DUMMY FOR NOW setMessageList({loading: true, data: []}) apiCall.offerInterestMsg().then(res=>{ console.log('Data', res.data) setMessageList({loading: false, data:[1,2,3,6,7,8,9]}) }).catch(err => { setMessageList({loading: false, data:[1,2,3,6,7,8,9]}) console.log('Failed', err) }) },[messageListReload]) return (
{/* heading */}

Manage Offer Interest

{/* manage offer section */}
{/* Detail section */}

{props.offerDetails?.offer_code && props.offerDetails.offer_code}

{props.offerDetails?.title}

{/* switch button */}
{/* END OF switch button */} {/* info tab */} {tab == 'info' ?
Name {props.offerDetails?.client_name}
Member Since {props.offerDetails?.client_added}
Jobs completed {props.offerDetails?.client_jobs_completed ? props.offerDetails?.client_jobs_completed :0}
Jobs active {props.offerDetails?.client_jobs_active ? props.offerDetails?.client_jobs_active:0}
Jobs uncompleted {props.offerDetails?.client_jobs_missed ? props.offerDetails?.client_jobs_missed:0}
% completion {props.offerDetails?.client_percent_completion ? props.offerDetails?.client_percent_completion:0}
Pending Offers {props.offerDetails?.client_offers_pending ? props.offerDetails?.client_offers_pending:0}
:

To: {props.offerDetails?.client_name}