Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5868 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

import React, { useState } from 'react'
import EmptySection from '../../../../../../shared/empty-section/EmptySection'
import EducationCard from '../../../../../view/templates/linkedin/components/cards/EducationCard'
import ExperienceCard from '../../../../../view/templates/linkedin/components/cards/ExperienceCard'
import ItemsList from '../../../../../view/templates/linkedin/components/cards/ItemsList'
import ProfileCard from '../../../../../view/templates/linkedin/components/ProfileCard'
import ProfileWidget from '../../../../../view/templates/linkedin/components/ProfileWidget'
import AptitudesModal from '../../../aptitudes/AptitudesModal'
import EducationModal from '../../../educations/education/EducationModal'
import ExperienceModal from '../../../experiences/experience/ExperienceModal'
import HobbiesModal from '../../../hobbies-and-interests/HobbiesModal'
import LanguagesModal from '../../../languages/LanguagesModal'
import LocationModal from '../../../location/LocationModal'
import SkillsModal from '../../../skills/SkillsModal'

const EditView = (userInfo) => {
  const {
    userExperiences,
    userEducations,
    userLanguages,
    userSkills,
    userAptitudes,
    userHobbiesAndInterests,
    companySizesOptions,
    industriesOptions,
    months,
    degreesOptions,
    skillsOptions,
    languagesOptions,
    aptitudesOptions,
    hobbiesAndInterestsOptions,
    formatted_address
  } = userInfo

  const [experiences, setExperiences] = useState(userExperiences)
  const [educations, setEducations] = useState(userEducations)
  const [languages, setLanguages] = useState(userLanguages)
  const [skills, setSkills] = useState(userSkills)
  const [aptitudes, setAptitudes] = useState(userAptitudes)
  const [hobbiesAndInterests, setHobbiesAndInterests] = useState(userHobbiesAndInterests)
  const [address, setAddress] = useState(formatted_address)

  const [modalShow, setModalShow] = useState(null)
  const [settedDescription, setSettedDescription] = useState('')
  const [postUrl, setPostUrl] = useState('')
  const [isEdit, setIsEdit] = useState(false)

  const handleEdit = (modalName, url, description) => {
    setModalShow(modalName)
    setPostUrl(url)
    setSettedDescription(description)
  }

  const handleAdd = (modalName, url) => {
    setModalShow(modalName)
    setPostUrl(url)
  }

  const closeModal = () => {
    setSettedDescription('')
    setPostUrl('')
    setIsEdit(false)
    setModalShow(null)
  }

  const renderModal = {
    Experiencia: <ExperienceModal
            companySizesOptions={companySizesOptions}
            industriesOptions={industriesOptions}
            months={months}
            setUserExperiences={(newExperiences) => setExperiences(newExperiences)}
            show={modalShow === 'Experiencia'}
            postUrl={postUrl}
            closeModal={closeModal}
            settedDescription={settedDescription}
        />,
    Educación: <EducationModal
            closeModal={closeModal}
            postUrl={postUrl}
            setEducations={(newEducations) => setEducations(newEducations)}
            show={modalShow === 'Educación'}
            settedDescription={settedDescription}
            degreesOptions={degreesOptions}
        />,
    Habilidades: <SkillsModal
            closeModal={closeModal}
            setSkills={(newSkills) => setSkills(newSkills)}
            show={modalShow === 'Habilidades'}
            skillsOptions={skillsOptions}
            userIdEncrypted={userInfo.userProfileIdEncrypted}
            userSkillsArray={skills}
        />,
    Idiomas: <LanguagesModal
            show={modalShow === 'Idiomas'}
            closeModal={closeModal}
            userIdEncrypted={userInfo.userProfileIdEncrypted}
            languagesOptions={languagesOptions}
            userLanguages={languages}
            setLanguages={(newLanguages) => setLanguages(newLanguages)}
        />,
    Aptitudes: <AptitudesModal
            show={modalShow === 'Aptitudes'}
            closeModal={closeModal}
            userIdEncrypted={userInfo.userProfileIdEncrypted}
            aptitudesOptions={aptitudesOptions}
            userAptitudes={aptitudes}
            setAptitudes={(newAptitudes) => setAptitudes(newAptitudes)}
        />,
    'Hobbies e Intereses': <HobbiesModal
            show={modalShow === 'Hobbies e Intereses'}
            closeModal={closeModal}
            userIdEncrypted={userInfo.userProfileIdEncrypted}
            hobbiesAndInterestsOptions={hobbiesAndInterestsOptions}
            userHobbiesAndInterests={hobbiesAndInterests}
            setUserHobbiesAndInterests={(newHobbiesAndInterests) => setHobbiesAndInterests(newHobbiesAndInterests)}
        />,
    Ubicación: <LocationModal
            isModalOpen={modalShow === 'Ubicación'}
            closeModal={() => setModalShow(null)}
            setSettedAddress={(newAddress) => setAddress(newAddress)}
            userIdEncrypted={userInfo.userProfileIdEncrypted}
        />
  }

  return (
        <main className='w-100'>
            <div className='container'>
                <div className="main d-flex flex-column" style={{ gap: '.5rem' }}>
                    <ProfileCard {...{ ...userInfo, formatted_address: address }} />
                    <ProfileWidget
                        title='Experiencia'
                        onEdit={() => setIsEdit(!isEdit)}
                        onAdd={handleAdd}
                        addUrl={`/profile/my-profiles/experience/${userInfo.userProfileIdEncrypted}/operation/add`}
                    >
                        {experiences.map((experience, index) => {
                          return <ExperienceCard
                                key={index}
                                experience={experience}
                                months={userInfo.months}
                                isEdit={isEdit}
                                onEdit={handleEdit}
                                setExperiences={(newExperiences) => setExperiences(newExperiences)}
                            />
                        })}
                    </ProfileWidget>
                    <ProfileWidget
                        title='Educación'
                        onEdit={() => setIsEdit(!isEdit)}
                        onAdd={handleAdd}
                        addUrl={`/profile/my-profiles/education/${userInfo.userProfileIdEncrypted}/operation/add`}
                    >
                        {educations.map((education, index) => {
                          return <EducationCard
                                key={index}
                                education={education}
                                isEdit={isEdit}
                                onEdit={handleEdit}
                                setEducations={(newEducations) => setEducations(newEducations)}
                            />
                        })}
                    </ProfileWidget>
                    <ProfileWidget title='Ubicación' onEdit={() => setModalShow('Ubicación')} justEdit>
                        <div className='card__items'>
                            <p>{address}</p>
                        </div>
                    </ProfileWidget>
                    <ProfileWidget title='Idiomas' onEdit={() => setModalShow('Idiomas')} justEdit>
                        {!languages.length
                          ? <EmptySection align='left' message="Sin información" />
                          : <ItemsList value={languages} />
                        }
                    </ProfileWidget>
                    <ProfileWidget title='Habilidades' onEdit={() => setModalShow('Habilidades')} justEdit>
                        {!skills.length
                          ? <EmptySection align='left' message="Sin información" />
                          : <ItemsList value={skills} />
                        }
                    </ProfileWidget>
                    <ProfileWidget title='Aptitudes' onEdit={() => setModalShow('Aptitudes')} justEdit>
                        {!aptitudes.length
                          ? <EmptySection align='left' message="Sin información" />
                          : <ItemsList value={aptitudes} />
                        }
                    </ProfileWidget>
                    <ProfileWidget title='Pasatiempos e intereses' onEdit={() => setModalShow('Hobbies e Intereses')} justEdit>
                        {!hobbiesAndInterests.length
                          ? <EmptySection align='left' message="Sin información" />
                          : <ItemsList value={hobbiesAndInterests} />
                        }
                    </ProfileWidget>
                    {renderModal[modalShow]}
                </div>
            </div>
        </main >
  )
}

export default EditView