<?php
include("conexion.php");
session_start();

if (!isset($_SESSION['usuario'])) {
    header('Location: login.php');
    exit;
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header("Location: ficha.php");
    exit;
}

$accion = $_POST['accion'] ?? '';
$persona_id = isset($_POST['persona_id']) ? (int)$_POST['persona_id'] : 0;

if ($persona_id <= 0) {
    header("Location: ficha.php?err=persona");
    exit;
}

// ==== CONFIG ====
$UPLOAD_DIR = __DIR__ . '/uploads/documentos/';
$UPLOAD_URL = 'uploads/documentos/'; // ruta relativa guardada en DB
$MAX_MB = 8; // 8MB
$ALLOWED_EXT = ['pdf', 'jpg', 'jpeg', 'png'];

// Crear carpeta si no existe
if (!is_dir($UPLOAD_DIR)) {
    mkdir($UPLOAD_DIR, 0777, true);
}

if ($accion === 'subir') {

    $tipo = $_POST['tipo'] ?? '';
    $descripcion = trim($_POST['descripcion'] ?? '');

    $tipos_validos = ['CEDULA','RIF','CONSTANCIA_TRABAJO_ANTERIOR','CAPACITACION','IVSS','FAOV','OTRO'];
    if (!in_array($tipo, $tipos_validos, true)) {
        header("Location: ficha.php?cedula=" . urlencode($_POST['cedula_busqueda'] ?? '') . "&err=tipo");
        exit;
    }

    if (!isset($_FILES['archivo']) || $_FILES['archivo']['error'] !== UPLOAD_ERR_OK) {
        header("Location: ficha.php?cedula=" . urlencode($_POST['cedula_busqueda'] ?? '') . "&err=archivo");
        exit;
    }

    $f = $_FILES['archivo'];
    if ($f['size'] > ($MAX_MB * 1024 * 1024)) {
        header("Location: ficha.php?cedula=" . urlencode($_POST['cedula_busqueda'] ?? '') . "&err=tamano");
        exit;
    }

    $ext = strtolower(pathinfo($f['name'], PATHINFO_EXTENSION));
    if (!in_array($ext, $ALLOWED_EXT, true)) {
        header("Location: ficha.php?cedula=" . urlencode($_POST['cedula_busqueda'] ?? '') . "&err=ext");
        exit;
    }

    $safeName = 'doc_' . $persona_id . '_' . date('Ymd_His') . '_' . bin2hex(random_bytes(4)) . '.' . $ext;
    $destPath = $UPLOAD_DIR . $safeName;

    if (!move_uploaded_file($f['tmp_name'], $destPath)) {
        header("Location: ficha.php?cedula=" . urlencode($_POST['cedula_busqueda'] ?? '') . "&err=move");
        exit;
    }

    $archivoRel = $UPLOAD_URL . $safeName;

    $stmt = mysqli_prepare($conexion, "INSERT INTO persona_documentos (persona_id, tipo, descripcion, archivo, fecha_carga) VALUES (?, ?, ?, ?, NOW())");
    mysqli_stmt_bind_param($stmt, "isss", $persona_id, $tipo, $descripcion, $archivoRel);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_close($stmt);

    header("Location: ficha.php?cedula=" . urlencode($_POST['cedula_busqueda'] ?? '') . "&ok=doc");
    exit;
}

if ($accion === 'eliminar') {

    $doc_id = isset($_POST['doc_id']) ? (int)$_POST['doc_id'] : 0;
    if ($doc_id <= 0) {
        header("Location: ficha.php?cedula=" . urlencode($_POST['cedula_busqueda'] ?? '') . "&err=doc");
        exit;
    }

    // Obtener archivo
    $stmt = mysqli_prepare($conexion, "SELECT archivo FROM persona_documentos WHERE id = ? AND persona_id = ?");
    mysqli_stmt_bind_param($stmt, "ii", $doc_id, $persona_id);
    mysqli_stmt_execute($stmt);
    $res = mysqli_stmt_get_result($stmt);
    $row = $res ? mysqli_fetch_assoc($res) : null;
    mysqli_stmt_close($stmt);

    if ($row && !empty($row['archivo'])) {
        $fileOnDisk = __DIR__ . '/' . $row['archivo'];
        if (file_exists($fileOnDisk)) {
            @unlink($fileOnDisk);
        }
    }

    // Borrar registro
    $stmt = mysqli_prepare($conexion, "DELETE FROM persona_documentos WHERE id = ? AND persona_id = ?");
    mysqli_stmt_bind_param($stmt, "ii", $doc_id, $persona_id);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_close($stmt);

    header("Location: ficha.php?cedula=" . urlencode($_POST['cedula_busqueda'] ?? '') . "&ok=del");
    exit;
}

header("Location: ficha.php?cedula=" . urlencode($_POST['cedula_busqueda'] ?? ''));
exit;
