<?php
// Script de reparación automática de la tabla documento_medico
require 'config/global.php';

$conexion = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

if ($conexion->connect_error) {
    die("Error de conexión: " . $conexion->connect_error);
}

echo "<h1>🛠️ Reparación de Base de Datos Certificados</h1>";

// Definimos todas las solumnas necesarias y sus definiciones
$columnas = [
    'idpersona' => "INT NOT NULL COMMENT 'ID del paciente (requerido)' AFTER `idatencion`",
    'ruta_pdf_firmado' => "VARCHAR(255) COMMENT 'Ruta del PDF firmado (final)' AFTER `ruta_pdf`",
    'fecha_firma' => "DATETIME NULL DEFAULT NULL COMMENT 'Fecha y hora de la firma' AFTER `ruta_pdf_firmado`",
    'idempleado_firma' => "INT COMMENT 'Empleado que firmó el documento' AFTER `fecha_firma`",
    'idempleado' => "INT NOT NULL COMMENT 'Empleado que generó el documento' AFTER `idempleado_firma`",
    'estado' => "VARCHAR(20) DEFAULT 'borrador' COMMENT 'borrador, firmado' AFTER `idempleado`"
];

// Comprobar columnas existentes
$result = $conexion->query("SHOW COLUMNS FROM `documento_medico`");
$existentes = [];
if ($result) {
    while ($row = $result->fetch_assoc()) {
        $existentes[] = $row['Field'];
    }
} else {
    echo "<p style='color:red'>La tabla documento_medico NO existe. Creándola...</p>";
    // Si no existe, la creamos de cero
    $sql_create = "CREATE TABLE IF NOT EXISTS `documento_medico` (
        `iddocumento` INT AUTO_INCREMENT PRIMARY KEY,
        `idatencion` INT NULL DEFAULT NULL,
        `idpersona` INT NOT NULL,
        `tipo` VARCHAR(50) NOT NULL,
        `contenido` TEXT,
        `fecha_emision` DATETIME DEFAULT CURRENT_TIMESTAMP,
        `firmado` TINYINT(1) DEFAULT 0,
        `ruta_pdf` VARCHAR(255),
        `ruta_pdf_firmado` VARCHAR(255),
        `fecha_firma` DATETIME NULL DEFAULT NULL,
        `idempleado_firma` INT,
        `idempleado` INT NOT NULL,
        `estado` VARCHAR(20) DEFAULT 'borrador',
        INDEX (`idatencion`),
        INDEX (`idpersona`),
        INDEX (`idempleado`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4";

    if ($conexion->query($sql_create)) {
        echo "<p style='color:green'>Tabla creada éxitosamente.</p>";
        // Recargar existentes
        $result = $conexion->query("SHOW COLUMNS FROM `documento_medico`");
        while ($row = $result->fetch_assoc())
            $existentes[] = $row['Field'];
    }
}

// Agregar columnas faltantes
foreach ($columnas as $col => $def) {
    if (!in_array($col, $existentes)) {
        $sql = "ALTER TABLE `documento_medico` ADD COLUMN `$col` $def";
        if ($conexion->query($sql)) {
            echo "<p style='color:green'>✅ Columna <b>$col</b> agregada correctamente.</p>";
        } else {
            echo "<p style='color:red'>❌ Error agregando columna <b>$col</b>: " . $conexion->error . "</p>";
        }
    } else {
        echo "<p style='color:blue'>ℹ️ Columna <b>$col</b> ya existe.</p>";
    }
}

// Modificar idatencion para ser nullable porsi acaso
$conexion->query("ALTER TABLE `documento_medico` MODIFY COLUMN `idatencion` INT NULL DEFAULT NULL");

echo "<hr>";
echo "<h2>¡Listo! La reparación ha terminado.</h2>";
echo "<p>Ya puedes volver al sistema y generar certificados.</p>";
?>