<?php
/**
 * Seed: vertical Farmacias + marca Control Farma + servicio con los 3 planes,
 * características y bonos EXACTOS del asisma_ops (ver_cotizacion.php y
 * lead_detail.js). Idempotente: busca por nombre antes de insertar.
 * También copia los logos del OPS a public/assets/img (copiar, jamás mover).
 *
 * Uso: C:\wamp\bin\php\php5.5.12\php.exe database\sembrar_control_farma.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)
);

// ── Logos (copiar desde el OPS, solo lectura del origen) ────────────────────
$logos = array('logo_farma.png', 'logo_asisma.png');
foreach ($logos as $logo) {
    $origen  = 'C:\\wamp\\www\\asisma_ops\\public\\assets\\img\\' . $logo;
    $destino = __DIR__ . '/../public/assets/img/' . $logo;
    if (file_exists($destino)) {
        echo "Logo $logo ya existe en el CRM.\n";
    } elseif (file_exists($origen)) {
        copy($origen, $destino);
        echo "Logo $logo copiado.\n";
    } else {
        echo "AVISO: no se encontró $origen (copiar el logo a mano).\n";
    }
}

// ── Vertical Farmacias ──────────────────────────────────────────────────────
$vertical = $pdo->query("SELECT id FROM verticales WHERE nombre = 'Farmacias'")->fetch(PDO::FETCH_ASSOC);
if ($vertical) {
    $verticalId = (int)$vertical['id'];
    echo "Vertical Farmacias ya existe (id $verticalId).\n";
} else {
    $pdo->prepare("INSERT INTO verticales (nombre, descripcion, activa) VALUES (?, ?, 1)")
        ->execute(array('Farmacias', 'Software de gestión para farmacias independientes'));
    $verticalId = (int)$pdo->lastInsertId();
    echo "Vertical Farmacias creada (id $verticalId).\n";
}

// ── Marca Control Farma ─────────────────────────────────────────────────────
$marca = $pdo->query("SELECT id FROM marcas WHERE nombre = 'Control Farma'")->fetch(PDO::FETCH_ASSOC);
if ($marca) {
    $marcaId = (int)$marca['id'];
    echo "Marca Control Farma ya existe (id $marcaId).\n";
} else {
    $pdo->prepare("INSERT INTO marcas (vertical_id, nombre, contacto_nombre, contacto_email, contacto_telefono, activa) VALUES (?, ?, ?, ?, ?, 1)")
        ->execute(array($verticalId, 'Control Farma', 'Equipo Control Farma', 'pagos@asisma.cl', '+56 9 8367 1483'));
    $marcaId = (int)$pdo->lastInsertId();
    echo "Marca Control Farma creada (id $marcaId).\n";
}

// ── Servicio Control Farma (branding textual EXACTO del OPS) ────────────────
$parrafos = array(
    'De acuerdo a lo conversado dejo nuestra cotización del software <b>Control Farma</b>, el cual se adapta de buena manera a lo que necesita <b>para tener control real de tu farmacia independiente.</b>.',
    'Con nuestra solución usted podrá controlar sus productos con el módulo de inventario, compras y ventas, además de saber el total de ventas en un rango de tiempo y sus compras. Se registran todos los documentos los cuales son nominativos responsabilizando a la persona que los recibe y quien los crea.',
    'Es un software <b>100% web</b>, el cual permite acceder a él desde cualquier parte del mundo, solo basta una conexión a internet. Además, incluimos una base de datos de artículos precargada, lo cual reduce muchas horas de trabajo al no tener que ingresar ítem por ítem.',
    'Además tiene la opción de revisar con informes gráficos y tablas de datos su información, la cual puede ser filtrada de diversas maneras y es exportable a Excel para un análisis profundo.',
    'Cada mes mejoramos nuestras aplicaciones entregando más herramientas a nuestros clientes para una mejor toma de decisiones (Múltiples Promociones, Búsqueda por P.A., Listado de precios, Precio por presentación, Artículos Complementarios, alertas de quiebre de stock al mail, entre otros).',
);
$garantia = array(
    'cita'        => 'Prueba el sistema por 30 días. Si consideras que no te sirve, te devolvemos tu dinero.',
    'condiciones' => array('* Aplica desde la fecha de compra.', '* Mínimo de 10 días de boletas emitidas.'),
);
$condiciones = array(
    array('titulo' => 'Implementación',      'texto' => 'El sistema estará operativo en 5 días hábiles a partir de la recepción del pago inicial.'),
    array('titulo' => 'Facturación Mensual', 'texto' => 'La mensualidad se factura el día 1 de cada mes. Dispone de un plazo de 10 días para su cancelación.'),
    array('titulo' => 'Validez',             'texto' => 'Los valores y bonificaciones indicadas se mantendrán vigentes hasta el {vencimiento}.'),
);

$servicio = $pdo->query("SELECT id FROM servicios WHERE nombre = 'Control Farma'")->fetch(PDO::FETCH_ASSOC);
if ($servicio) {
    $servicioId = (int)$servicio['id'];
    // Asegurar el rótulo aunque el servicio se haya sembrado antes de esta columna
    $pdo->prepare("UPDATE servicios SET rotulo_cliente = 'su FARMACIA' WHERE id = ? AND rotulo_cliente IS NULL")->execute(array($servicioId));
    echo "Servicio Control Farma ya existe (id $servicioId).\n";
} else {
    $stmt = $pdo->prepare(
        "INSERT INTO servicios (marca_id, nombre, descripcion, color_primario, color_secundario, logo_ruta,
            eslogan, rotulo_cliente, ciudad_firma, parrafos_presentacion, frase_destacada, titulo_bonos,
            garantia_dias, garantia_texto, condiciones_json, telefono_contacto,
            transferencia_titular, transferencia_rut, transferencia_banco, transferencia_tipo_cuenta,
            transferencia_numero_cuenta, transferencia_correo, activo)
         VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1)"
    );
    $stmt->execute(array(
        $marcaId,
        'Control Farma',
        'Software de gestión integral para farmacias independientes',
        '#4a038d',
        '#7c3aed',
        'assets/img/logo_farma.png',
        'Te damos control y tiempo para enfocarte en lo importante.',
        'su FARMACIA',
        'Concepción',
        json_encode($parrafos, JSON_UNESCAPED_UNICODE),
        'Vende, controla y rentabiliza más en tu farmacia.',
        'Bonos exclusivos por compras antes de 48 horas.',
        30,
        json_encode($garantia, JSON_UNESCAPED_UNICODE),
        json_encode($condiciones, JSON_UNESCAPED_UNICODE),
        '+56 9 8367 1483',
        'Servicios Informáticos Asisma Limitada',
        '76.436.563-1',
        'Banco de Chile',
        'Cuenta Corriente',
        '22 30 75 10 08',
        'pagos@asisma.cl',
    ));
    $servicioId = (int)$pdo->lastInsertId();
    echo "Servicio Control Farma creado (id $servicioId).\n";
}

// ── Planes (precios reales del OPS: Cotizacion::getPlanes) ──────────────────
$planes = array(
    array('codigo' => 'start', 'nombre' => 'Plan Basico',   'inicial' => 5,   'mensual' => 2,   'orden' => 1),
    array('codigo' => 'medio', 'nombre' => 'Plan Medio',    'inicial' => 6,   'mensual' => 2.5, 'orden' => 2),
    array('codigo' => 'pro',   'nombre' => 'Plan Avanzado', 'inicial' => 7,   'mensual' => 3,   'orden' => 3),
);
// Características EXACTAS de PLAN_FEATURES (lead_detail.js), en su orden
$caracteristicas = array(
    'start' => array(
        '4 Usuarios', '1 Sucursal', 'Informes generales',
        'Boleta y factura electrónica - Tickets e Inventario',
        'Hasta 1 Puntos de venta', 'Hasta 3.000 ventas / mes',
        'Licencia de uso + Implementación 13 UF',
        'Soporte técnico humano 24 / 7 Correo, Chat y Teléfono',
        'Valores mas IVA',
    ),
    'medio' => array(
        '8 Usuarios', '1 Sucursal', 'Informes generales',
        'Boleta y factura electrónica - Tickets e Inventario',
        'Hasta 3 Puntos de venta', 'Hasta 5.000 ventas / mes',
        'Soporte técnico humano 24 / 7 Correo, Chat y Teléfono',
        'Licencia de uso + Implementación 19 UF',
        'Valores mas IVA',
    ),
    'pro' => array(
        '12 Usuarios', '1 Sucursal', 'Informes generales',
        'Boleta y factura electrónica - Tickets e Inventario',
        'Hasta 4 Puntos de venta', 'Hasta 8.000 ventas / mes',
        'Licencia de uso + Implementación 23 UF',
        'Soporte técnico humano 24 / 7 Correo, Chat y Teléfono',
        'Valores mas IVA',
    ),
);

$stmtPlanExiste = $pdo->prepare("SELECT id FROM servicio_planes WHERE servicio_id = ? AND codigo = ?");
$stmtPlanInsert = $pdo->prepare(
    "INSERT INTO servicio_planes (servicio_id, codigo, nombre, moneda, precio_inicial, precio_mensual, orden, activo)
     VALUES (?, ?, ?, 'UF', ?, ?, ?, 1)"
);
$stmtCaracInsert = $pdo->prepare(
    "INSERT INTO servicio_plan_caracteristicas (plan_id, titulo, descripcion, orden, activo) VALUES (?, ?, '', ?, 1)"
);
foreach ($planes as $plan) {
    $stmtPlanExiste->execute(array($servicioId, $plan['codigo']));
    $fila = $stmtPlanExiste->fetch(PDO::FETCH_ASSOC);
    if ($fila) {
        echo "Plan {$plan['codigo']} ya existe.\n";
        continue;
    }
    $stmtPlanInsert->execute(array($servicioId, $plan['codigo'], $plan['nombre'], $plan['inicial'], $plan['mensual'], $plan['orden']));
    $planId = (int)$pdo->lastInsertId();
    $orden = 1;
    foreach ($caracteristicas[$plan['codigo']] as $titulo) {
        $stmtCaracInsert->execute(array($planId, $titulo, $orden));
        $orden++;
    }
    echo "Plan {$plan['codigo']} ({$plan['nombre']}) creado con " . ($orden - 1) . " características.\n";
}

// ── Bonos (bonosCotizacion del OPS, incluido_por_defecto = incl) ────────────
$bonos = array(
    array('🎁 Regalamos listado de precios y consultor ISP.', 'Exigencias ISP cubiertas.', 1),
    array('🔗 Integración de Yapp', 'Seguros Complementarios integrados.', 0),
    array('💳 Integración POS Transbank', 'Terminales de pago conectados a caja.', 0),
    array('🤖 Dashboard con Inteligencia Artificial', 'Sin costo adicional.', 1),
    array('📈 Análisis Estratégico', 'Acceso a Estado de Resultados y más de 8 gráficos.', 1),
    array('💬 Soporte Personalizado 1 a 1', 'Agendar reuniones con nuestro equipo.', 1),
    array('🌟 Acceso VIP', 'Canal exclusivo de difusión V.I.P.', 1),
);
$stmtBonoExiste = $pdo->prepare("SELECT id FROM servicio_bonos WHERE servicio_id = ? AND titulo = ?");
$stmtBonoInsert = $pdo->prepare(
    "INSERT INTO servicio_bonos (servicio_id, titulo, descripcion, incluido_por_defecto, orden, activo) VALUES (?, ?, ?, ?, ?, 1)"
);
$orden = 1;
foreach ($bonos as $bono) {
    $stmtBonoExiste->execute(array($servicioId, $bono[0]));
    if ($stmtBonoExiste->fetch()) {
        echo "Bono \"{$bono[0]}\" ya existe.\n";
    } else {
        $stmtBonoInsert->execute(array($servicioId, $bono[0], $bono[1], $bono[2], $orden));
        echo "Bono \"{$bono[0]}\" creado.\n";
    }
    $orden++;
}

// ── Producto puente: el servicio se comporta como un producto del maestro ───
$tieneTipo = $pdo->query("SHOW COLUMNS FROM productos LIKE 'tipo'")->fetch();
$tieneProductoId = $pdo->query("SHOW COLUMNS FROM servicios LIKE 'producto_id'")->fetch();
if ($tieneTipo && $tieneProductoId) {
    $verticalFila = $pdo->prepare("SELECT vertical_id FROM marcas WHERE id = ?");
    $verticalFila->execute(array($marcaId));
    $verticalDeMarca = (int)$verticalFila->fetchColumn();

    $prod = $pdo->prepare("SELECT id FROM productos WHERE marca_id = ? AND nombre = 'Control Farma' LIMIT 1");
    $prod->execute(array($marcaId));
    $productoId = (int)$prod->fetchColumn();
    if ($productoId) {
        echo "Producto Control Farma ya existe (id $productoId).\n";
    } else {
        $pdo->prepare(
            "INSERT INTO productos (vertical_id, marca_id, nombre, descripcion, tipo, precio_minimo, precio_maximo, precio_sugerido, moneda, es_suscripcion, activo)
             VALUES (?, ?, 'Control Farma', 'Software de gestión integral para farmacias independientes', 'servicio', 0, NULL, 0, 'CLP', 0, 1)"
        )->execute(array($verticalDeMarca, $marcaId));
        $productoId = (int)$pdo->lastInsertId();
        echo "Producto Control Farma creado (id $productoId).\n";
    }
    $pdo->prepare("UPDATE productos SET tipo = 'servicio' WHERE id = ?")->execute(array($productoId));
    $pdo->prepare("UPDATE servicios SET producto_id = ? WHERE id = ? AND producto_id IS NULL")->execute(array($productoId, $servicioId));
    echo "Servicio Control Farma enlazado al producto $productoId.\n";
} else {
    echo "AVISO: correr antes migracion_producto_servicio.php para enlazar el producto puente.\n";
}

echo "Seed de Control Farma completado.\n";
