Este archivo define los servicios relacionados con la gestión de candidaturas en Matchify, utilizando el repositorio candidatoRepository.js para acceder y manipular los datos de los candidatos. Los servicios incluyen la lógica de negocio para gestionar las aplicaciones a ofertas de empleo, actualizar estados de candidatos y obtener estadísticas de aplicaciones.
import {
findAllCandidatosByEmpresa,
findCandidatoById,
updateCandidatoStatus,
applyToJobOffer,
checkApplication,
getApplicationCountsByStatusFromDB
} from '../repositories/candidatoRepository.js';
export const getCandidatesByCompanyService = async (empresaId) => {
return await findAllCandidatosByEmpresa(empresaId);
};
export const updateCandidateStatusService = async (candidatoId, estado) => {
return await updateCandidatoStatus(candidatoId, estado);
};
export const applyToJobOfferService = async (usuarioId, ofertaEmpleoId) => {
const existingApplication = await checkApplication(usuarioId, ofertaEmpleoId);
if (existingApplication) {
throw new Error('Ya has aplicado a esta oferta');
}
return await applyToJobOffer(usuarioId, ofertaEmpleoId);
};
export const checkApplicationStatusService = async (usuarioId, ofertaEmpleoId) => {
return await checkApplication(usuarioId, ofertaEmpleoId);
};
export const getApplicationCountsByStatus = async (usuarioId) => {
try {
return await getApplicationCountsByStatusFromDB(usuarioId);
} catch (error) {
throw new Error('Error al obtener las estadísticas de las solicitudes');
}
};
getCandidatesByCompanyService(empresaId):
findAllCandidatosByEmpresa en el repositorio.updateCandidateStatusService(candidatoId, estado):
updateCandidatoStatus en el repositorio y retorna el candidato actualizado.applyToJobOfferService(usuarioId, ofertaEmpleoId):
applyToJobOffer en el repositorio para crear la aplicación.checkApplicationStatusService(usuarioId, ofertaEmpleoId):
checkApplication en el repositorio y retorna el estado de la aplicación.getApplicationCountsByStatus(usuarioId):
getApplicationCountsByStatusFromDB y maneja cualquier error que ocurra.