import {AddJobAdModal} from "./AddJobAdModal"; import "./JobAdvertisements.css" import "../shared_css/Random.css" import {useDispatch, useSelector} from "react-redux"; import {useEffect, useState} from "react"; import {JobAdvertisementActions} from "../../redux/actions/jobAdvertisementActions"; import {formatRelativeTime, sortElementsBy} from "../../utils/utils"; import {dataRangeOptions, industryOptions, industryOptionsFilter, sortOptions} from "../selectOptions"; import Select from "react-select"; import {DeleteJobAdModal} from "./DeleteJobAdModal"; import {EditJobAdModal} from "./EditJobAdModal"; import {Link} from "react-router-dom"; import JobType from "../../enumerations/JobType"; import {RecruiterActions} from "../../redux/actions/recruiterActions"; export const Workspace = (props) => { const dispatch = useDispatch(); const [dispatched, setDispatched] = useState(false) const auth = useSelector(state => (state.auth.currentUser)) const [jobAdvertisementsByRecruiter, setJobAdvertisementsByRecruiter] = useState([]); let jobAdvertisementsByRecruiterState = useSelector(state => (state.jobAd.jobAdvertisementsByRecruiter)) const [recruiterDetails, setRecruiterDetails] = useState(null); const [selectedSortOrder, setSelectedSortOrder] = useState("date_newest"); const [selectedIndustry, setSelectedIndustry] = useState("all"); const [searchTerm, setSearchTerm] = useState(""); const [activeJobListingsCount, setActiveJobListingsCount] = useState(0); useEffect(() => { if (auth) { dispatch(RecruiterActions.fetchRecruiterEditDetailsById(auth.id, (success, response) => { if (success) { setRecruiterDetails(response.data) } })) } }, [auth]); useEffect(() => { if (!dispatched && jobAdvertisementsByRecruiterState.length === 0) { dispatch(JobAdvertisementActions.fetchJobAdvertisementsByRecruiter(auth.id, (success, response) => { if (success && response.data.length > 0) { setJobAdvertisementsByRecruiter(sortElementsBy(response.data)) } console.log("Fetch job advertisements by recruiter GET") })) setDispatched(true); } else { setJobAdvertisementsByRecruiter(jobAdvertisementsByRecruiterState) console.log("Fetch job advertisements by recruiter STATE") setActiveJobListingsCount(countActiveJobListings(jobAdvertisementsByRecruiterState)); } }, [jobAdvertisementsByRecruiterState]) let filterJobAdvertisements = () => { JobAdvertisementActions.filterJobAdvertisementsByRecruiter(auth.id, { searchTerm: searchTerm, industry: selectedIndustry, sortOrder: selectedSortOrder }, (success, response) => { if (success) { setJobAdvertisementsByRecruiter(response.data); } }) } function countActiveJobListings(jobAds) { if (jobAds.length > 0) { const activeJobListings = jobAds.filter(job => job.active) return activeJobListings.length; } return 0; } return (
{/*
*/}
setSearchTerm(event.target.value)} />
setSelectedSortOrder(option.value)} options={sortOptions} className="sort-range sort" />
{jobAdvertisementsByRecruiter && jobAdvertisementsByRecruiter.map((jobAd, index) => (
${jobAd.startingSalary}/hr {jobAd.jobType === JobType.JOB ? "Job" : "Internship"} {!jobAd.active && Expired}
{jobAd.title}
{jobAd.industry} • {formatRelativeTime(jobAd.postedOn)}
Company: {jobAd.recruiterName}
View applications
))}
) }