Este archivo define los controladores relacionados con la gestión de candidatos y aplicaciones en Matchify, utilizando el servicio candidatoService.js para realizar las operaciones necesarias. Los controladores manejan las solicitudes HTTP y las respuestas correspondientes.
import {
getCandidatesByCompanyService,
updateCandidateStatusService,
applyToJobOfferService,
checkApplicationStatusService,
getApplicationCountsByStatus
} from '../services/candidatoService.js';
export const applyToJobOfferController = async (req, res) => {
const { ofertaEmpleoId } = req.body;
const { userId } = req.params;
console.log("Datos recibidos:", { userId, ofertaEmpleoId });
try {
const nuevaCandidatura = await applyToJobOfferService(userId, ofertaEmpleoId);
return res.status(201).json({ success: true, data: nuevaCandidatura });
} catch (error) {
return res.status(500).json({ success: false, message: `Error al aplicar: ${error.message}` });
}
};
export const checkApplicationStatusController = async (req, res) => {
const { usuarioId, ofertaEmpleoId } = req.body;
try {
const status = await checkApplicationStatusService(usuarioId, ofertaEmpleoId);
return res.status(200).json({ success: true, status });
} catch (error) {
return res.status(500).json({ success: false, message: `Error al verificar estado: ${error.message}` });
}
};
export const getCandidatesByCompanyController = async (req, res) => {
const { empresaId } = req.query;
try {
const candidatos = await getCandidatesByCompanyService(empresaId);
return res.status(200).json({ success: true, candidatos });
} catch (error) {
return res.status(500).json({ success: false, message: `Error al obtener candidatos: ${error.message}` });
}
};
export const updateCandidateStatusController = async (req, res) => {
const { candidatoId, estado } = req.body;
try {
const candidatoActualizado = await updateCandidateStatusService(candidatoId, estado);
return res.status(200).json({ success: true, data: candidatoActualizado });
} catch (error) {
return res.status(500).json({ success: false, message: `Error al actualizar candidato: ${error.message}` });
}
};
export const getApplicationCounts = async (req, res) => {
const { usuarioId } = req.params;
try {
const counts = await getApplicationCountsByStatus(usuarioId);
return res.status(200).json({ success: true, counts });
} catch (error) {
return res.status(500).json({ success: false, message: 'Error al obtener las estadísticas' });
}
};
applyToJobOfferController(req, res):
userId en los parámetros de la URL y ofertaEmpleoId en el cuerpo de la solicitud.applyToJobOfferService para registrar una nueva candidatura.checkApplicationStatusController(req, res):
usuarioId y ofertaEmpleoId en el cuerpo de la solicitud.checkApplicationStatusService para verificar el estado de una aplicación específica.getCandidatesByCompanyController(req, res):
empresaId en los parámetros de consulta (req.query).getCandidatesByCompanyService para obtener los candidatos que han aplicado a las ofertas de una empresa.updateCandidateStatusController(req, res):
candidatoId y estado en el cuerpo de la solicitud.updateCandidateStatusService para actualizar el estado de un candidato.getApplicationCounts(req, res):
usuarioId en los parámetros de la URL.getApplicationCountsByStatus para obtener el conteo de aplicaciones de un usuario por estado (aceptada, rechazada, pendiente).