Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5891 | 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 '../../../../pages/view/templates/linkedin/components/cards/EducationCard'
import ExperienceCard from '../../../../pages/view/templates/linkedin/components/cards/ExperienceCard'
import ItemsList from '../../../../pages/view/templates/linkedin/components/cards/ItemsList'
import ProfileCard from '../../../../pages/view/templates/linkedin/components/ProfileCard'
import ProfileWidget from '../../../../pages/view/templates/linkedin/components/ProfileWidget'
import AptitudesModal from '../../../../components/aptitudes/AptitudesModal'
import EducationModal from '../../../../components/educations/EducationModal'
import ExperienceModal from '../../../../components/experiences/ExperienceModal'
import HobbiesModal from '../../../../components/hobbies-and-interests/HobbiesModal'
import LanguagesModal from '../../../../components/languages/LanguagesModal'
import LocationModal from '../../../../components/location/LocationModal'
import SkillsModal from '../../../../components/skills/SkillsModal'

const EditView = (userInfo) => {
  const {
    experiences: userExperiences,
    educations: userEducations,
    languages: userLanguages,
    skills: userSkills,
    aptitudes: userAptitudes,
    hobbiesAndInterests: userHobbiesAndInterests,
    months,
    options,
    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={options.companySizes}
        industriesOptions={options.industries}
        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={options.degrees}
      />
    ),
    Habilidades: (
      <SkillsModal
        closeModal={closeModal}
        setSkills={(newSkills) => setSkills(newSkills)}
        show={modalShow === 'Habilidades'}
        skillsOptions={options.skills}
        userIdEncrypted={userInfo.profileId}
        userSkillsArray={skills}
      />
    ),
    Idiomas: (
      <LanguagesModal
        show={modalShow === 'Idiomas'}
        closeModal={closeModal}
        userIdEncrypted={userInfo.profileId}
        languagesOptions={options.languages}
        userLanguages={languages}
        setLanguages={(newLanguages) => setLanguages(newLanguages)}
      />
    ),
    Aptitudes: (
      <AptitudesModal
        show={modalShow === 'Aptitudes'}
        closeModal={closeModal}
        userIdEncrypted={userInfo.profileId}
        aptitudesOptions={options.aptitudes}
        userAptitudes={aptitudes}
        setAptitudes={(newAptitudes) => setAptitudes(newAptitudes)}
      />
    ),
    'Hobbies e Intereses': (
      <HobbiesModal
        show={modalShow === 'Hobbies e Intereses'}
        closeModal={closeModal}
        userIdEncrypted={userInfo.profileId}
        hobbiesAndInterestsOptions={options.hobbiesAndInterests}
        userHobbiesAndInterests={hobbiesAndInterests}
        setUserHobbiesAndInterests={(newHobbiesAndInterests) =>
          setHobbiesAndInterests(newHobbiesAndInterests)
        }
      />
    ),
    Ubicación: (
      <LocationModal
        isModalOpen={modalShow === 'Ubicación'}
        closeModal={() => setModalShow(null)}
        setSettedAddress={(newAddress) => setAddress(newAddress)}
        userIdEncrypted={userInfo.profileId}
      />
    ),
  }

  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.profileId}/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.profileId}/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