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');
    }
};

Explicación de cada función

  1. getCandidatesByCompanyService(empresaId):
  2. updateCandidateStatusService(candidatoId, estado):
  3. applyToJobOfferService(usuarioId, ofertaEmpleoId):
  4. checkApplicationStatusService(usuarioId, ofertaEmpleoId):
  5. getApplicationCountsByStatus(usuarioId):