Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 8401 | Rev 8428 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
6848 stevensc 1
import React, { useEffect, useState } from 'react'
2
import { Link } from 'react-router-dom'
3
import { getData } from '../../helpers/fetchHelpers';
8412 stevensc 4
import useDataFetching from '../../hooks/useDataFetching';
5
import Spinner from '../../shared/Spinner';
6848 stevensc 6
import EditItem from '../components/EditItem';
8401 stevensc 7
import CategoryModal from '../components/Modals/CategoryModal';
8383 stevensc 8
import DegreesModal from '../components/Modals/DegreesModal';
7138 stevensc 9
import EmploymentTypeModal from '../components/Modals/EmploymentTypeModal';
7771 stevensc 10
import LanguageModal from '../components/Modals/LanguageModal';
7124 stevensc 11
import LastAplicationDayModal from '../components/Modals/LastAplicationDayModal';
7123 stevensc 12
import LocationModal from '../components/Modals/LocationModal';
7120 stevensc 13
import OverviewModal from '../components/Modals/OverviewModal';
8372 stevensc 14
import SkillsModal from '../components/Modals/SkillsModal';
7066 stevensc 15
import StatusModal from '../components/Modals/StatusModal';
7116 stevensc 16
import TitleModal from '../components/Modals/TitleModal';
6628 stevensc 17
 
7770 stevensc 18
const JobsEditView = ({ linkEdit, googleApi }) => {
6848 stevensc 19
 
8412 stevensc 20
    const { results, loading, error } = useDataFetching(linkEdit)
7066 stevensc 21
    const [modalToShow, setModalToShow] = useState(null);
6848 stevensc 22
    const [itemsData, setItemsData] = useState({
7106 stevensc 23
        title: '',
24
        status: '',
6848 stevensc 25
        description: '',
26
        location: '',
27
        employment_type: '',
28
        last_date_of_application: '',
29
        job_category: '',
30
        experience: '',
31
        salary: '',
32
        degrees: [],
33
        languages: [],
34
        skills: []
35
    });
7066 stevensc 36
    const [itemsRoutes, setItemsRoutes] = useState({
37
        route_degrees: "",
38
        route_employment_type: "",
39
        route_experience: "",
40
        route_extended: "",
41
        route_job_category: "",
42
        route_languages: "",
43
        route_last_date_of_application: "",
44
        route_location: "",
45
        route_salary: "",
46
        route_skills: "",
47
        route_status: "",
48
        route_title: ""
49
    });
6848 stevensc 50
 
7066 stevensc 51
    const closeModal = () => setModalToShow(null)
52
 
6848 stevensc 53
    useEffect(() => {
8412 stevensc 54
        if (results) {
55
            setItemsData({
56
                ...itemsData,
57
                title: results.title,
58
                status: results.status,
59
                description: results.description,
60
                location: results.location,
61
                employment_type: results.employment_type,
62
                last_date_of_application: results.last_date_of_application,
63
                job_category: results.job_category,
64
                experience: results.experience,
65
                salary: results.salary,
66
                degrees: results.degrees,
67
                languages: results.languages,
68
                skills: results.skills
6848 stevensc 69
            })
8412 stevensc 70
            setItemsRoutes({
71
                route_degrees: results.route_degrees,
72
                route_employment_type: results.route_employment_type,
73
                route_experience: results.route_experience,
74
                route_extended: results.route_extended,
75
                route_job_category: results.route_job_category,
76
                route_languages: results.route_languages,
77
                route_last_date_of_application: results.route_last_date_of_application,
78
                route_location: results.route_location,
79
                route_salary: results.route_salary,
80
                route_skills: results.route_skills,
81
                route_status: results.route_status,
82
                route_title: results.route_title
83
            })
84
        }
85
    }, [modalToShow])
6848 stevensc 86
 
7066 stevensc 87
    const ModalOptions = {
7107 stevensc 88
        "Estatus": <StatusModal closeModal={closeModal} modalData={itemsData.status} dataLink={itemsRoutes.route_status} />,
7116 stevensc 89
        "Título": <TitleModal closeModal={closeModal} modalData={itemsData.title} dataLink={itemsRoutes.route_title} />,
7120 stevensc 90
        "Visión general": <OverviewModal closeModal={closeModal} modalData={itemsData.description} dataLink={itemsRoutes.route_extended} />,
7124 stevensc 91
        "Último día de aplicación": <LastAplicationDayModal closeModal={closeModal} modalData={itemsData.last_date_of_application} dataLink={itemsRoutes.route_last_date_of_application} />,
7768 stevensc 92
        "Tipo de empleo": <EmploymentTypeModal closeModal={closeModal} modalData={itemsData.employment_type} dataLink={itemsRoutes.route_employment_type} />,
7770 stevensc 93
        "Ubicación": <LocationModal closeModal={closeModal} modalData={itemsData.location} dataLink={itemsRoutes.route_location} googleApiKey={googleApi} />,
8372 stevensc 94
        "Idiomas": <LanguageModal closeModal={closeModal} dataLink={itemsRoutes.route_languages} />,
8383 stevensc 95
        "Habilidades": <SkillsModal closeModal={closeModal} dataLink={itemsRoutes.route_skills} />,
8387 stevensc 96
        "Grados": <DegreesModal closeModal={closeModal} dataLink={itemsRoutes.route_degrees} />,
8401 stevensc 97
        "Categoría": <CategoryModal closeModal={closeModal} dataLink={itemsRoutes.route_job_category} />,
7066 stevensc 98
        "Experiencia": "",
99
        "Salario": "",
100
    }
101
 
6628 stevensc 102
    return (
103
        <>
104
            <section className="content-header">
105
                <div className="container-fluid">
106
                    <div className="row mb-2">
107
                        <div className="col-sm-12">
6848 stevensc 108
                            <Link to='/jobs' className='text-decoration-none text-body'>
109
                                <h1>
110
                                    <i className='fa fa-angle-left fw-bold mr-2' />
111
                                    Editar empleo
112
                                </h1>
113
                            </Link>
6628 stevensc 114
                        </div>
115
                    </div>
116
                </div>
117
            </section>
6848 stevensc 118
            <section class="content">
119
                <div class="container-fluid">
120
                    <div class="row">
121
                        <div class="col-lg-3">
122
                        </div>
123
                        <div class="col-lg-6">
7086 stevensc 124
                            {
8412 stevensc 125
                                loading
126
                                    ? <Spinner />
127
                                    :
128
                                    <div class="main-ws-sec">
129
                                        <EditItem title='Estatus' data={itemsData.status} showModal={setModalToShow} />
130
                                        <EditItem title='Título' data={itemsData.title} showModal={setModalToShow} />
131
                                        <EditItem title='Visión general' data={itemsData.description} showModal={setModalToShow} />
132
                                        <EditItem title='Último día de aplicación' data={itemsData.last_date_of_application} showModal={setModalToShow} />
133
                                        <EditItem title='Tipo de empleo' data={itemsData.employment_type} showModal={setModalToShow} />
134
                                        <EditItem title='Ubicación' data={itemsData.location} showModal={setModalToShow} />
135
                                        <EditItem title='Experiencia' data={itemsData.experience} showModal={setModalToShow} />
136
                                        <EditItem title='Salario' data={itemsData.salary} showModal={setModalToShow} />
137
                                        <EditItem title='Categoría' data={itemsData.job_category} showModal={setModalToShow} />
138
                                        <EditItem title='Habilidades' data={itemsData.skills} showModal={setModalToShow} />
139
                                        <EditItem title='Idiomas' data={itemsData.languages} showModal={setModalToShow} />
140
                                        <EditItem title='Grados' data={itemsData.degrees} showModal={setModalToShow} />
141
                                    </div>
142
                            }
143
                            {
7086 stevensc 144
                                ModalOptions[modalToShow]
145
                            }
6848 stevensc 146
                        </div>
147
                        <div class="col-lg-3">
148
                        </div>
149
                    </div>
150
                </div>
151
            </section>
6628 stevensc 152
        </>
153
    )
154
}
155
 
156
export default JobsEditView