diff --git a/src/Routers.jsx b/src/Routers.jsx index 460a8b1..7240e91 100644 --- a/src/Routers.jsx +++ b/src/Routers.jsx @@ -44,6 +44,7 @@ import MyPastDueJobsPage from "./views/MyPastDueJobsPage"; import BlogPage from "./views/BlogPage"; import MyReviewDueJobsPage from "./views/MyReviewDueJobsPage"; import OffersInterestPage from "./views/OffersInterestPage"; +import ManageInterestOfferPage from './views/ManageInterestOfferPage' export default function Routers() { return ( @@ -99,6 +100,7 @@ export default function Routers() { } /> } /> } /> + } /> { + handlePagingFunc(e, setCurrentPage); + }; + + const [selectTab, setValue] = useState("today"); + const filterHandler = (value) => { + setValue(value); + }; + return ( + + + + + {/* heading */} + + + + Manage Offer Interest + + + + + + {/* manage offer section */} + + {/* + + navigate(props.offerDetails.pathname, { replace: true }) + } + > + + + + + + {props.offerDetails?.offer_code && props.offerDetails.offer_code} + + */} + + + {/* Detail section */} + + + + navigate(props.offerDetails.pathname, { replace: true }) + } + > + + + + + + {props.offerDetails?.offer_code && props.offerDetails.offer_code} + + + + {props.offerDetails?.title} + + + + + Name + Dummy name + + + Member Since + Dummy Date + + + Jobs completed + Dummy number + + + Jobs active + Dummy number + + + Jobs uncompleted + Dummy number + + + Pending Offers + Dummy number + + + % completion + Dummy number + + + + + + Accept + + + Reject + + + + + {/* END OF Detail section */} + + {/* message section */} + + Message to dummy name + + + + + Send + + + + {/* message list */} + {currentMessageList.map((item, index)=>( + + 2023-04-06-from { }Dummy name + I am testing message + + ))} + + {/* PAGINATION BUTTON */} + = + messageList?.data?.length + ? true + : false + } + data={messageList?.data} + start={indexOfFirstItem} + stop={indexOfLastItem} + /> + {/* END OF PAGINATION BUTTON */} + + {/* END of message section */} + + + {/* END OF manage offer section */} + + + + + + {/* heading */} + + + + Others interested in this Task + + + + + + + + + + ); +} diff --git a/src/components/OffersInterest/OffersInterestTable.jsx b/src/components/OffersInterest/OffersInterestTable.jsx index c34daa6..7e4951b 100644 --- a/src/components/OffersInterest/OffersInterestTable.jsx +++ b/src/components/OffersInterest/OffersInterestTable.jsx @@ -87,7 +87,7 @@ export default function OffersInterestTable({offerInterestList, className}) { { - navigate("/manage-active-job", { + navigate("/manage-offer", { state: { ...item, pathname }, }); }} diff --git a/src/components/OffersInterest/OthersInterestedTable.jsx b/src/components/OffersInterest/OthersInterestedTable.jsx new file mode 100644 index 0000000..8655fa3 --- /dev/null +++ b/src/components/OffersInterest/OthersInterestedTable.jsx @@ -0,0 +1,144 @@ +import React, { useState } from "react"; +import dataImage1 from "../../assets/images/data-table-user-1.png"; +import LoadingSpinner from "../Spinners/LoadingSpinner"; +import { useNavigate, useLocation, Link } from "react-router-dom"; +import { handlePagingFunc } from "../Pagination/HandlePagination"; +import PaginatedList from "../Pagination/PaginatedList"; + +import { PriceFormatter } from "../Helpers/PriceFormatter"; + +import familyImage from '../../assets/images/no-family-side.png' + +export default function OthersInterestTable({othersInterestedList, className}) { + + const navigate = useNavigate(); + let { pathname } = useLocation(); + + const filterCategories = ["All Categories", "Explore", "Featured"]; + const [selectedCategory, setCategory] = useState(filterCategories[0]); + + const [currentPage, setCurrentPage] = useState(0); + const indexOfFirstItem = Number(currentPage); + const indexOfLastItem = + Number(indexOfFirstItem) + Number(process.env.REACT_APP_ITEM_PER_PAGE); + const currentOthersInterestedList = othersInterestedList?.data?.slice(indexOfFirstItem, indexOfLastItem); + + const handlePagination = (e) => { + handlePagingFunc(e, setCurrentPage); + }; + + return ( + + + {othersInterestedList?.loading ? ( + + + + ) + : + othersInterestedList?.data?.length > 0 ? + ( + + + {/* + Name + Last Login + No of Tasks + + */} + + + {currentOthersInterestedList?.map((item, idx) => { + return ( + + + + + + + + + {item?.title} + + {item?.expire} + + + + + + {item?.client_name} + + + + + {/* {formatNumber(item?.price * 0.01)} */} + {PriceFormatter(item?.price * 0.01,item?.currency_code,item?.currency)} + + + + + { + navigate("/manage-offer", { + state: { ...item, pathname }, + }); + }} + type="button" + className="w-20 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white" + > + View + + + + ); + }) + } + + + ) + : + ( + + + No Offer list avaliable. + {navigate('/market', {replace: true})}} + type="button" + className="text-white btn-gradient text-lg tracking-wide px-5 py-2 rounded-full" + > + Goto Market + + + + + + + ) + } + + {/* PAGINATION BUTTON */} + = + othersInterestedList?.data?.length + ? true + : false + } + data={othersInterestedList?.data} + start={indexOfFirstItem} + stop={indexOfLastItem} + /> + {/* END OF PAGINATION BUTTON */} + + ); +} \ No newline at end of file diff --git a/src/views/ManageInterestOfferPage.jsx b/src/views/ManageInterestOfferPage.jsx new file mode 100644 index 0000000..98df622 --- /dev/null +++ b/src/views/ManageInterestOfferPage.jsx @@ -0,0 +1,39 @@ +import React, { useContext,useState, useEffect } from "react"; +import usersService from "../services/UsersService"; +import ManageInterestOffer from "../components/OffersInterest/ManageInterestOffer"; +import { useSelector } from "react-redux"; +import { useLocation, useNavigate } from "react-router-dom"; + +export default function MyReviewDueJobsPage() { + const {state} = useLocation() + let navigate = useNavigate() + + let {commonHeadBanner} = useSelector(state => state.commonHeadBanner) + + const apiCall = new usersService(); + const [othersInterestedList, setOthersInterestedList] = useState({loading: true, data: []}) + + useEffect(() => { + if(!state){ + navigate('/', {replace: true}) + return + } + apiCall.offersInterestList().then(res => { + setOthersInterestedList({loading: false, data: res.data.result_list}) + }).catch(err => { + setOthersInterestedList({loading: false, data: []}) + console.log('Error: ', err) + }) + }, []); + + // debugger; + return ( + <> + + > + ); +}
Message to dummy name
2023-04-06-from { }Dummy name
I am testing message
{item?.client_name}
No Offer list avaliable.