Este archivo define los servicios relacionados con la gestión del CV de los usuarios en Matchify, utilizando el repositorio cvRepository.js para acceder y manipular los datos. Los servicios permiten crear, actualizar, eliminar y obtener las secciones del CV de un usuario.

import {
    createEducacion, createCertificacion, createExperienciaLaboral, createIdioma, createSkill,
    updateEducacion, updateCertificacion, updateExperienciaLaboral, updateIdioma, updateSkill,
    deleteEducacion, deleteCertificacion, deleteExperienciaLaboral, deleteIdioma, deleteSkill,
    getEducacion, getCertificacion, getExperienciaLaboral, getIdioma, getSkill, getCVCandidato
} from '../repositories/cvRepository.js';

export const createCVService = async (userId, cvData) => {
    const { educacion = [], certificacion = [], experienciaLaboral = [], idioma = [], skill = [] } = cvData;

    if (!Array.isArray(educacion) || !Array.isArray(certificacion) || !Array.isArray(experienciaLaboral) || !Array.isArray(idioma) || !Array.isArray(skill)) {
        throw new Error('Algunos de los datos proporcionados no son arrays');
    }

    const educacionResult = await createEducacion(userId, educacion);
    const certificacionResult = await createCertificacion(userId, certificacion);
    const experienciaLaboralResult = await createExperienciaLaboral(userId, experienciaLaboral);
    const idiomaResult = await createIdioma(userId, idioma);
    const skillResult = await createSkill(userId, skill);

    return {
        educacion: educacionResult,
        certificacion: certificacionResult,
        experienciaLaboral: experienciaLaboralResult,
        idioma: idiomaResult,
        skill: skillResult
    };
};

export const updateCVService = async (userId, cvData) => {
    const { educacion, certificacion, experienciaLaboral, idioma, skill } = cvData;

    const educacionResult = await updateEducacion(userId, educacion);
    const certificacionResult = await updateCertificacion(userId, certificacion);
    const experienciaLaboralResult = await updateExperienciaLaboral(userId, experienciaLaboral);
    const idiomaResult = await updateIdioma(userId, idioma);
    const skillResult = await updateSkill(userId, skill);

    return {
        educacion: educacionResult,
        certificacion: certificacionResult,
        experienciaLaboral: experienciaLaboralResult,
        idioma: idiomaResult,
        skill: skillResult
    };
};

export const deleteCVSectionService = async (userId, section, id) => {
    switch (section) {
        case 'educacion':
            return await deleteEducacion(userId, id);
        case 'certificacion':
            return await deleteCertificacion(userId, id);
        case 'experienciaLaboral':
            return await deleteExperienciaLaboral(userId, id);
        case 'idioma':
            return await deleteIdioma(userId, id);
        case 'skill':
            return await deleteSkill(userId, id);
        default:
            throw new Error('Sección no válida');
    }
};

export const getCVService = async (userId) => {
    const educacion = await getEducacion(userId);
    const certificacion = await getCertificacion(userId);
    const experienciaLaboral = await getExperienciaLaboral(userId);
    const idioma = await getIdioma(userId);
    const skill = await getSkill(userId);

    return {
        educacion,
        certificacion,
        experienciaLaboral,
        idioma,
        skill
    };
};

export const getCVCandidatoService = async (candidatoId) => {
    return await getCVCandidato(candidatoId);
};

Explicación de cada función

  1. createCVService(userId, cvData):
  2. updateCVService(userId, cvData):
  3. deleteCVSectionService(userId, section, id):
  4. getCVService(userId):
  5. getCVCandidatoService(candidatoId):