Rev 7272 | Rev 7277 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useState } from 'react'import { axios } from '../../utils'import { useParams } from 'react-router-dom'import { useDispatch } from 'react-redux'import { getBackendVars } from '../../services/backendVars'import { addNotification } from '../../redux/notification/notification.actions'import { Container, Grid, Tab, Tabs } from '@mui/material'import parse from 'html-react-parser'import Description from '../../components/job/Description'import JobAttr from '../../components/job/JobAttr'import ClientInfo from '../../components/job/ClientInfo'import ApplyModal from '../../components/job/ApplyModal'const JobViewPage = () => {const [job, setJob] = useState({})const [isJobApplied, setIsJobApplied] = useState(false)const [showApplyModal, setShowApplyModal] = useState(false)const [loading, setLoading] = useState(false)const { uuid } = useParams()const dispatch = useDispatch()const {jobId = '',companyId = '',companyImage = '',jobTitle = '',companyName = '',timeElapsed = '',location = '',jobSaved = '',lastDateOfApplication = '',employmentType = '',jobCategory = '',jobDescription = '',jobSkills = '',totalApplications = '',jobVisits = '',experience = '',salary = '',jobLanguages = '',jobDegrees = '',companyIndustry = '',companySize = '',companyAddress = '',companyWebsite = '',companyFoundationYear = '',jobApplyOperation = '',userProfiles = '',} = jobconst handleShowApplyModal = () => {setShowApplyModal(!showApplyModal)}const handleApply = () => {setIsJobApplied(!isJobApplied)}const getJob = () => {getBackendVars(`/job/view/${uuid}}`).then((response) => {console.log(response)setJob(response)}).catch((error) => {throw new Error(error)})}const removeApply = async () => {setLoading(true)axios.post(`/job/remove-apply-job/${job}`).then(({ data: response }) => {const { data, success } = responseif (!success) {const errorMessage =typeof data === 'string'? data: 'Ha ocurrido un error, por favor intente más tarde'dispatch(addNotification({ styled: 'danger', msg: errorMessage }))}handleApply()}).finally(() => setLoading(false))}useEffect(() => {getJob()}, [])useEffect(() => {setIsJobApplied(jobApplyOperation === 'apply')}, [jobApplyOperation])return (<><Container as="main" className="px-0"><Tabs><Tab label="Avance" value="user" disableRipple /><Tab label="Información" value="group" disableRipple /></Tabs><Grid container spacing={2}><Grid item xs={12} md={8} spacing={3}><DescriptionjobId={jobId}companyId={companyId}companyImage={companyImage}jobTitle={jobTitle}companyName={companyName}timeElapsed={timeElapsed}location={location}jobSaved={jobSaved}lastDateOfApplication={lastDateOfApplication}employmentType={employmentType}jobCategory={jobCategory}jobDescription={jobDescription}jobSkills={jobSkills}totalApplications={totalApplications}jobVisits={jobVisits}/><JobAttr title="Visión general" info={parse(jobDescription)} /><JobAttrtitle="Último día de aplicación"info={lastDateOfApplication}/><JobAttr title="Tipo de empleo" info={employmentType} /><JobAttr title="Ubicación" info={location} /><JobAttr title="Experiencia" info={experience} /><JobAttr title="Salario" info={salary} /><JobAttr title="Categoría" info={jobCategory} /><JobAttr title="Habilidades" info={jobSkills} /><JobAttr title="Idiomas" info={jobLanguages} /><JobAttr title="Grados" info={jobDegrees} /></Grid><Grid item xs={12} md={4} spacing={3}><buttontype="button"className={`btn ${isJobApplied ? 'btn-secondary' : 'btn-primary'}`}onClick={isJobApplied ? removeApply : handleShowApplyModal}disabled={loading}>{isJobApplied ? 'Quitar aplicación' : 'Aplicar'}</button><ClientInfocompanySize={companySize}companyAddress={companyAddress}companyWebsite={companyWebsite}companyIndustry={companyIndustry}companyFoundationYear={companyFoundationYear}/></Grid></Grid></Container><ApplyModaljobId={jobId}show={showApplyModal}onApplied={handleApply}userProfiles={userProfiles}onHide={() => setShowApplyModal(false)}/></>)}export default JobViewPage