<?php
/**
 * API: GestionPro - Eliminar todos los registros de un día específico
 */
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit;
}

require_once __DIR__ . '/config/db.php';

try {
    // Leer input JSON
    $input = json_decode(file_get_contents('php://input'), true);
    if (!$input) {
        throw new Exception("Datos de entrada inválidos");
    }

    $fecha = $input['fecha'] ?? '';
    $codigoUsuario = $input['codigo_usuario'] ?? '';

    if (empty($fecha) || !preg_match('/^\d{4}-\d{2}-\d{2}$/', $fecha)) {
        throw new Exception("Fecha inválida o requerida");
    }

    if (empty($codigoUsuario)) {
        throw new Exception("Código de usuario requerido");
    }

    $pdo = getConnection();
    $pdo->beginTransaction();

    // 1. Validar el código de usuario
    $stmtUser = $pdo->prepare("SELECT id, nombre FROM usuarios WHERE codigo_usuario = :codigo LIMIT 1");
    $stmtUser->execute([':codigo' => $codigoUsuario]);
    $user = $stmtUser->fetch();

    if (!$user) {
        throw new Exception("Código de usuario incorrecto. Permiso denegado.");
    }

    // 2. Obtener las importaciones XML de ese día
    $stmtImports = $pdo->prepare("SELECT id FROM fel_importaciones WHERE DATE(fecha_importacion) = :fecha");
    $stmtImports->execute([':fecha' => $fecha]);
    $imports = $stmtImports->fetchAll();

    $importIdsDeleted = [];
    foreach ($imports as $imp) {
        $importId = $imp['id'];
        // Borrar los detalles de esta importación
        $stmtDelDetail = $pdo->prepare("DELETE FROM fel_importacion_detalle WHERE importacion_id = :import_id");
        $stmtDelDetail->execute([':import_id' => $importId]);

        // Borrar la cabecera de la importación
        $stmtDelHeader = $pdo->prepare("DELETE FROM fel_importaciones WHERE id = :import_id");
        $stmtDelHeader->execute([':import_id' => $importId]);

        $importIdsDeleted[] = $importId;
    }

    // 3. Procesar datos de PDF de ese día
    $stmtPdf = $pdo->prepare("SELECT pdf_concatenado FROM factura_dias_pdf WHERE fecha = :fecha");
    $stmtPdf->execute([':fecha' => $fecha]);
    $pdfData = $stmtPdf->fetch();

    if ($pdfData && !empty($pdfData['pdf_concatenado'])) {
        // El path es relativo a sincnuevo/
        $pdfPath = __DIR__ . '/../../sincnuevo/' . $pdfData['pdf_concatenado'];
        if (file_exists($pdfPath)) {
            @unlink($pdfPath);
        }
    }

    // Borrar registro de PDF
    $stmtDelPdf = $pdo->prepare("DELETE FROM factura_dias_pdf WHERE fecha = :fecha");
    $stmtDelPdf->execute([':fecha' => $fecha]);

    $pdo->commit();

    echo json_encode([
        'success' => true,
        'message' => "Día {$fecha} eliminado con éxito por el usuario {$user['nombre']}.",
        'deleted_imports' => $importIdsDeleted
    ]);

} catch (Exception $e) {
    if (isset($pdo) && $pdo->inTransaction()) {
        $pdo->rollBack();
    }
    http_response_code(400);
    echo json_encode([
        'success' => false,
        'error' => $e->getMessage()
    ]);
}
