import "./JobAdDetails.css" import {useEffect, useState} from "react"; import {useDispatch, useSelector} from "react-redux"; import {JobAdvertisementActions} from "../../redux/actions/jobAdvertisementActions"; import {useParams} from "react-router"; import Roles from "../../enumerations/Roles"; import JobType from "../../enumerations/JobType"; import EmploymentStatus from "../../enumerations/EmploymentStatus"; import {formatRelativeTime} from "../../utils/utils"; import {AddJobAdModal} from "./AddJobAdModal"; import {ApplyToJobAdModal} from "../applications/ApplyToJobAdModal"; import {Link} from "react-router-dom"; import {RecruiterActions} from "../../redux/actions/recruiterActions"; export const JobAdDetails = () => { const dispatch = useDispatch(); const [jobAd, setJobAd] = useState("") const [recruiterDetails, setRecruiterDetails] = useState(""); const [role, setRole] = useState("") const {id} = useParams(); const auth = useSelector(state => state.auth.currentUser); let logosState = useSelector(state => state.images.logos) const [logoDispatched, setLogoDispatched] = useState(false) const [logoView, setLogoView] = useState(null); useEffect(() => { setRole(auth.role) }, [auth]) useEffect(() => { if (jobAd) { if (!logoDispatched && !logosState[jobAd.recruiterId]) { dispatch(RecruiterActions.downloadLogo(jobAd.recruiterId, (success, response) => { if (success) { setLogoView(response) setLogoDispatched(true) } })) } else { setLogoView(logosState[jobAd.recruiterId]) } } }, [jobAd]) useEffect(() => { JobAdvertisementActions.fetchJobAdvertisementById(id, (success, response) => { if (success) { setJobAd(response.data) JobAdvertisementActions.fetchRecruiterDetailsById(response.data.recruiterId, (successAgain, responseAgain) => { if(successAgain) { setRecruiterDetails(responseAgain.data) } }) } }); }, []) return (

{jobAd.title}

{jobAd.jobType===JobType.JOB ? "Job" : "Internship"} {!jobAd.active && Expired}

{jobAd.recruiterName}{jobAd.industry}{formatRelativeTime(jobAd.postedOn)}

Hourly rate: ${jobAd.startingSalary}

Employment status: {jobAd.employmentStatus==="FULL_TIME" ? "Full-time" : "Part-time"}

Active until: {new Date(jobAd.activeUntil).toLocaleString('default', { day: 'numeric', month: 'long', year: 'numeric' })}

{jobAd.recruiterId && <> }

About the job

{jobAd.description && (

") }}>

)}
{jobAd.recruiterName}

About the company

{recruiterDetails.companyDescription ? recruiterDetails.companyDescription.length > 710 ? `${recruiterDetails.companyDescription.substring(0, 710)}...` : recruiterDetails.companyDescription : "There is no info about this company yet." }

{recruiterDetails.contactEmail}
{recruiterDetails.contactPhoneNumber}
{recruiterDetails.receptionist && <> {recruiterDetails.receptionist} }

Read more
) }