<?php
/**
 * Inventario View — Read-only inventory listing with per-warehouse stock breakdown.
 *
 * @see ProductosData::getAllFiltered() / countFiltered() / getDistinctMarcas()
 */

// Auth guard
if (!isset($_SESSION["user_id"])) {
  Core::redir("./");
}

// Role gate: admin OR operaciones only
if (!isset($isAdmin) && !isset($isOperaciones)) {
  http_response_code(403);
  echo "Forbidden";
  exit;
}
if (!$isAdmin && !$isOperaciones) {
  http_response_code(403);
  echo "<h1>403 Forbidden</h1><p>No tiene permisos para acceder al inventario.</p>";
  exit;
}

// Query parameters
$warehouse = $_GET["warehouse"] ?? null;
$marca = $_GET["marca"] ?? null;
$q = isset($_GET["q"]) ? trim($_GET["q"]) : null;
$min_total_stock = max(0, (int)($_GET["min_stock"] ?? 5));
$page = max(1, (int)($_GET["page"] ?? 1));
$per_page = 24;
$offset = ($page - 1) * $per_page;

// Fetch data
$total = ProductosData::countFiltered($warehouse, $marca, $q, $min_total_stock);
$products = ProductosData::getAllFiltered($warehouse, $marca, $q, $min_total_stock, $per_page, $offset);
$marcas = ProductosData::getDistinctMarcas();

$pagination = paginate($total, $per_page, $page);

// URL helper preserving filters
function inventario_url(int $p, $warehouse, $marca, $q, $min_total_stock): string
{
  $params = ["view=inventario", "page=$p"];
  if ($warehouse !== null && $warehouse !== '' && $warehouse !== 'all') {
    $params[] = "warehouse=" . urlencode($warehouse);
  }
  if ($marca !== null && $marca !== '') {
    $params[] = "marca=" . urlencode($marca);
  }
  if ($q !== null && $q !== '') {
    $params[] = "q=" . urlencode($q);
  }
  if ($min_total_stock > 0) {
    $params[] = "min_stock=$min_total_stock";
  }
  return "?" . implode("&", $params);
}
?>

<div class="content-inner container-fluid pb-0" id="page_layout">
  <div class="d-flex justify-content-between align-items-center flex-wrap mb-4 gap-3">
    <div class="d-flex flex-column">
      <h3><?php echo __('pages.inventario.title'); ?></h3>
      <p class="text-muted mb-0"><?php echo __('pages.inventario.subtitle'); ?></p>
    </div>
  </div>

  <!-- Filter form -->
  <form method="get" action="./" class="mb-4">
    <input type="hidden" name="view" value="inventario">
    <div class="row g-2">
      <div class="col-md-3">
        <label for="warehouse" class="form-label visually-hidden"><?php echo __('pages.inventario.filter_warehouse_label'); ?></label>
        <select name="warehouse" id="warehouse" class="form-select">
          <option value=""><?php echo __('pages.inventario.filter_warehouse_all'); ?></option>
          <option value="centro" <?php echo $warehouse === 'centro' ? 'selected' : ''; ?>><?php echo __('pages.inventario.filter_warehouse_centro'); ?></option>
          <option value="satelite" <?php echo $warehouse === 'satelite' ? 'selected' : ''; ?>><?php echo __('pages.inventario.filter_warehouse_satelite'); ?></option>
          <option value="btl" <?php echo $warehouse === 'btl' ? 'selected' : ''; ?>><?php echo __('pages.inventario.filter_warehouse_btl'); ?></option>
          <option value="llojeta" <?php echo $warehouse === 'llojeta' ? 'selected' : ''; ?>><?php echo __('pages.inventario.filter_warehouse_llojeta'); ?></option>
          <option value="interior" <?php echo $warehouse === 'interior' ? 'selected' : ''; ?>><?php echo __('pages.inventario.filter_warehouse_interior'); ?></option>
        </select>
      </div>
      <div class="col-md-3">
        <label for="marca" class="form-label visually-hidden"><?php echo __('pages.inventario.filter_brand_label'); ?></label>
        <select name="marca" id="marca" class="form-select">
          <option value=""><?php echo __('pages.inventario.filter_all_brands'); ?></option>
          <?php foreach ($marcas as $m): ?>
            <option value="<?php echo htmlspecialchars($m); ?>" <?php echo $marca === $m ? 'selected' : ''; ?>>
              <?php echo htmlspecialchars($m); ?>
            </option>
          <?php endforeach; ?>
        </select>
      </div>
      <div class="col-md-2">
        <label for="min_stock" class="form-label visually-hidden"><?php echo __('pages.inventario.filter_min_stock_label'); ?></label>
        <input type="number" name="min_stock" id="min_stock" class="form-control" min="0" value="<?php echo $min_total_stock; ?>" placeholder="<?php echo __('pages.inventario.filter_min_stock_label'); ?>">
      </div>
      <div class="col-md-3">
        <label for="q" class="form-label visually-hidden"><?php echo __('pages.inventario.search_label'); ?></label>
        <input type="search" name="q" id="q" class="form-control" value="<?php echo htmlspecialchars($q ?? ''); ?>" placeholder="<?php echo __('pages.inventario.search_placeholder'); ?>">
      </div>
      <div class="col-md-1">
        <button type="submit" class="btn btn-primary w-100">Filtrar</button>
      </div>
    </div>
  </form>

  <?php if ($total === 0): ?>
    <!-- Empty state -->
    <div class="card text-center py-5">
      <div class="card-body">
        <i class="bi bi-box" style="font-size: 4rem; color: var(--tk-color-text-muted, #6c757d);"></i>
        <h4 class="mt-3"><?php echo __('pages.inventario.empty_title'); ?></h4>
        <p class="text-muted"><?php echo __('pages.inventario.empty_message'); ?></p>
        <a href="./?view=inventario" class="btn btn-secondary"><?php echo __('pages.inventario.empty_clear_filters'); ?></a>
      </div>
    </div>
  <?php else: ?>
    <!-- Results table -->
    <div class="card">
      <div class="card-body p-0">
        <div class="table-responsive">
          <table class="table table-bordered table-hover align-middle mb-0">
            <thead class="table-light">
              <tr>
                <th scope="col" style="width: 80px;">Imagen</th>
                <th scope="col">Producto</th>
                <th scope="col">Marca</th>
                <th scope="col" class="d-none d-md-table-cell">SKU</th>
                <th scope="col" class="text-end">Precio (Bs)</th>
                <th scope="col" class="text-end d-none d-md-table-cell">Centro</th>
                <th scope="col" class="text-end d-none d-md-table-cell">Satélite</th>
                <th scope="col" class="text-end d-none d-md-table-cell">BTL</th>
                <th scope="col" class="text-end d-none d-md-table-cell">Llojeta</th>
                <th scope="col" class="text-end d-none d-md-table-cell">Interior</th>
                <th scope="col" class="text-end"><?php echo __('pages.inventario.column_total'); ?></th>
                <th scope="col" class="d-none d-lg-table-cell">Última act.</th>
              </tr>
            </thead>
            <tbody>
              <?php foreach ($products as $p):
                $total_stock = (int)($p->stock_lp_centro ?? 0)
                            + (int)($p->stock_lp_satelite ?? 0)
                            + (int)($p->stock_lp_btl ?? 0)
                            + (int)($p->stock_lp_llojeta ?? 0)
                            + (int)($p->stock_interior ?? 0);
                $is_low = $total_stock < $min_total_stock;
                $row_class = $is_low ? 'table-warning' : '';
              ?>
                <tr class="<?php echo $row_class; ?>">
                  <td>
                    <img src="<?php echo htmlspecialchars($p->image ?? './assets/images/no-image.svg'); ?>"
                         alt="<?php echo __('pages.inventario.column_image_alt'); ?>"
                         class="img-thumbnail"
                         style="width: 60px; height: 60px; object-fit: cover;"
                         onerror="this.onerror=null;this.src='./assets/images/no-image.svg';">
                  </td>
                  <td><?php echo htmlspecialchars($p->name ?? ''); ?></td>
                  <td><?php echo htmlspecialchars($p->marca_text ?? ''); ?></td>
                  <td class="d-none d-md-table-cell"><small><?php echo htmlspecialchars($p->sku_producto ?? ''); ?></small></td>
                  <td class="text-end"><?php echo number_format((float)($p->price ?? 0), 2, '.', ','); ?></td>
                  <td class="text-end d-none d-md-table-cell"><?php echo (int)($p->stock_lp_centro ?? 0); ?></td>
                  <td class="text-end d-none d-md-table-cell"><?php echo (int)($p->stock_lp_satelite ?? 0); ?></td>
                  <td class="text-end d-none d-md-table-cell"><?php echo (int)($p->stock_lp_btl ?? 0); ?></td>
                  <td class="text-end d-none d-md-table-cell"><?php echo (int)($p->stock_lp_llojeta ?? 0); ?></td>
                  <td class="text-end d-none d-md-table-cell"><?php echo (int)($p->stock_interior ?? 0); ?></td>
                  <td class="text-end"><strong><?php echo $total_stock; ?></strong><?php if ($is_low): ?> <i class="bi bi-exclamation-triangle-fill text-warning" title="Stock bajo"></i><?php endif; ?></td>
                  <td class="d-none d-lg-table-cell"><small><?php echo $p->last_updated ? date('Y-m-d', strtotime($p->last_updated)) : ''; ?></small></td>
                </tr>
              <?php endforeach; ?>
            </tbody>
          </table>
        </div>
      </div>
    </div>

    <!-- Pagination -->
    <?php if ($pagination['totalPages'] > 1): ?>
      <nav aria-label="<?php echo __('pages.inventario.title'); ?>" class="mt-3">
        <div class="d-flex justify-content-center gap-1">
          <?php if ($pagination['hasPrev']): ?>
            <a href="<?php echo htmlspecialchars(inventario_url($pagination['prevPage'], $warehouse, $marca, $q, $min_total_stock)); ?>"
               class="btn btn-sm btn-outline-secondary"
               aria-label="<?php echo __('pages.inventario.pagination_prev'); ?>">
              &laquo; <?php echo __('pages.inventario.pagination_prev'); ?>
            </a>
          <?php endif; ?>

          <?php
            $start = max(1, $page - 2);
            $end = min($pagination['totalPages'], $page + 2);
            for ($i = $start; $i <= $end; $i++):
          ?>
            <a href="<?php echo htmlspecialchars(inventario_url($i, $warehouse, $marca, $q, $min_total_stock)); ?>"
               class="btn btn-sm <?php echo $i === $page ? 'btn-primary' : 'btn-outline-secondary'; ?>"
               <?php if ($i === $page) echo 'aria-current="page"'; ?>>
              <?php echo $i; ?>
            </a>
          <?php endfor; ?>

          <?php if ($pagination['hasNext']): ?>
            <a href="<?php echo htmlspecialchars(inventario_url($pagination['nextPage'], $warehouse, $marca, $q, $min_total_stock)); ?>"
               class="btn btn-sm btn-outline-secondary"
               aria-label="<?php echo __('pages.inventario.pagination_next'); ?>">
              <?php echo __('pages.inventario.pagination_next'); ?> &raquo;
            </a>
          <?php endif; ?>
        </div>
      </nav>
    <?php endif; ?>
  <?php endif; ?>
</div>
