Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
5871 stevensc 1
import React, { useEffect, useState } from 'react'
5868 stevensc 2
import EmptySection from '../../../../../shared/empty-section/EmptySection'
3
import EducationCard from '../../../../pages/view/templates/linkedin/components/cards/EducationCard'
4
import ExperienceCard from '../../../../pages/view/templates/linkedin/components/cards/ExperienceCard'
5
import ItemsList from '../../../../pages/view/templates/linkedin/components/cards/ItemsList'
6
import ProfileCard from '../../../../pages/view/templates/linkedin/components/ProfileCard'
7
import ProfileWidget from '../../../../pages/view/templates/linkedin/components/ProfileWidget'
8
import AptitudesModal from '../../../../components/aptitudes/AptitudesModal'
9
import EducationModal from '../../../../components/educations/EducationModal'
10
import ExperienceModal from '../../../../components/experiences/ExperienceModal'
11
import HobbiesModal from '../../../../components/hobbies-and-interests/HobbiesModal'
12
import LanguagesModal from '../../../../components/languages/LanguagesModal'
13
import LocationModal from '../../../../components/location/LocationModal'
14
import SkillsModal from '../../../../components/skills/SkillsModal'
5473 stevensc 15
 
16
const EditView = (userInfo) => {
17
  const {
5872 stevensc 18
    experiences: userExperiences,
5865 stevensc 19
    educations: userEducations,
20
    languages: userLanguages,
21
    skills: userSkills,
22
    aptitudes: userAptitudes,
23
    hobbiesAndInterests: userHobbiesAndInterests,
5473 stevensc 24
    months,
5865 stevensc 25
    options,
26
    formatted_address,
5473 stevensc 27
  } = userInfo
28
 
29
  const [experiences, setExperiences] = useState(userExperiences)
30
  const [educations, setEducations] = useState(userEducations)
5871 stevensc 31
  const [languages, setLanguages] = useState([])
32
  const [skills, setSkills] = useState([])
33
  const [aptitudes, setAptitudes] = useState([])
34
  const [hobbiesAndInterests, setHobbiesAndInterests] = useState([])
5473 stevensc 35
  const [address, setAddress] = useState(formatted_address)
36
 
37
  const [modalShow, setModalShow] = useState(null)
38
  const [settedDescription, setSettedDescription] = useState('')
39
  const [postUrl, setPostUrl] = useState('')
40
  const [isEdit, setIsEdit] = useState(false)
41
 
42
  const handleEdit = (modalName, url, description) => {
43
    setModalShow(modalName)
44
    setPostUrl(url)
45
    setSettedDescription(description)
46
  }
47
 
48
  const handleAdd = (modalName, url) => {
49
    setModalShow(modalName)
50
    setPostUrl(url)
51
  }
52
 
53
  const closeModal = () => {
54
    setSettedDescription('')
55
    setPostUrl('')
56
    setIsEdit(false)
57
    setModalShow(null)
58
  }
59
 
60
  const renderModal = {
5865 stevensc 61
    Experiencia: (
62
      <ExperienceModal
63
        companySizesOptions={options.companySizes}
64
        industriesOptions={options.industries}
65
        months={months}
66
        setUserExperiences={(newExperiences) => setExperiences(newExperiences)}
67
        show={modalShow === 'Experiencia'}
68
        postUrl={postUrl}
69
        closeModal={closeModal}
70
        settedDescription={settedDescription}
71
      />
72
    ),
73
    Educación: (
74
      <EducationModal
75
        closeModal={closeModal}
76
        postUrl={postUrl}
77
        setEducations={(newEducations) => setEducations(newEducations)}
78
        show={modalShow === 'Educación'}
79
        settedDescription={settedDescription}
80
        degreesOptions={options.degrees}
81
      />
82
    ),
83
    Habilidades: (
84
      <SkillsModal
85
        closeModal={closeModal}
86
        setSkills={(newSkills) => setSkills(newSkills)}
87
        show={modalShow === 'Habilidades'}
5871 stevensc 88
        skillsOptions={Object.entries(options.skills).map(([key, value]) => ({
89
          value: key,
90
          name: value,
91
        }))}
5865 stevensc 92
        userIdEncrypted={userInfo.userProfileIdEncrypted}
93
        userSkillsArray={skills}
94
      />
95
    ),
96
    Idiomas: (
97
      <LanguagesModal
98
        show={modalShow === 'Idiomas'}
99
        closeModal={closeModal}
100
        userIdEncrypted={userInfo.userProfileIdEncrypted}
5871 stevensc 101
        languagesOptions={Object.entries(options.languages).map(
102
          ([key, value]) => ({ value: key, name: value })
103
        )}
5865 stevensc 104
        userLanguages={languages}
105
        setLanguages={(newLanguages) => setLanguages(newLanguages)}
106
      />
107
    ),
108
    Aptitudes: (
109
      <AptitudesModal
110
        show={modalShow === 'Aptitudes'}
111
        closeModal={closeModal}
112
        userIdEncrypted={userInfo.userProfileIdEncrypted}
5871 stevensc 113
        aptitudesOptions={Object.entries(options.aptitudes).map(
114
          ([key, value]) => ({ value: key, name: value })
115
        )}
5865 stevensc 116
        userAptitudes={aptitudes}
117
        setAptitudes={(newAptitudes) => setAptitudes(newAptitudes)}
118
      />
119
    ),
120
    'Hobbies e Intereses': (
121
      <HobbiesModal
122
        show={modalShow === 'Hobbies e Intereses'}
123
        closeModal={closeModal}
124
        userIdEncrypted={userInfo.userProfileIdEncrypted}
5871 stevensc 125
        hobbiesAndInterestsOptions={Object.entries(
126
          options.hobbiesAndInterests
127
        ).map(([key, value]) => ({ value: key, name: value }))}
5865 stevensc 128
        userHobbiesAndInterests={hobbiesAndInterests}
129
        setUserHobbiesAndInterests={(newHobbiesAndInterests) =>
130
          setHobbiesAndInterests(newHobbiesAndInterests)
131
        }
132
      />
133
    ),
134
    Ubicación: (
135
      <LocationModal
136
        isModalOpen={modalShow === 'Ubicación'}
137
        closeModal={() => setModalShow(null)}
138
        setSettedAddress={(newAddress) => setAddress(newAddress)}
139
        userIdEncrypted={userInfo.userProfileIdEncrypted}
140
      />
141
    ),
5473 stevensc 142
  }
143
 
5871 stevensc 144
  useEffect(() => {
145
    const adapters = [
146
      {
147
        value: userSkills,
148
        setter: setSkills,
149
      },
150
      {
151
        value: userLanguages,
152
        setter: setLanguages,
153
      },
154
      {
155
        value: userAptitudes,
156
        setter: setAptitudes,
157
      },
158
      {
159
        value: userHobbiesAndInterests,
160
        setter: setHobbiesAndInterests,
161
      },
162
    ]
163
 
164
    adapters.map((adapter) => {
165
      const value = Object.entries(adapter.value).map(([key, value]) => ({
166
        value: key,
167
        name: value,
168
      }))
169
      adapter.setter(value)
170
    })
171
  }, [])
172
 
173
  return (
174
    <main className="w-100">
175
      <div className="container">
176
        <div className="main d-flex flex-column" style={{ gap: '.5rem' }}>
177
          <ProfileCard {...{ ...userInfo, formatted_address: address }} />
178
          <ProfileWidget
179
            title="Experiencia"
180
            onEdit={() => setIsEdit(!isEdit)}
181
            onAdd={handleAdd}
182
            addUrl={`/profile/my-profiles/experience/${userInfo.userProfileIdEncrypted}/operation/add`}
183
          >
184
            {experiences.map((experience, index) => {
185
              return (
186
                <ExperienceCard
187
                  key={index}
188
                  experience={experience}
189
                  months={userInfo.months}
190
                  isEdit={isEdit}
191
                  onEdit={handleEdit}
192
                  setExperiences={(newExperiences) =>
193
                    setExperiences(newExperiences)
194
                  }
195
                />
196
              )
197
            })}
198
          </ProfileWidget>
199
          <ProfileWidget
200
            title="Educación"
201
            onEdit={() => setIsEdit(!isEdit)}
202
            onAdd={handleAdd}
203
            addUrl={`/profile/my-profiles/education/${userInfo.userProfileIdEncrypted}/operation/add`}
204
          >
205
            {educations.map((education, index) => {
206
              return (
207
                <EducationCard
208
                  key={index}
209
                  education={education}
210
                  isEdit={isEdit}
211
                  onEdit={handleEdit}
212
                  setEducations={(newEducations) =>
213
                    setEducations(newEducations)
214
                  }
215
                />
216
              )
217
            })}
218
          </ProfileWidget>
219
          <ProfileWidget
220
            title="Ubicación"
221
            onEdit={() => setModalShow('Ubicación')}
222
            justEdit
223
          >
224
            <div className="card__items">
225
              <p>{address}</p>
226
            </div>
227
          </ProfileWidget>
228
          <ProfileWidget
229
            title="Idiomas"
230
            onEdit={() => setModalShow('Idiomas')}
231
            justEdit
232
          >
233
            {!languages.length ? (
234
              <EmptySection align="left" message="Sin información" />
235
            ) : (
236
              <ItemsList value={languages} />
237
            )}
238
          </ProfileWidget>
239
          <ProfileWidget
240
            title="Habilidades"
241
            onEdit={() => setModalShow('Habilidades')}
242
            justEdit
243
          >
244
            {!skills.length ? (
245
              <EmptySection align="left" message="Sin información" />
246
            ) : (
247
              <ItemsList value={skills} />
248
            )}
249
          </ProfileWidget>
250
          <ProfileWidget
251
            title="Aptitudes"
252
            onEdit={() => setModalShow('Aptitudes')}
253
            justEdit
254
          >
255
            {!aptitudes.length ? (
256
              <EmptySection align="left" message="Sin información" />
257
            ) : (
258
              <ItemsList value={aptitudes} />
259
            )}
260
          </ProfileWidget>
261
          <ProfileWidget
262
            title="Pasatiempos e intereses"
263
            onEdit={() => setModalShow('Hobbies e Intereses')}
264
            justEdit
265
          >
266
            {!hobbiesAndInterests.length ? (
267
              <EmptySection align="left" message="Sin información" />
268
            ) : (
269
              <ItemsList value={hobbiesAndInterests} />
270
            )}
271
          </ProfileWidget>
272
          {renderModal[modalShow]}
273
        </div>
274
      </div>
275
    </main>
276
  )
5473 stevensc 277
}
278
 
279
export default EditView