const db = require('../config/db');

async function asignar() {
    try {
        console.log('[ASIGNAR] Asignando usuarios a empresa...');

        // Check what roles exist
        var roles = await db.query('SELECT id_rol, nombre_rol FROM roles');
        console.log('Roles disponibles:', roles.map(function(r) { return r.nombre_rol + ' (id=' + r.id_rol + ')'; }).join(', '));

        if (roles.length === 0) {
            console.log('[ASIGNAR] No hay roles. Creando rol por defecto...');
            await db.execute("INSERT INTO roles (nombre_rol) VALUES ('ADMINISTRADOR')");
            roles = await db.query('SELECT id_rol, nombre_rol FROM roles');
        }

        var idRol = roles[0].id_rol;

        // Get all active usuarios
        var usuarios = await db.query('SELECT id_usuario, usuario FROM usuarios WHERE estado = 1');
        console.log('Usuarios activos:', usuarios.length);

        for (var u of usuarios) {
            // Check if already assigned to empresa 1
            var existe = await db.query(
                'SELECT id_usuario FROM usuarios_empresas WHERE id_usuario = @id AND id_empresa = 1',
                { id: { type: db.sql.Int, value: u.id_usuario } }
            );
            if (existe.length === 0) {
                await db.execute(
                    'INSERT INTO usuarios_empresas (id_usuario, id_empresa, id_rol, estado) VALUES (@id, 1, @rol, 1)',
                    {
                        id: { type: db.sql.Int, value: u.id_usuario },
                        rol: { type: db.sql.Int, value: idRol }
                    }
                );
                console.log('  + ' + u.usuario + ' asignado a empresa 1 (rol ' + idRol + ')');
            } else {
                console.log('  = ' + u.usuario + ' ya asignado');
            }
        }

        console.log('[ASIGNAR] Completo.');
    } catch (error) {
        console.error('[ASIGNAR] Error:', error.message);
    }
}

asignar().then(function() { process.exit(0); });
