<?php
/**
 * Elimina los DATOS DE PRUEBA sembrados por sembrar_datos_prueba.php.
 * NO toca: la matriz ASISMA (id=1), el franquiciado 11, el catálogo CE,
 * ni el usuario admin. El franquiciado 11 solo pierde sus autorizaciones,
 * usuarios y cola demo.
 *
 * Uso: php limpiar_datos_prueba.php            (solo muestra lo que borraría)
 *      php limpiar_datos_prueba.php --aplicar  (borra de verdad)
 *
 * OJO: los tenants creados en Control Empresas dev (amarillo) por las
 * franquicias demo NO se borran acá — quedan listados al final.
 */
$rootDir = dirname(dirname(__FILE__));
$env = include $rootDir . '/.env.php';
$m = new mysqli('127.0.0.1', $env['DB_USER'], $env['DB_PASS'], 'asisma_crm');
if ($m->connect_error) die("conexión: " . $m->connect_error . "\n");
$m->set_charset('utf8mb4');

$aplicar = in_array('--aplicar', $argv);
if (!$aplicar) echo "MODO SIMULACIÓN (usa --aplicar para borrar de verdad)\n\n";

$rutsFranquicias = "'76200001-" . dv('76200001') . "','76200002-" . dv('76200002') . "','76200003-" . dv('76200003') . "'";
$rutsEmpresas = array();
for ($i = 1; $i <= 7; $i++) { $b = '7630000' . $i; $rutsEmpresas[] = "'$b-" . dv($b) . "'"; }
$rutsEmpresas = implode(',', $rutsEmpresas);

function dv($num) {
    $suma = 0; $factor = 2;
    for ($i = strlen($num) - 1; $i >= 0; $i--) { $suma += (int)$num[$i] * $factor; $factor = $factor == 7 ? 2 : $factor + 1; }
    $resto = 11 - ($suma % 11);
    return $resto == 11 ? '0' : ($resto == 10 ? 'K' : (string)$resto);
}
function ejecutar($m, $sql, $etq, $aplicar) {
    if ($aplicar) {
        if (!$m->query($sql)) { echo "ERR $etq: " . $m->error . "\n"; return; }
        echo "  $etq: " . $m->affected_rows . " fila(s)\n";
    } else {
        echo "  [simulado] $etq\n";
    }
}

// IDs de las franquicias demo
$idsFranq = array();
$r = $m->query("SELECT f.id FROM franquiciados f JOIN empresas_franquiciados ef ON ef.id = f.empresa_madre_id WHERE ef.rut IN ($rutsFranquicias)");
while ($x = $r->fetch_assoc()) $idsFranq[] = (int)$x['id'];
$listaFranq = $idsFranq ? implode(',', $idsFranq) : '0';
echo "Franquicias demo: $listaFranq (+ autorizaciones/usuarios demo del franq 11)\n\n";

// Leads y dependencias de las empresas demo
ejecutar($m, "DELETE al FROM asignaciones_lead al JOIN leads l ON l.id = al.lead_id JOIN empresas e ON e.id = l.empresa_id WHERE e.rut IN ($rutsEmpresas)", 'asignaciones de leads demo', $aplicar);
ejecutar($m, "DELETE a FROM actividades_crm a JOIN leads l ON l.id = a.lead_id JOIN empresas e ON e.id = l.empresa_id WHERE e.rut IN ($rutsEmpresas)", 'actividades de leads demo', $aplicar);
ejecutar($m, "DELETE co FROM cotizaciones co JOIN leads l ON l.id = co.lead_id JOIN empresas e ON e.id = l.empresa_id WHERE e.rut IN ($rutsEmpresas)", 'cotizaciones de leads demo', $aplicar);
ejecutar($m, "DELETE l FROM leads l JOIN empresas e ON e.id = l.empresa_id WHERE e.rut IN ($rutsEmpresas)", 'leads demo', $aplicar);
ejecutar($m, "DELETE c FROM contactos c JOIN empresas e ON e.id = c.empresa_id WHERE e.rut IN ($rutsEmpresas)", 'contactos demo', $aplicar);
ejecutar($m, "DELETE FROM empresas WHERE rut IN ($rutsEmpresas)", 'empresas demo', $aplicar);

// Leads residuales de las franquicias demo (creados durante las pruebas)
ejecutar($m, "DELETE al FROM asignaciones_lead al WHERE al.franquiciado_id IN ($listaFranq)", 'asignaciones residuales', $aplicar);
ejecutar($m, "DELETE a FROM actividades_crm a JOIN leads l ON l.id = a.lead_id WHERE l.franquiciado_id IN ($listaFranq)", 'actividades residuales', $aplicar);
ejecutar($m, "DELETE co FROM cotizaciones co JOIN leads l ON l.id = co.lead_id WHERE l.franquiciado_id IN ($listaFranq)", 'cotizaciones residuales', $aplicar);
ejecutar($m, "DELETE FROM leads WHERE franquiciado_id IN ($listaFranq)", 'leads residuales de franquicias demo', $aplicar);

// Usuarios, colas y autorizaciones (franquicias demo + los demo del franq 11)
ejecutar($m, "DELETE FROM cola_asignacion WHERE franquiciado_id IN ($listaFranq, 11)", 'colas de asignación', $aplicar);
ejecutar($m, "DELETE FROM usuarios WHERE (franquiciado_id IN ($listaFranq) OR email IN ('demo.biobio@asisma.cl', 'vendedor1.biobio@asisma.cl')) AND email LIKE '%@asisma.cl' AND email != 'admin@asisma.cl'", 'usuarios demo', $aplicar);
ejecutar($m, "DELETE FROM franquiciado_marcas WHERE franquiciado_id IN ($listaFranq, 11)", 'autorizaciones por marca', $aplicar);
ejecutar($m, "DELETE FROM franquiciado_productos WHERE franquiciado_id IN ($listaFranq, 11)", 'autorizaciones por producto', $aplicar);

// Franquicias demo (empresas_franquiciados + franquiciados)
ejecutar($m, "DELETE f FROM franquiciados f WHERE f.id IN ($listaFranq)", 'franquiciados demo', $aplicar);
ejecutar($m, "DELETE FROM empresas_franquiciados WHERE rut IN ($rutsFranquicias) AND id != 1", 'empresas franquiciadas demo', $aplicar);

// Catálogo manual demo
ejecutar($m, "DELETE FROM franquiciado_productos WHERE producto_id IN (SELECT id FROM productos WHERE nombre = 'CONSULTORIA DE IMPLEMENTACION')", 'autorizaciones del producto manual', $aplicar);
ejecutar($m, "DELETE FROM productos WHERE nombre = 'CONSULTORIA DE IMPLEMENTACION' AND ce_articulo_id IS NULL", 'producto manual demo', $aplicar);
ejecutar($m, "DELETE FROM marcas WHERE nombre = 'SERVICIOS PROPIOS' AND ce_subfamily_id IS NULL", 'marca manual demo', $aplicar);

// Tenants CE que quedan huérfanos en amarillo
echo "\nTenants en Control Empresas dev (amarillo) creados por las franquicias demo\n";
echo "(quedan allá; para borrarlos hay que limpiarlos en el amarillo aparte):\n";
$ce = new mysqli('127.0.0.1', $env['DB_USER'], $env['DB_PASS'], 'amarillo_desarrollo');
if (!$ce->connect_error) {
    $r = $ce->query("SELECT ID, RUT, NOMBRE FROM auxiliar WHERE EMPRESA_ID = 1 AND TIPO_AUXILIAR_ID = 3 AND REPLACE(RUT,'-','') IN (REPLACE('76200001-" . dv('76200001') . "','-',''), REPLACE('76200002-" . dv('76200002') . "','-',''), REPLACE('76200003-" . dv('76200003') . "','-',''))");
    while ($x = $r->fetch_assoc()) echo "  - tenant {$x['ID']} {$x['RUT']} {$x['NOMBRE']}\n";
}
echo "\n" . ($aplicar ? "Limpieza aplicada.\n" : "Simulación terminada. Ejecuta con --aplicar para borrar.\n");
