Proyectos de Subversion LeadersLinked - SPA

Rev

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