<?php
/**
 * ASISMA CRM - Migracion: datos de facturacion del franquiciado
 *
 * 1. empresas_franquiciados: giro, comuna_id (ID real de la tabla comuna de
 *    Control Empresas) y nombre_contacto.
 * 2. comunas_ce: catalogo de comunas espejo de Control Empresas (se llena con
 *    IntegracionesHelper::sincronizarComunasControlEmpresas para que los IDs
 *    SIEMPRE calcen con el CE conectado — nunca se escriben a mano).
 *
 * Correr una vez: C:\wamp\bin\php\php5.5.12\php.exe database\migracion_facturacion_franquiciado.php
 */

$env = include dirname(__FILE__) . '/../.env.php';
$pdo = new PDO(
    'mysql:host=127.0.0.1;dbname=asisma_crm;charset=utf8mb4',
    $env['DB_USER'], $env['DB_PASS'],
    array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
);

function columnaExiste($pdo, $tabla, $columna) {
    $st = $pdo->prepare("SELECT COUNT(*) FROM information_schema.COLUMNS
                         WHERE TABLE_SCHEMA = 'asisma_crm' AND TABLE_NAME = ? AND COLUMN_NAME = ?");
    $st->execute(array($tabla, $columna));
    return (int)$st->fetchColumn() > 0;
}

$cambios = array();

if (!columnaExiste($pdo, 'empresas_franquiciados', 'giro')) {
    $pdo->exec("ALTER TABLE empresas_franquiciados ADD COLUMN giro VARCHAR(300) NULL AFTER direccion");
    $cambios[] = 'empresas_franquiciados.giro';
}
if (!columnaExiste($pdo, 'empresas_franquiciados', 'comuna_id')) {
    $pdo->exec("ALTER TABLE empresas_franquiciados ADD COLUMN comuna_id INT NULL AFTER giro");
    $cambios[] = 'empresas_franquiciados.comuna_id (ID de comuna de Control Empresas)';
}
if (!columnaExiste($pdo, 'empresas_franquiciados', 'nombre_contacto')) {
    $pdo->exec("ALTER TABLE empresas_franquiciados ADD COLUMN nombre_contacto VARCHAR(150) NULL AFTER comuna_id");
    $cambios[] = 'empresas_franquiciados.nombre_contacto';
}

$pdo->exec("CREATE TABLE IF NOT EXISTS comunas_ce (
    id INT NOT NULL COMMENT 'ID real de la tabla comuna en Control Empresas',
    nombre VARCHAR(100) NOT NULL,
    ciudad VARCHAR(100) NULL,
    actualizado_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (id),
    KEY idx_nombre (nombre)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci");
$cambios[] = 'tabla comunas_ce (catalogo espejo de CE)';

echo empty($cambios) ? "Sin cambios (ya estaba migrado).\n" : "Migrado:\n - " . implode("\n - ", $cambios) . "\n";
echo "Ahora sincroniza las comunas desde el mantenedor de franquiciados (boton junto al campo Comuna) o con el endpoint franquiciados/sincronizar-comunas.\n";
