<?php

ini_set('display_errors', 1);
error_reporting(E_ALL);

// Incluir la conexión a la base de datos
include 'conexion.php';

// Establecer la cabecera para devolver los datos en formato JSON
header('Content-Type: application/json');

// Verificar que el usuario haya iniciado sesión
session_start();
if (!isset($_SESSION['id_usuario'])) {
    echo json_encode(['message' => 'Usuario no autenticado.']);
    exit();
}

// Obtener el id_usuario desde la sesión
$id_usuario = $_SESSION['id_usuario'];

// Obtener los parámetros de búsqueda y paginación
$codigo_busqueda = isset($_GET['codigo']) ? $_GET['codigo'] : '';
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$limit = 5;  // Puedes ajustar el límite de resultados por página
$offset = ($page - 1) * $limit;

// Consulta para obtener el id_empresa asociado al usuario
$sql = "
    SELECT id_empresa
    FROM usuarios_sistema
    WHERE id_usuario = ? 
";

$stmt = $conexion->prepare($sql);
$stmt->bind_param("i", $id_usuario);
$stmt->execute();
$result = $stmt->get_result();

// Verificar si se obtuvo el id_empresa
if ($result->num_rows > 0) {
    $empresa_data = $result->fetch_assoc();
    $id_empresa = $empresa_data['id_empresa'];

    // Consulta para obtener las devoluciones de la empresa, incluyendo el código y los nombres completos del usuario
    // Agregar filtrado por código y paginación
    $sql_devoluciones = "
        SELECT d.id, d.fecha, e.nombre AS empresa, d.codigo, 
               CONCAT(u.nombres, ' ', u.apellido_paterno, ' ', u.apellido_materno) AS usuario
        FROM devoluciones d
        INNER JOIN empresas e ON d.id_empresa = e.id_empresa
        INNER JOIN usuarios u ON d.id_usuario = u.id
        WHERE d.id_empresa = ? AND d.codigo LIKE ?
        ORDER BY d.fecha DESC
        LIMIT ? OFFSET ?
    ";

    $codigo_busqueda = '%' . $codigo_busqueda . '%';  // Agregar % para búsqueda parcial
    $stmt_devoluciones = $conexion->prepare($sql_devoluciones);
    $stmt_devoluciones->bind_param("ssii", $id_empresa, $codigo_busqueda, $limit, $offset);
    $stmt_devoluciones->execute();
    $result_devoluciones = $stmt_devoluciones->get_result();

    if ($result_devoluciones->num_rows > 0) {
        $devoluciones = [];

        while ($row = $result_devoluciones->fetch_assoc()) {
            $devoluciones[] = $row;
        }

        // Obtener el número total de resultados para la paginación
        $sql_count = "
            SELECT COUNT(*) AS total
            FROM devoluciones d
            WHERE d.id_empresa = ? AND d.codigo LIKE ?
        ";

        $stmt_count = $conexion->prepare($sql_count);
        $stmt_count->bind_param("ss", $id_empresa, $codigo_busqueda);
        $stmt_count->execute();
        $result_count = $stmt_count->get_result();
        $total_results = $result_count->fetch_assoc()['total'];
        $total_pages = ceil($total_results / $limit);

        echo json_encode(['devoluciones' => $devoluciones, 'total_pages' => $total_pages, 'current_page' => $page]);
    } else {
        echo json_encode(['message' => 'No se encontraron devoluciones para esta empresa.']);
    }

    $stmt_devoluciones->close();
} else {
    echo json_encode(['message' => 'No se encontró la empresa para el usuario.']);
}

$stmt->close();
$conexion->close();
?>
