<?php
// admin/subir.php
require '../db.php';

// 1. Validar que se haya seleccionado un archivo
if (!isset($_FILES['pdf']) || $_FILES['pdf']['error'] !== UPLOAD_ERR_OK) {
    die("❌ Error al subir el archivo PDF. <a href='panel.php'>Volver</a>");
}

// 2. 🆕 NUEVA LÓGICA: Mantener nombre original limpiando espacios en blanco
$nombre_original = $_FILES['pdf']['name'];
$nombre_limpio = str_replace(' ', '_', $nombre_original); // Cambia espacios por "_"

// Movemos el archivo físico a la carpeta usando su nombre real limpio
move_uploaded_file($_FILES['pdf']['tmp_name'], "../uploads/cartas/" . $nombre_limpio);

// 3. Rescatar los datos del formulario
$tipo = $_POST['tipo'];
$gestion = intval($_POST['gestion']); 
$descripcion = $_POST['descripcion'];
$fecha_recepcion = $_POST['fecha_recepcion'];

// 🆕 LÓGICA HÍBRIDA: Si el número viene vacío, lo guardamos como NULL o 'S/N'
$numero = !empty($_POST['numero_carta']) ? trim($_POST['numero_carta']) : null;

$id_remitente = (!empty($_POST['id_remitente'])) ? intval($_POST['id_remitente']) : null;
$id_destinatario = (!empty($_POST['id_destinatario'])) ? intval($_POST['id_destinatario']) : null;


// 4. Validar duplicados (SOLO si el número NO es nulo o vacío)
if ($numero !== null && $tipo == 'enviada') {
    $check = $conn->prepare("SELECT id FROM cartas WHERE numero_carta = ? AND gestion_anio = ? AND tipo = 'enviada'");
    $check->bind_param("si", $numero, $gestion);
    $check->execute();
    $check->store_result();

    if($check->num_rows > 0){
        if (file_exists("../uploads/cartas/" . $nombre_limpio)) {
            unlink("../uploads/cartas/" . $nombre_limpio);
        }
        die("❌ El número de carta '{$numero}' ya existe en esta gestión ({$gestion}). <a href='panel.php'>Volver</a>");
    }
    $check->close();
}

// 5. Insertar los datos corregidos
$stmt = $conn->prepare(
    "INSERT INTO cartas 
    (tipo, numero_carta, gestion_anio, id_remitente, id_destinatario, descripcion, fecha_recepcion, archivo) 
    VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
);

// "ssiissss" -> tipo(s), numero(s), gestion(i), remitente(i), destinatario(i), desc(s), fecha(s), archivo(s)
$stmt->bind_param(
    "ssiissss",
    $tipo,
    $numero,
    $gestion,
    $id_remitente,
    $id_destinatario,
    $descripcion,
    $fecha_recepcion,
    $nombre_limpio // 🔥 Guardamos el nombre original limpio en la BD
);

if($stmt->execute()){
    $stmt->close();
    header("Location: panel.php");
    exit;
} else {
    die("❌ Error al guardar en la base de datos: " . $conn->error);
}
?>