Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
743 stevensc 1
import React, { useState, useEffect } from 'react'
2
import { useParams } from 'react-router-dom'
3
import { useSelector } from 'react-redux'
4
import { getBackendVars } from '../../services/backendVars'
956 stevensc 5
import { Container, Grid } from '@mui/material'
6
 
743 stevensc 7
import ProfileCard from '../../components/linkedin/profile/ProfileCard'
8
import ProfileWidget from '../../components/linkedin/profile/ProfileWidget'
9
import ExperienceCard from '../../components/linkedin/profile/cards/ExperienceCard'
10
import EducationCard from '../../components/linkedin/profile/cards/EducationCard'
11
import EmptySection from '../../components/UI/EmptySection'
956 stevensc 12
import TagsList from '../../components/UI/TagsList'
743 stevensc 13
import ExperienceModal from '../../components/experiences/ExperienceModal'
14
import EducationModal from '../../components/educations/EducationModal'
15
import SkillsModal from '../../components/skills/SkillsModal'
16
import LanguagesModal from '../../components/languages/LanguagesModal'
17
import AptitudesModal from '../../components/aptitudes/AptitudesModal'
18
import HobbiesModal from '../../components/hobbies-and-interests/HobbiesModal'
19
import LocationModal from '../../components/location/LocationModal'
5 stevensc 20
 
956 stevensc 21
import '../../styles/profile/profile.scss'
22
 
5 stevensc 23
const View = () => {
743 stevensc 24
  const [profile, setProfile] = useState({})
25
  const [experiences, setExperiences] = useState([])
26
  const [educations, setEducations] = useState([])
27
  const [languages, setLanguages] = useState([])
28
  const [skills, setSkills] = useState([])
29
  const [aptitudes, setAptitudes] = useState([])
30
  const [hobbiesAndInterests, setHobbiesAndInterests] = useState([])
31
  const [address, setAddress] = useState('')
32
  const [modalShow, setModalShow] = useState(null)
33
  const [settedDescription, setSettedDescription] = useState('')
34
  const [postUrl, setPostUrl] = useState('')
35
  const [isEdit, setIsEdit] = useState(false)
36
  const labels = useSelector(({ intl }) => intl.labels)
37
  const { uuid } = useParams()
5 stevensc 38
 
39
  const handleEdit = (modalName, url, description) => {
743 stevensc 40
    setModalShow(modalName)
41
    setPostUrl(url)
42
    setSettedDescription(description)
43
  }
5 stevensc 44
 
45
  const handleAdd = (modalName, url) => {
743 stevensc 46
    setModalShow(modalName)
47
    setPostUrl(url)
48
  }
5 stevensc 49
 
50
  const closeModal = () => {
743 stevensc 51
    setSettedDescription('')
52
    setPostUrl('')
53
    setIsEdit(false)
54
    setModalShow(null)
55
  }
5 stevensc 56
 
57
  const renderModal = {
58
    Experiencia: (
59
      <ExperienceModal
743 stevensc 60
        show={modalShow === 'Experiencia'}
5 stevensc 61
        url={postUrl}
62
        isEdit={isEdit}
63
        onClose={closeModal}
64
        onComplete={(newExperiences) => setExperiences(newExperiences)}
65
      />
66
    ),
67
    Educación: (
68
      <EducationModal
743 stevensc 69
        show={modalShow === 'Educación'}
5 stevensc 70
        postUrl={postUrl}
71
        closeModal={closeModal}
72
        setEducations={(newEducations) => setEducations(newEducations)}
73
        settedDescription={settedDescription}
74
      />
75
    ),
76
    Habilidades: (
77
      <SkillsModal
743 stevensc 78
        show={modalShow === 'Habilidades'}
5 stevensc 79
        userSkills={skills}
80
        userId={profile?.user_profile_uuid}
81
        onClose={closeModal}
82
        onComplete={(newSkills) => setSkills(newSkills)}
83
      />
84
    ),
85
    Idiomas: (
86
      <LanguagesModal
743 stevensc 87
        show={modalShow === 'Idiomas'}
5 stevensc 88
        userId={profile?.user_profile_uuid}
89
        userLanguages={languages}
90
        onClose={closeModal}
91
        onComplete={(newLanguages) => setLanguages(newLanguages)}
92
      />
93
    ),
94
    Aptitudes: (
95
      <AptitudesModal
743 stevensc 96
        show={modalShow === 'Aptitudes'}
5 stevensc 97
        userId={profile?.user_profile_uuid}
98
        userAptitudes={aptitudes}
99
        onClose={closeModal}
100
        onComplete={(newAptitudes) => setAptitudes(newAptitudes)}
101
      />
102
    ),
743 stevensc 103
    'Hobbies e Intereses': (
5 stevensc 104
      <HobbiesModal
105
        onClose={closeModal}
743 stevensc 106
        show={modalShow === 'Hobbies e Intereses'}
5 stevensc 107
        userId={profile?.user_profile_uuid}
108
        userHobbies={hobbiesAndInterests}
109
        onComplete={(newHobbiesAndInterests) =>
110
          setHobbiesAndInterests(newHobbiesAndInterests)
111
        }
112
      />
113
    ),
114
    Ubicación: (
115
      <LocationModal
743 stevensc 116
        show={modalShow === 'Ubicación'}
5 stevensc 117
        onClose={() => setModalShow(null)}
118
        onComplete={(newAddress) => setAddress(newAddress)}
119
        id={profile?.user_profile_uuid}
120
      />
743 stevensc 121
    )
122
  }
5 stevensc 123
 
124
  useEffect(() => {
125
    getBackendVars(`/profile/my-profiles/edit/${uuid}`)
126
      .then((vars) => {
127
        const {
128
          user_experiences,
129
          user_educations,
130
          user_hobbies_and_interests,
131
          user_skills,
132
          user_aptitudes,
133
          user_languages,
134
          formatted_address,
135
          ...profileInfo
743 stevensc 136
        } = vars
5 stevensc 137
 
138
        const attrAdapter = (attr) => {
139
          return Object.entries(attr).map(([key, value]) => {
743 stevensc 140
            return { name: value, value: key }
141
          })
142
        }
5 stevensc 143
 
743 stevensc 144
        setExperiences(user_experiences)
145
        setEducations(user_educations)
146
        setAddress(formatted_address)
147
        setProfile(profileInfo)
148
        setHobbiesAndInterests(attrAdapter(user_hobbies_and_interests))
149
        setSkills(attrAdapter(user_skills))
150
        setAptitudes(attrAdapter(user_aptitudes))
151
        setLanguages(attrAdapter(user_languages))
5 stevensc 152
      })
153
      .catch((err) => {
743 stevensc 154
        console.log(`Error: ${err}`)
155
      })
156
  }, [])
5 stevensc 157
 
158
  return (
159
    <>
957 stevensc 160
      <Container as='main' sx={{ p: 0 }}>
956 stevensc 161
        <Grid container spacing={2}>
162
          <Grid item xs={12} display='flex' direction='column' gap={2}>
5 stevensc 163
            <ProfileCard
164
              {...profile}
165
              sizes={{
166
                image: profile.image_size_profile,
743 stevensc 167
                cover: profile.image_size_cover
5 stevensc 168
              }}
169
              uuid={profile.user_uuid}
224 stevensc 170
              image={profile.image}
171
              cover={profile.cover}
5 stevensc 172
            />
956 stevensc 173
 
5 stevensc 174
            <ProfileWidget
175
              title={labels.experience}
176
              onEdit={() => setIsEdit(!isEdit)}
177
              onAdd={handleAdd}
178
              addUrl={`/profile/my-profiles/experience/${uuid}/operation/add`}
179
            >
180
              {experiences.length ? (
181
                experiences.map((experience, index) => (
182
                  <ExperienceCard
183
                    key={index}
184
                    isEdit={isEdit}
185
                    experience={experience}
186
                    onEdit={handleEdit}
187
                    onDelete={(newExperiences) =>
188
                      setExperiences(newExperiences)
189
                    }
190
                  />
191
                ))
192
              ) : (
743 stevensc 193
                <EmptySection align='left' message={labels.empty} />
5 stevensc 194
              )}
195
            </ProfileWidget>
956 stevensc 196
 
5 stevensc 197
            <ProfileWidget
198
              title={labels.education}
199
              onEdit={() => setIsEdit(!isEdit)}
200
              onAdd={handleAdd}
201
              addUrl={`/profile/my-profiles/education/${profile?.user_profile_uuid}/operation/add`}
202
            >
203
              {educations.length ? (
204
                educations.map((education, index) => (
205
                  <EducationCard key={index} education={education} />
206
                ))
207
              ) : (
743 stevensc 208
                <EmptySection align='left' message={labels.empty} />
5 stevensc 209
              )}
210
            </ProfileWidget>
956 stevensc 211
 
5 stevensc 212
            <ProfileWidget
213
              title={labels.location}
743 stevensc 214
              onEdit={() => setModalShow('Ubicación')}
5 stevensc 215
              justEdit
216
            >
743 stevensc 217
              <div className='card__items'>
5 stevensc 218
                <p>{address}</p>
219
              </div>
220
            </ProfileWidget>
956 stevensc 221
 
5 stevensc 222
            <ProfileWidget
223
              title={labels.languages}
743 stevensc 224
              onEdit={() => setModalShow('Idiomas')}
5 stevensc 225
              justEdit
226
            >
956 stevensc 227
              <TagsList tags={languages} />
5 stevensc 228
            </ProfileWidget>
956 stevensc 229
 
5 stevensc 230
            <ProfileWidget
231
              title={labels.skills}
743 stevensc 232
              onEdit={() => setModalShow('Habilidades')}
5 stevensc 233
              justEdit
234
            >
956 stevensc 235
              <TagsList tags={skills} />
5 stevensc 236
            </ProfileWidget>
956 stevensc 237
 
5 stevensc 238
            <ProfileWidget
239
              title={labels.aptitudes}
743 stevensc 240
              onEdit={() => setModalShow('Aptitudes')}
5 stevensc 241
              justEdit
242
            >
956 stevensc 243
              <TagsList tags={aptitudes} />
5 stevensc 244
            </ProfileWidget>
956 stevensc 245
 
5 stevensc 246
            <ProfileWidget
247
              title={labels.hobbies_and_interests}
743 stevensc 248
              onEdit={() => setModalShow('Hobbies e Intereses')}
5 stevensc 249
              justEdit
250
            >
956 stevensc 251
              <TagsList tags={hobbiesAndInterests} />
5 stevensc 252
            </ProfileWidget>
956 stevensc 253
          </Grid>
254
        </Grid>
255
      </Container>
5 stevensc 256
      {renderModal[modalShow]}
257
    </>
743 stevensc 258
  )
259
}
5 stevensc 260
 
743 stevensc 261
export default View