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);
};
registerCompanyWithUser(companyData, userData):
getCompanyByIdService(empresaId):
empresaId.null si no existe.