Rev 5831 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
/* eslint-disable react/prop-types */import React, { useState } from 'react'import parse from 'html-react-parser'import { axios } from '../../../utils'import { useDispatch } from 'react-redux'import { addNotification } from '../../../redux/notification/notification.actions'import JobAttr from './components/JobAttr'import ApplyModal from './components/ApplyModal'import ClientInfo from './components/ClientInfo'import Description from './components/Description'const View = ({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,}) => {const TABS_OPTIONS = {info: 'Information',advance: 'Advance',}const [currentTab, setCurrentTab] = useState(TABS_OPTIONS.info)const [showApplyModal, setShowApplyModal] = useState(false)const [loading, setLoading] = useState(false)const [isJobApplied, setIsJobApplied] = useState(jobApplyOperation !== 'apply')const dispatch = useDispatch()const handleShowApplyModal = () => setShowApplyModal(!showApplyModal)const handleApply = () => setIsJobApplied(!isJobApplied)const removeApply = async () => {setLoading(true)axios.post(`/job/remove-apply-job/${jobId}`).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))}return (<><main className="job-page container px-0"><ul className="job-tabs"><li className="animated fadeIn"><buttonclassName="btn"onClick={() => setCurrentTab(TABS_OPTIONS.advance)}><img src="/images/ic3.png" alt="" /><span>Avance</span></button></li><li className="animated fadeIn"><buttonclassName="btn"onClick={() => setCurrentTab(TABS_OPTIONS.info)}><img src="/images/ic2.png" alt="" /><span>Información</span></button></li></ul><section className="job-main-section"><div className="description_header fadeIn"><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}/></div><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} /></section><div className="sidebar"><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}/></div></main><ApplyModaljobId={jobId}show={showApplyModal}onApplied={handleApply}userProfiles={userProfiles}onHide={() => setShowApplyModal(false)}/></>)}export default View