<?php
/**
 * Migración: branding de cotizaciones POR MARCA (decisión 22-07-2026).
 *
 * La identidad corporativa (logo, colores, eslogan, teléfono, ciudad de firma,
 * datos de transferencia), el DISEÑO del documento y las condiciones
 * comerciales pasan a vivir en la MARCA. Los servicios conservan solo su
 * contenido de oferta (rótulo, párrafos, frase, título de bonos, garantía,
 * planes, características y bonos).
 *
 * Agrega a marcas:
 *   - branding_json      TEXT: identidad corporativa (12 campos IdentidadHelper::camposMarca)
 *   - diseno_documento   VARCHAR(20): ejecutivo|moderno|minimal|oscuro|comercial
 *   - condiciones_json   TEXT: condiciones comerciales generales
 *
 * Y SUBE los datos ya configurados: por cada marca toma el branding de su
 * servicio más completo (prioridad al de plantilla 'moderno' = Control Farma)
 * o, en su defecto, del primer producto con branding_json. Los datos de origen
 * NO se borran (rollback trivial).
 *
 * Uso: C:\wamp\bin\php\php5.5.12\php.exe database\migracion_branding_marca.php
 */
$env = include __DIR__ . '/../.env.php';
$pdo = new PDO(
    'mysql:host=' . $env['DB_HOST'] . ';dbname=' . $env['DB_NAME'] . ';charset=utf8mb4',
    $env['DB_USER'],
    $env['DB_PASS'],
    array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
);

$camposIdentidadMarca = array(
    'color_primario', 'color_secundario', 'logo_ruta', 'eslogan',
    'ciudad_firma', 'telefono_contacto',
    'transferencia_titular', 'transferencia_rut', 'transferencia_banco',
    'transferencia_tipo_cuenta', 'transferencia_numero_cuenta', 'transferencia_correo'
);

// ── Columnas nuevas en marcas ───────────────────────────────────────────────
$columnas = array(
    'branding_json'    => "ALTER TABLE marcas ADD COLUMN branding_json TEXT NULL AFTER ce_subfamily_id",
    'diseno_documento' => "ALTER TABLE marcas ADD COLUMN diseno_documento VARCHAR(20) NOT NULL DEFAULT 'ejecutivo' AFTER branding_json",
    'condiciones_json' => "ALTER TABLE marcas ADD COLUMN condiciones_json TEXT NULL AFTER diseno_documento",
);
foreach ($columnas as $col => $sql) {
    if ($pdo->query("SHOW COLUMNS FROM marcas LIKE '$col'")->fetch()) {
        echo "Columna marcas.$col ya existe.\n";
    } else {
        $pdo->exec($sql);
        echo "Columna marcas.$col agregada.\n";
    }
}

// ── Subir el branding existente a cada marca ────────────────────────────────
$marcas = $pdo->query("SELECT id, nombre, branding_json FROM marcas")->fetchAll(PDO::FETCH_ASSOC);
foreach ($marcas as $marca) {
    if (!empty($marca['branding_json'])) {
        echo "Marca {$marca['nombre']}: ya tiene branding, se respeta.\n";
        continue;
    }

    // Mejor fuente: servicio 'moderno' (CF) > cualquier servicio con logo o
    // transferencia configurados > producto con branding_json
    $stmt = $pdo->prepare(
        "SELECT * FROM servicios WHERE marca_id = ?
         ORDER BY (estilo_bordes = 'moderno') DESC,
                  (logo_ruta IS NOT NULL OR transferencia_titular IS NOT NULL) DESC, id ASC LIMIT 1");
    $stmt->execute(array($marca['id']));
    $servicio = $stmt->fetch(PDO::FETCH_ASSOC);

    $branding = array();
    $diseno = 'ejecutivo';
    $condiciones = null;

    if ($servicio) {
        foreach ($camposIdentidadMarca as $campo) {
            if (isset($servicio[$campo]) && $servicio[$campo] !== '' && $servicio[$campo] !== null) {
                $branding[$campo] = $servicio[$campo];
            }
        }
        if (isset($servicio['estilo_bordes']) && $servicio['estilo_bordes'] === 'moderno') {
            $diseno = 'moderno';
        }
        if (!empty($servicio['condiciones_json'])) {
            $condiciones = $servicio['condiciones_json'];
        }
    }

    if (empty($branding)) {
        $stmt = $pdo->prepare("SELECT branding_json FROM productos WHERE marca_id = ? AND branding_json IS NOT NULL LIMIT 1");
        $stmt->execute(array($marca['id']));
        $filaProd = $stmt->fetch(PDO::FETCH_ASSOC);
        if ($filaProd) {
            $datos = json_decode($filaProd['branding_json'], true);
            if (is_array($datos)) {
                foreach ($camposIdentidadMarca as $campo) {
                    if (isset($datos[$campo]) && trim((string)$datos[$campo]) !== '') {
                        $branding[$campo] = $datos[$campo];
                    }
                }
            }
        }
    }

    if (empty($branding) && $diseno === 'ejecutivo' && $condiciones === null) {
        echo "Marca {$marca['nombre']}: sin branding previo que subir.\n";
        continue;
    }

    $upd = $pdo->prepare("UPDATE marcas SET branding_json = ?, diseno_documento = ?, condiciones_json = ? WHERE id = ?");
    $upd->execute(array(
        $branding ? json_encode($branding, JSON_UNESCAPED_UNICODE) : null,
        $diseno,
        $condiciones,
        $marca['id']
    ));
    echo "Marca {$marca['nombre']}: branding subido (" . count($branding) . " campos, diseño $diseno" . ($condiciones ? ', con condiciones' : '') . ").\n";
}

echo "Migración completada.\n";
