<?php
/**
 * Migración: RUT a formato canónico sin puntos y CON guion (XXXXXXXX-D).
 * - CRM: empresas.rut, empresas_franquiciados.rut y ce_empresa_rut.
 * - Control Empresas (dev): filas creadas por el CRM (tenants enlazados,
 *   clientes de la matriz y clientes dentro de cada tenant enlazado).
 * Idempotente: los RUT ya con guion no se modifican.
 * Uso: php migracion_rut_formato.php
 */
define('CRON_MODE', true);
$rootDir = dirname(dirname(__FILE__));
require $rootDir . '/config/constants.php';
$env = include $rootDir . '/.env.php';

$crm = new mysqli('127.0.0.1', $env['DB_USER'], $env['DB_PASS'], 'asisma_crm');
if ($crm->connect_error) die("CRM: " . $crm->connect_error . "\n");
$crm->set_charset('utf8mb4');

function migrarColumna($m, $tabla, $columna) {
    $res = $m->query("SELECT id, `$columna` valor FROM `$tabla` WHERE `$columna` IS NOT NULL AND `$columna` != '' AND `$columna` NOT LIKE '%-%'");
    $n = 0;
    while ($f = $res->fetch_assoc()) {
        $nuevo = normalizar_rut($f['valor']);
        if ($nuevo === $f['valor']) continue;
        $nuevo_e = $m->real_escape_string($nuevo);
        if (!$m->query("UPDATE `$tabla` SET `$columna` = '$nuevo_e' WHERE id = " . (int)$f['id']))
            die("ERR $tabla.$columna id {$f['id']}: " . $m->error . "\n");
        echo "  $tabla.$columna id {$f['id']}: {$f['valor']} -> $nuevo\n";
        $n++;
    }
    echo "$tabla.$columna: $n actualizado(s)\n";
}

echo "== CRM (asisma_crm) ==\n";
migrarColumna($crm, 'empresas', 'rut');
migrarColumna($crm, 'empresas_franquiciados', 'rut');
migrarColumna($crm, 'empresas_franquiciados', 'ce_empresa_rut');

// ── Control Empresas dev: solo filas que el CRM creó/enlazó ──
$ce = new mysqli('127.0.0.1', $env['DB_USER'], $env['DB_PASS'], 'amarillo_desarrollo');
if ($ce->connect_error) die("CE: " . $ce->connect_error . "\n");

// IDs de empresas CE enlazadas desde el CRM (matriz + tenants de franquiciados)
$enlazadas = array();
$r = $crm->query("SELECT valor FROM config_sistema WHERE clave = 'CE_EMPRESA_MATRIZ_ID'");
if ($f = $r->fetch_assoc()) $enlazadas[] = (int)$f['valor'];
$r = $crm->query("SELECT control_empresas_id FROM empresas_franquiciados WHERE control_empresas_id IS NOT NULL AND control_empresas_id > 0");
while ($f = $r->fetch_assoc()) $enlazadas[] = (int)$f['control_empresas_id'];
$enlazadas = array_unique($enlazadas);

if ($enlazadas) {
    $lista = implode(',', $enlazadas);
    echo "== Control Empresas (amarillo_desarrollo), empresas enlazadas: $lista ==\n";
    // Registro del tenant (auxiliar de la empresa 1) + clientes dentro de cada empresa enlazada
    $res = $ce->query("SELECT EMPRESA_ID, ID, RUT FROM auxiliar
                       WHERE ((EMPRESA_ID = 1 AND TIPO_AUXILIAR_ID = 3 AND ID IN ($lista))
                          OR (EMPRESA_ID IN ($lista) AND TIPO_AUXILIAR_ID = 1))
                         AND RUT IS NOT NULL AND RUT != '' AND RUT NOT LIKE '%-%'");
    $n = 0;
    while ($f = $res->fetch_assoc()) {
        $nuevo = normalizar_rut($f['RUT']);
        if ($nuevo === $f['RUT']) continue;
        $nuevo_e = $ce->real_escape_string($nuevo);
        if (!$ce->query("UPDATE auxiliar SET RUT = '$nuevo_e' WHERE EMPRESA_ID = " . (int)$f['EMPRESA_ID'] . " AND ID = " . (int)$f['ID']))
            die("ERR auxiliar {$f['EMPRESA_ID']}/{$f['ID']}: " . $ce->error . "\n");
        echo "  auxiliar empresa {$f['EMPRESA_ID']} id {$f['ID']}: {$f['RUT']} -> $nuevo\n";
        $n++;
    }
    echo "auxiliar (CE): $n actualizado(s)\n";
} else {
    echo "Sin empresas CE enlazadas; nada que migrar en amarillo.\n";
}

echo "Migración completada.\n";
