<?php
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 "<h2>Instalación/Actualización de Tabla documento_medico</h2>";

// Crear tabla para certificados medicos con TODOS los campos necesarios
$sql = "CREATE TABLE IF NOT EXISTS `documento_medico` (
    `iddocumento` INT AUTO_INCREMENT PRIMARY KEY,
    `idatencion` INT NULL DEFAULT NULL COMMENT 'ID de atención médica (puede ser NULL)',
    `idpersona` INT NOT NULL COMMENT 'ID del paciente (requerido)',
    `tipo` VARCHAR(50) NOT NULL COMMENT 'MEDICO, REPOSO, PERSONALIZADO',
    `contenido` TEXT COMMENT 'JSON con los detalles del certificado',
    `fecha_emision` DATETIME DEFAULT CURRENT_TIMESTAMP,
    `firmado` TINYINT(1) DEFAULT 0,
    `ruta_pdf` VARCHAR(255) COMMENT 'PDF temporal sin firmar',
    `ruta_pdf_firmado` VARCHAR(255) COMMENT 'PDF firmado final',
    `fecha_firma` DATETIME NULL DEFAULT NULL,
    `idempleado_firma` INT COMMENT 'Empleado que firmó',
    `idempleado` INT NOT NULL COMMENT 'Empleado que generó',
    `estado` VARCHAR(20) DEFAULT 'borrador',
    INDEX (`idatencion`),
    INDEX (`idpersona`),
    INDEX (`idempleado`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci";

if ($conexion->query($sql) === TRUE) {
    echo "<p style='color: green;'>✓ Tabla 'documento_medico' creada correctamente.</p>";
} else {
    echo "<p style='color: red;'>Error creando tabla: " . $conexion->error . "</p>";
}

// Verificar y agregar columnas faltantes si la tabla ya existía
echo "<h3>Verificando columnas...</h3>";

$columnas_necesarias = [
    "idpersona" => "ADD COLUMN `idpersona` INT NOT NULL AFTER `idatencion`",
    "ruta_pdf_firmado" => "ADD COLUMN `ruta_pdf_firmado` VARCHAR(255) AFTER `ruta_pdf`",
    "fecha_firma" => "ADD COLUMN `fecha_firma` DATETIME NULL DEFAULT NULL AFTER `ruta_pdf_firmado`",
    "idempleado" => "ADD COLUMN `idempleado` INT NOT NULL AFTER `idempleado_firma`",
    "estado" => "ADD COLUMN `estado` VARCHAR(20) DEFAULT 'borrador' AFTER `idempleado`"
];

// Obtener columnas existentes
$result = $conexion->query("SHOW COLUMNS FROM `documento_medico`");
$columnas_existentes = [];
while ($row = $result->fetch_assoc()) {
    $columnas_existentes[] = $row['Field'];
}

// Agregar columnas faltantes
foreach ($columnas_necesarias as $columna => $sql_add) {
    if (!in_array($columna, $columnas_existentes)) {
        $sql_alter = "ALTER TABLE `documento_medico` $sql_add";
        if ($conexion->query($sql_alter) === TRUE) {
            echo "<p style='color: green;'>✓ Columna '$columna' agregada correctamente.</p>";
        } else {
            echo "<p style='color: orange;'>⚠ Error agregando columna '$columna': " . $conexion->error . "</p>";
        }
    } else {
        echo "<p style='color: blue;'>✓ Columna '$columna' ya existe.</p>";
    }
}

// Modificar idatencion para permitir NULL
$sql_modify = "ALTER TABLE `documento_medico` MODIFY COLUMN `idatencion` INT NULL DEFAULT NULL";
if ($conexion->query($sql_modify) === TRUE) {
    echo "<p style='color: green;'>✓ Columna 'idatencion' actualizada para permitir NULL.</p>";
}

echo "<h3 style='color: green;'>¡Instalación completada!</h3>";
echo "<p>La tabla 'documento_medico' está lista para usarse.</p>";

$conexion->close();
?>