<?php
session_start();

// Tiempo máximo de inactividad (en segundos)
$tiempo_inactividad = 900; // 15 minutos

if (isset($_SESSION['ultimo_movimiento'])) {
    if (time() - $_SESSION['ultimo_movimiento'] > $tiempo_inactividad) {
        session_unset();
        session_destroy();
        header("Location: login2.php?timeout=1");
        exit();
    }
}

$_SESSION['ultimo_movimiento'] = time();

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

require 'conexion.php';

// Cargar áreas desde areas.txt
$areas = file("areas.txt", FILE_IGNORE_NEW_LINES);

// Filtros
$area_filtro  = isset($_GET['area']) ? $_GET['area'] : '';
$fecha_desde  = isset($_GET['desde']) ? $_GET['desde'] : '';
$fecha_hasta  = isset($_GET['hasta']) ? $_GET['hasta'] : '';

// PAGINACIÓN
$registros_por_pagina = 10;
$pagina = isset($_GET['pagina']) ? (int)$_GET['pagina'] : 1;
$offset = ($pagina - 1) * $registros_por_pagina;

// Construir consulta con filtros
$sql = "SELECT * FROM cotizaciones WHERE 1=1";

if ($area_filtro != '') {
    $sql .= " AND area_solicitante = '" . $conexion->real_escape_string($area_filtro) . "'";
}

if ($fecha_desde != '') {
    $sql .= " AND fecha >= '" . $conexion->real_escape_string($fecha_desde) . "'";
}

if ($fecha_hasta != '') {
    $sql .= " AND fecha <= '" . $conexion->real_escape_string($fecha_hasta) . "'";
}

$sql .= " ORDER BY id DESC LIMIT $offset, $registros_por_pagina";

$result = $conexion->query($sql);
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Listado de Cotizaciones</title>

<style>
body { font-family: Arial; margin: 20px; }
table { width: 100%; border-collapse: collapse; margin-top: 20px; }
th, td { border: 1px solid #ccc; padding: 8px; }
th { background: #eee; }
button { padding: 8px 15px; background: #0078D7; color: white; border: none; cursor: pointer; }
button:hover { background: #005fa3; }
</style>

</head>
<body>

<div style="text-align: right; margin-bottom: 15px;">
    <a href="index.php" 
       style="background: #28a745; color: white; padding: 10px 18px; 
              text-decoration: none; border-radius: 5px; font-weight: bold;">
        Requisición
    </a>
</div>

<h2>Listado de Cotizaciones</h2>

<form method="GET">

<label>Área solicitante:</label>
<select name="area">
    <option value="">Todas las áreas</option>
    <?php
    foreach ($areas as $a) {
        $sel = ($a == $area_filtro) ? "selected" : "";
        echo "<option $sel>$a</option>";
    }
    ?>
</select>

&nbsp;&nbsp;&nbsp;

<label>Fecha desde:</label>
<input type="date" name="desde" value="<?= $fecha_desde ?>">

<label>Fecha hasta:</label>
<input type="date" name="hasta" value="<?= $fecha_hasta ?>">

<button type="submit">Filtrar</button>

</form>

<div style="margin: 20px 0;">
    <a href="exportar_excel.php?area=<?= urlencode($area_filtro) ?>&desde=<?= urlencode($fecha_desde) ?>&hasta=<?= urlencode($fecha_hasta) ?>"
       style="padding: 8px 15px; background: green; color: white; text-decoration: none; margin-right: 10px;">
       Exportar Excel
    </a>

    <a href="exportar_csv.php?area=<?= urlencode($area_filtro) ?>&desde=<?= urlencode($fecha_desde) ?>&hasta=<?= urlencode($fecha_hasta) ?>"
       style="padding: 8px 15px; background: #0078D7; color: white; text-decoration: none;">
       Exportar CSV
    </a>
</div>

<table>
<thead>
<tr>
<th>Folio</th>
<th>Fecha</th>
<th>Área solicitante</th>
<th>Tipo de proyecto</th>
<th>Proveedor</th>
<th>Subtotal</th>
<th>IVA</th>
<th>Total</th>
<th>PDF</th>
</tr>
</thead>
<tbody>

<?php
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {

        echo "<tr>
            <td>{$row['folio']}</td>
            <td>{$row['fecha']}</td>
            <td>{$row['area_solicitante']}</td>
            <td>{$row['tipo_proyecto']}</td>
            <td>{$row['proveedor']}</td>
            <td>$" . number_format($row['subtotal'], 2) . "</td>
            <td>$" . number_format($row['iva'], 2) . "</td>
            <td><strong>$" . number_format($row['total'], 2) . "</strong></td>
            <td><a href='pdf/{$row['folio']}.pdf' target='_blank'>Ver PDF</a></td>
        </tr>";
    }
} else {
    echo "<tr><td colspan='9' style='text-align:center;'>No hay cotizaciones registradas</td></tr>";
}
?>

</tbody>
</table>

<?php
// Contar total de registros con los mismos filtros
$sql_total = "SELECT COUNT(*) AS total FROM cotizaciones WHERE 1=1";

if ($area_filtro != '') {
    $sql_total .= " AND area_solicitante = '" . $conexion->real_escape_string($area_filtro) . "'";
}
if ($fecha_desde != '') {
    $sql_total .= " AND fecha >= '" . $conexion->real_escape_string($fecha_desde) . "'";
}
if ($fecha_hasta != '') {
    $sql_total .= " AND fecha <= '" . $conexion->real_escape_string($fecha_hasta) . "'";
}

$total = $conexion->query($sql_total)->fetch_assoc()['total'];
$total_paginas = ceil($total / $registros_por_pagina);

// Navegación
echo "<div style='text-align:center; margin-top:20px;'>";

if ($pagina > 1) {
    echo "<a href='listar.php?pagina=" . ($pagina - 1) . "&area=$area_filtro&desde=$fecha_desde&hasta=$fecha_hasta' 
          style='margin-right:20px;'>&laquo; Anterior</a>";
}

if ($pagina < $total_paginas) {
    echo "<a href='listar.php?pagina=" . ($pagina + 1) . "&area=$area_filtro&desde=$fecha_desde&hasta=$fecha_hasta'>
          Siguiente &raquo;</a>";
}

echo "</div>";
?>

</body>
</html>
