<?php
// dashboard.php
declare(strict_types=1);

require_once __DIR__ . '/includes/auth.php';
require_once __DIR__ . '/includes/helpers.php';

require_scope();

$pdo = pdo();
$u  = current_user();
$sc = scope();

$companyId  = (int)($sc['company_id'] ?? 0);
$locationId = (int)($sc['location_id'] ?? 0);

$st = $pdo->prepare("SELECT name FROM companies WHERE id=?");
$st->execute([$companyId]);
$companyName = (string)($st->fetchColumn() ?: '');

$st = $pdo->prepare("SELECT name FROM locations WHERE id=?");
$st->execute([$locationId]);
$locationName = (string)($st->fetchColumn() ?: '');

/**
 * Define prefijo por empresa.
 * Si una empresa tiene carpeta propia, se enruta ahí.
 */
function company_module_prefix(int $companyId): string {
  return match ($companyId) {
    2 => 'HieloBolsa/',
    // 3 => 'Botella/',
    // 4 => 'Garrafon/',
    default => '',
  };
}

/**
 * Devuelve la ruta correcta del módulo.
 * - Si hay prefijo por empresa, usa archivo dentro de carpeta.
 * - Si no, usa archivo legacy actual.
 */
function mod_href(string $prefix, string $defaultFile, ?string $moduleFile = null): string {
  $file = $moduleFile ?: $defaultFile;
  return $prefix !== '' ? $prefix . $file : $defaultFile;
}

$modulePrefix = company_module_prefix($companyId);

$hrefProduccion      = mod_href($modulePrefix, 'produccion.php');
$hrefCalidad         = mod_href($modulePrefix, 'calidad.php');
$hrefAlmacen         = mod_href($modulePrefix, 'almacen_salidas.php', 'almacen.php');
$hrefTransferencias  = mod_href($modulePrefix, 'transferencias.php');
$hrefVentas          = mod_href($modulePrefix, 'ventas_pedidos.php', 'ventas.php');
$hrefReportes        = 'reportes.php';
$hrefAdmin           = 'admin_config.php';
$hrefCubicado        = 'produccion_cubicado.php';
$logoPath = 'assets/logo.png';

/* ===== Permisos por módulo =====
 * Regla especial:
 * - Rol ventas: solo módulo Ventas.
 * - Rol reparto: solo módulo Ventas/Rutas.
 * - Rol supervisor: módulos operativos + reportes, sin Admin.
 * - Admin conserva todo.
 */
function user_has_any_role_breport(array $codes): bool {
  foreach ($codes as $code) {
    if (has_role((string)$code)) return true;
  }
  return false;
}

function can_access_module_breport(string $module): bool {
  $module = strtolower(trim($module));

  if (has_role('admin')) {
    return true;
  }

  if (has_role('supervisor')) {
    return in_array($module, [
      'produccion',
      'produccion_cubicado',
      'calidad',
      'almacen',
      'transferencias',
      'ventas',
      'reportes'
    ], true);
  }

  if (has_role('ventas') || has_role('sales')) {
    return $module === 'ventas';
  }

  if (has_role('reparto')) {
    return $module === 'ventas';
  }

  if (has_role('plant_admin')) {
    return in_array($module, [
      'produccion',
      'produccion_cubicado',
      'calidad',
      'almacen',
      'transferencias',
      'ventas',
      'reportes'
    ], true);
  }

  if (has_role('corp')) {
    return in_array($module, ['ventas', 'reportes'], true);
  }

  return match ($module) {
    'produccion' => user_has_any_role_breport(['production']),
    'produccion_cubicado' => user_has_any_role_breport(['production']),
    'calidad' => user_has_any_role_breport(['quality', 'calidad']),
    'almacen' => user_has_any_role_breport(['warehouse', 'almacen']),
    'transferencias' => user_has_any_role_breport(['warehouse', 'almacen']),
    'ventas' => user_has_any_role_breport(['ventas', 'sales', 'reparto']),
    'reportes' => false,
    'admin' => false,
    default => false,
  };
}

$canProduccion      = can_access_module_breport('produccion');
$canCubicado        = can_access_module_breport('produccion_cubicado');
$canCalidad         = can_access_module_breport('calidad');
$canAlmacen         = can_access_module_breport('almacen');
$canTransferencias  = can_access_module_breport('transferencias');
$canVentas          = can_access_module_breport('ventas');
$canReportes        = can_access_module_breport('reportes');
$canAdmin           = can_access_module_breport('admin');

/* ===== Modo de calidad ===== */
$calidadMode = $canCalidad ? 'Captura' : '';
?>
<!doctype html>
<html lang="es">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>BReport · Dashboard</title>

  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
  <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" rel="stylesheet">

  <style>
    body{background:#f6f7fb;}
    .hero{
      background: linear-gradient(135deg,#061b2b,#0b2f55);
      color:#fff;
      border-radius:22px;
      padding:18px 18px;
    }
    .module{
      border-radius:18px;
      border:1px solid rgba(0,0,0,.06);
      transition:transform .08s ease, box-shadow .08s ease;
      cursor:pointer;
      text-decoration:none;
      color:inherit;
    }
    .module:hover{
      transform:translateY(-2px);
      box-shadow:0 10px 28px rgba(0,0,0,.08);
    }
    .module:active{ transform:translateY(0px); }

    .m-ico{
      width:48px;
      height:48px;
      border-radius:14px;
      display:flex;
      align-items:center;
      justify-content:center;
      background:rgba(13,110,253,.10);
      color:#0d6efd;
      font-size:24px;
      flex:0 0 auto;
    }
    .m-ico.green{ background:rgba(25,135,84,.12); color:#198754; }
    .m-ico.orange{ background:rgba(255,193,7,.18); color:#d39e00; }
    .m-ico.red{ background:rgba(220,53,69,.12); color:#dc3545; }
    .m-ico.gray{ background:rgba(108,117,125,.12); color:#6c757d; }
    .m-ico.purple{ background:rgba(111,66,193,.12); color:#6f42c1; }
    .m-ico.teal{ background:rgba(32,201,151,.14); color:#20c997; }
    .m-ico.indigo{ background:rgba(67,97,238,.14); color:#4361ee; }

    .small-muted{color:rgba(255,255,255,.72);}
    .badge-scope{
      background:rgba(255,255,255,.14);
      border:1px solid rgba(255,255,255,.18);
    }
    .chip{
      border:1px solid rgba(0,0,0,.08);
      background:#fff;
    }

    .m-logo{
      width:48px;
      height:48px;
      border-radius:14px;
      display:flex;
      align-items:center;
      justify-content:center;
      background:rgba(13,110,253,.10);
      border:1px solid rgba(13,110,253,.14);
      padding:7px;
      flex:0 0 auto;
    }
    .m-logo img{
      width:100%;
      height:100%;
      object-fit:contain;
      border-radius:10px;
    }

  </style>
</head>

<body>
<nav class="navbar bg-white border-bottom">
  <div class="container-fluid">
    <span class="navbar-brand fw-bold">BReport</span>
    <div class="ms-auto d-flex gap-2 align-items-center">
      <span class="text-muted small"><?= h($u['full_name'] ?? '') ?></span>

      <a class="btn btn-outline-secondary btn-sm" href="select_scope.php">
        <i class="bi bi-geo-alt"></i> Cambiar de empresa
      </a>

      <a class="btn btn-outline-danger btn-sm" href="logout.php" title="Salir">
        <i class="bi bi-box-arrow-right"></i>
      </a>
    </div>
  </div>
</nav>

<div class="container py-4">
  <div class="hero shadow-sm mb-3">
    <div class="d-flex flex-wrap gap-2 align-items-center">
      <div>
        <div class="fw-bold fs-4">Panel principal</div>
        <div class="small-muted">Accesos rápidos a módulos</div>
      </div>

      <div class="ms-auto d-flex gap-2 align-items-center">
        <span class="badge badge-scope rounded-pill px-3 py-2">
          <i class="bi bi-building"></i> <?= h($companyName) ?>
        </span>
        <span class="badge badge-scope rounded-pill px-3 py-2">
          <i class="bi bi-pin-map"></i> <?= h($locationName) ?>
        </span>
      </div>
    </div>
  </div>

  <div class="row g-3">

    <?php if ($canProduccion): ?>
      <div class="col-12 col-sm-6 col-lg-3">
        <a class="card module h-100" href="<?= h($hrefProduccion) ?>">
          <div class="card-body d-flex gap-3">
            <div class="m-logo"><img src="<?= h($logoPath) ?>" alt="BReport"></div>
            <div class="flex-grow-1">
              <div class="fw-bold">Producción</div>
              <div class="text-muted small">Reportaje de producción</div>
            </div>
          </div>
        </a>
      </div>
    <?php endif; ?>

    <?php if ($canCubicado && $modulePrefix === ''): ?>
      <div class="col-12 col-sm-6 col-lg-3">
        <a class="card module h-100" href="<?= h($hrefCubicado) ?>">
          <div class="card-body d-flex gap-3">
            <div class="m-logo"><img src="<?= h($logoPath) ?>" alt="BReport"></div>
            <div class="flex-grow-1">
              <div class="fw-bold">Producción Cubicado</div>
              <div class="text-muted small">Convierte barra a artículos</div>
            </div>
          </div>
        </a>
      </div>
    <?php endif; ?>

    <?php if ($canCalidad): ?>
      <div class="col-12 col-sm-6 col-lg-3">
        <a class="card module h-100" href="<?= h($hrefCalidad) ?>">
          <div class="card-body d-flex gap-3 align-items-center">
            <div class="m-logo"><img src="<?= h($logoPath) ?>" alt="BReport"></div>
            <div class="flex-grow-1">
              <div class="fw-bold d-flex align-items-center gap-2">
                Calidad
                <?php if ($calidadMode !== ''): ?>
                  <span class="badge rounded-pill chip text-muted small"><?= h($calidadMode) ?></span>
                <?php endif; ?>
              </div>
              <div class="text-muted small">Reportaje de calidad por turno</div>
            </div>
          </div>
        </a>
      </div>
    <?php endif; ?>

    <?php if ($canAlmacen): ?>
      <div class="col-12 col-sm-6 col-lg-3">
        <a class="card module h-100" href="<?= h($hrefAlmacen) ?>">
          <div class="card-body d-flex gap-3">
            <div class="m-logo"><img src="<?= h($logoPath) ?>" alt="BReport"></div>
            <div class="flex-grow-1">
              <div class="fw-bold">Almacén</div>
              <div class="text-muted small">Existencia disponible</div>
            </div>
          </div>
        </a>
      </div>
    <?php endif; ?>

    <?php if ($canTransferencias): ?>
      <div class="col-12 col-sm-6 col-lg-3">
        <a class="card module h-100" href="<?= h($hrefTransferencias) ?>">
          <div class="card-body d-flex gap-3">
            <div class="m-logo"><img src="<?= h($logoPath) ?>" alt="BReport"></div>
            <div class="flex-grow-1">
              <div class="fw-bold">Transferencias</div>
              <div class="text-muted small">Envío / Recepción</div>
            </div>
          </div>
        </a>
      </div>
    <?php endif; ?>

    <?php if ($canVentas): ?>
      <div class="col-12 col-sm-6 col-lg-3">
        <a class="card module h-100" href="<?= h($hrefVentas) ?>">
          <div class="card-body d-flex gap-3">
            <div class="m-logo"><img src="<?= h($logoPath) ?>" alt="BReport"></div>
            <div class="flex-grow-1">
              <div class="fw-bold">Ventas</div>
              <div class="text-muted small">Pedidos y autorización</div>
            </div>
          </div>
        </a>
      </div>
    <?php endif; ?>

    <?php if ($canReportes): ?>
      <div class="col-12 col-sm-6 col-lg-3">
        <a class="card module h-100" href="<?= h($hrefReportes) ?>">
          <div class="card-body d-flex gap-3">
            <div class="m-logo"><img src="<?= h($logoPath) ?>" alt="BReport"></div>
            <div class="flex-grow-1">
              <div class="fw-bold">Reportes</div>
              <div class="text-muted small">KPIs corporativo</div>
            </div>
          </div>
        </a>
      </div>
    <?php endif; ?>

    <?php if ($canAdmin): ?>
      <div class="col-12 col-sm-6 col-lg-3">
        <a class="card module h-100" href="<?= h($hrefAdmin) ?>">
          <div class="card-body d-flex gap-3">
            <div class="m-logo"><img src="<?= h($logoPath) ?>" alt="BReport"></div>
            <div class="flex-grow-1">
              <div class="fw-bold">Admin</div>
              <div class="text-muted small">Catálogos y accesos</div>
            </div>
          </div>
        </a>
      </div>
    <?php endif; ?>

  </div>

  <div class="text-muted small mt-3">
    Tip: En celular los accesos quedan en 2 columnas para que sea fácil tocar.
  </div>
</div>
</body>
</html>