Este archivo define los servicios relacionados con la gestión de empresas en Matchify, utilizando los repositorios companyRepository.js y userRepository.js para acceder y manipular los datos. Los servicios incluyen la lógica de negocio para registrar empresas junto con un usuario administrador y obtener información de una empresa.

import bcrypt from 'bcryptjs';
import { createEmpresa, createEmpresaUsuario, getOrCreateAdminRole, findCompanyById } from '../repositories/companyRepository.js';
import { findUserByEmail, createUser } from '../repositories/userRepository.js';

export const registerCompanyWithUser = async (companyData, userData) => {
    const existingUser = await findUserByEmail(userData.email);
    if (existingUser) throw new Error('Email already in use');

    const hashedPassword = bcrypt.hashSync(userData.password, 10);

    const user = await createUser({ ...userData, password: hashedPassword });

    const empresa = await createEmpresa(companyData);

    const adminRole = await getOrCreateAdminRole();

    await createEmpresaUsuario({ empresaId: empresa.id, usuarioId: user.id, rolId: adminRole.id });

    return { empresa, user };
};

// Servicio para obtener empresa por ID
export const getCompanyByIdService = async (empresaId) => {
    return await findCompanyById(empresaId);
};

Explicación de cada función

  1. registerCompanyWithUser(companyData, userData):
  2. getCompanyByIdService(empresaId):