Este archivo define los controladores relacionados con la gestión del CV de los usuarios en Matchify, utilizando el servicio cvService.js para realizar las operaciones necesarias. Los controladores manejan las solicitudes HTTP y las respuestas correspondientes.
import { createCVService, updateCVService, deleteCVSectionService, getCVService, getCVCandidatoService } from '../services/cvService.js';
export const createCV = async (req, res) => {
const { userId } = req.params;
const { educacion = [], certificacion = [], experienciaLaboral = [], idioma = [], skill = [] } = req.body;
try {
const result = await createCVService(userId, { educacion, certificacion, experienciaLaboral, idioma, skill });
return res.status(201).json({ success: true, message: 'CV creado exitosamente', data: result });
} catch (error) {
return res.status(500).json({ success: false, message: 'Error al crear el CV', error: error.message });
}
};
export const updateCV = async (req, res) => {
const { userId } = req.params;
const { educacion, certificacion, experienciaLaboral, idioma, skill } = req.body;
try {
const result = await updateCVService(userId, { educacion, certificacion, experienciaLaboral, idioma, skill });
return res.status(200).json({ success: true, message: 'CV actualizado exitosamente', data: result });
} catch (error) {
return res.status(500).json({ success: false, message: 'Error al actualizar el CV', error: error.message });
}
};
export const deleteCVSection = async (req, res) => {
const { userId, section, id } = req.params;
try {
const result = await deleteCVSectionService(userId, section, id);
return res.status(200).json({ success: true, message: 'Sección eliminada exitosamente', data: result });
} catch (error) {
return res.status(500).json({ success: false, message: 'Error al eliminar la sección', error: error.message });
}
};
export const getCV = async (req, res) => {
const { userId } = req.params;
try {
const result = await getCVService(userId);
return res.status(200).json({ success: true, data: result });
} catch (error) {
return res.status(500).json({ success: false, message: 'Error al obtener el CV', error: error.message });
}
};
export const getCVCandidato = async (req, res) => {
const { candidatoId } = req.params;
console.log(`Solicitud para obtener CV del candidato con ID: ${candidatoId}`);
try {
const cv = await getCVCandidatoService(candidatoId);
return res.status(200).json({ success: true, data: cv });
} catch (error) {
return res.status(500).json({ success: false, message: 'Error al obtener el CV del candidato', error: error.message });
}
};
createCV(req, res):
userId en los parámetros de la URL y los datos del CV en req.body.createCVService para crear un nuevo CV con los datos proporcionados.updateCV(req, res):
userId en los parámetros de la URL y los datos de actualización del CV en req.body.updateCVService para actualizar el CV del usuario.deleteCVSection(req, res):
userId, la sección a eliminar (section), y el id del registro en los parámetros de la URL.deleteCVSectionService para eliminar la sección específica del CV.getCV(req, res):
userId en los parámetros de la URL.getCVService para obtener el CV completo del usuario.getCVCandidato(req, res):
candidatoId en los parámetros de la URL.getCVCandidatoService para obtener el CV del candidato especificado.