<?php
/**
 * modules/code/index.php — KamiCode: panel de uso del usuario (sin coste) + heatmap.
 */
if (!defined('IN_APP')) { die('Acceso denegado'); }

// Manifiesto de la extensión (versión + url del .vsix) para la sección de instalación.
$extVer = '';
$extUrl = '';
$manifestPath = __DIR__ . '/../../_files/extension/latest.json';
if (is_file($manifestPath)) {
    $m = json_decode((string)file_get_contents($manifestPath), true);
    if (is_array($m)) {
        $extVer = (string)($m['version'] ?? '');
        $extUrl = (string)($m['url'] ?? '');
    }
}

$code  = new Code($mysqli, $_config);
$st    = $code->stats($_user['id_user']);
$bm    = $code->byModel($_user['id_user']);
$daily = $code->daily($_user['id_user']);
$brands = $code->brands();

$page_title    = App::t('code.title');
$page_subtitle = App::t('code.subtitle');
?>
<div class="space-y-6 px-4 py-6">

  <!-- Uso (sin coste) -->
  <section>
    <h2 class="mb-2 text-sm font-semibold uppercase tracking-wide text-gray-dark dark:text-gray-light"><?= App::e(App::t('code.usage')) ?></h2>
    <div class="grid gap-4 sm:grid-cols-3 lg:grid-cols-5">
      <div class="rounded-lg border border-gray-200 bg-white px-4 py-4 dark:border-ink-700 dark:bg-ink-900"><div class="text-xs text-gray-dark dark:text-gray-light"><?= App::e(App::t('admin.u_requests')) ?></div><div class="mt-1 text-2xl font-semibold"><?= (int)$st['req'] ?></div></div>
      <div class="rounded-lg border border-gray-200 bg-white px-4 py-4 dark:border-ink-700 dark:bg-ink-900"><div class="text-xs text-gray-dark dark:text-gray-light"><?= App::e(App::t('admin.u_sessions')) ?></div><div class="mt-1 text-2xl font-semibold"><?= (int)$st['sess'] ?></div></div>
      <div class="rounded-lg border border-gray-200 bg-white px-4 py-4 dark:border-ink-700 dark:bg-ink-900"><div class="text-xs text-gray-dark dark:text-gray-light"><?= App::e(App::t('admin.u_tokens_in')) ?></div><div class="mt-1 text-2xl font-semibold"><?= number_format((int)$st['tin']) ?></div></div>
      <div class="rounded-lg border border-gray-200 bg-white px-4 py-4 dark:border-ink-700 dark:bg-ink-900"><div class="text-xs text-gray-dark dark:text-gray-light"><?= App::e(App::t('admin.u_tokens_out')) ?></div><div class="mt-1 text-2xl font-semibold"><?= number_format((int)$st['tout']) ?></div></div>
      <div class="rounded-lg border border-gray-200 bg-white px-4 py-4 dark:border-ink-700 dark:bg-ink-900"><div class="text-xs text-gray-dark dark:text-gray-light"><?= App::e(App::t('admin.u_cached')) ?></div><div class="mt-1 text-2xl font-semibold"><?= number_format((int)$st['tcached']) ?></div></div>
    </div>
  </section>

  <!-- Actividad diaria (tipo GitHub) -->
  <section>
    <h3 class="mb-2 text-sm font-medium"><?= App::e(App::t('user.activity')) ?></h3>
    <?php include __DIR__ . '/../../inc/heatmap.php'; ?>
  </section>

  <!-- Por modelo (sin coste) -->
  <section>
    <h3 class="mb-2 text-sm font-medium"><?= App::e(App::t('admin.u_by_model')) ?></h3>
    <div class="overflow-hidden rounded-lg border border-gray-200 bg-white dark:border-ink-700 dark:bg-ink-900">
      <table class="w-full text-sm">
        <thead><tr class="border-b border-gray-200 bg-gray-50 text-left text-xs uppercase tracking-wide text-gray-dark dark:border-ink-700 dark:bg-ink-800 dark:text-gray-light">
          <th class="px-4 py-2 font-semibold"><?= App::e(App::t('admin.u_model')) ?></th>
          <th class="px-4 py-2 text-right font-semibold"><?= App::e(App::t('admin.u_requests')) ?></th>
          <th class="px-4 py-2 text-right font-semibold"><?= App::e(App::t('admin.u_tokens_in')) ?></th>
          <th class="px-4 py-2 text-right font-semibold"><?= App::e(App::t('admin.u_tokens_out')) ?></th>
          <th class="px-4 py-2 text-right font-semibold"><?= App::e(App::t('admin.u_cached')) ?></th>
        </tr></thead>
        <tbody class="divide-y divide-gray-200 dark:divide-ink-700">
          <?php if (!$bm): ?>
            <tr><td colspan="5" class="px-4 py-4 text-gray-dark dark:text-gray-light"><?= App::e(App::t('admin.u_empty')) ?></td></tr>
          <?php else: foreach ($bm as $r): ?>
            <tr class="hover:bg-gray-50 dark:hover:bg-ink-800/50">
              <td class="px-4 py-2 text-xs"><?= App::e(!empty($brands[$r['model']]) ? $brands[$r['model']] : App::t('admin.hidden')) ?></td>
              <td class="px-4 py-2 text-right"><?= (int)$r['req'] ?></td>
              <td class="px-4 py-2 text-right"><?= number_format((int)$r['tin']) ?></td>
              <td class="px-4 py-2 text-right"><?= number_format((int)$r['tout']) ?></td>
              <td class="px-4 py-2 text-right"><?= number_format((int)$r['tcached']) ?></td>
            </tr>
          <?php endforeach; endif; ?>
        </tbody>
      </table>
    </div>
  </section>

  <!-- Instalar la extensión -->
  <section>
    <h2 class="mb-2 text-sm font-semibold uppercase tracking-wide text-gray-dark dark:text-gray-light"><?= App::e(App::t('install.title')) ?></h2>
    <div class="rounded-lg border border-gray-200 bg-white dark:border-ink-700 dark:bg-ink-900">
      <div class="px-4 py-5">
        <p class="mb-4 text-sm text-gray-dark dark:text-gray-light"><?= App::e(App::t('install.intro')) ?></p>

        <?php if ($extUrl !== ''): ?>
          <a href="/download/" download
             class="inline-flex items-center gap-2 rounded-lg bg-primary-600 px-4 py-2 text-sm font-medium text-white hover:bg-primary-700">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="h-5 w-5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v12m0 0 4-4m-4 4-4-4M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"/></svg>
            <?= App::e(App::t('install.download')) ?><?= $extVer !== '' ? ' (v' . App::e($extVer) . ')' : '' ?>
          </a>

          <ol class="mt-5 space-y-2 text-sm text-gray-dark dark:text-gray-light">
            <li><span class="font-medium text-ink-900 dark:text-paper">1.</span> <?= App::e(App::t('install.step1')) ?></li>
            <li><span class="font-medium text-ink-900 dark:text-paper">2.</span> <?= App::e(App::t('install.step2')) ?></li>
            <li><span class="font-medium text-ink-900 dark:text-paper">3.</span> <?= App::e(App::t('install.step3')) ?></li>
          </ol>

          <p class="mt-5 mb-1 text-xs text-gray-dark dark:text-gray-light"><?= App::e(App::t('install.cli_hint')) ?></p>
          <div class="flex items-center gap-2">
            <?php $cli = 'code --install-extension ' . basename(parse_url($extUrl, PHP_URL_PATH)) . ' --force'; ?>
            <input type="text" readonly value="<?= App::e($cli) ?>"
                   class="w-full truncate rounded-lg border border-gray-200 bg-gray-50 px-3 py-2 font-mono text-sm dark:border-ink-700 dark:bg-ink-800">
            <button type="button" data-copy="<?= App::e($cli) ?>"
                    class="shrink-0 rounded-lg border border-gray-200 px-3 py-2 text-sm hover:bg-gray-50 dark:border-ink-700 dark:hover:bg-ink-800">
              <?= App::e(App::t('install.copy')) ?>
            </button>
          </div>

          <p class="mt-4 text-xs text-gray-dark dark:text-gray-light"><?= App::e(App::t('install.autoupdate')) ?></p>
        <?php else: ?>
          <p class="text-sm text-gray-dark dark:text-gray-light"><?= App::e(App::t('install.unavailable')) ?></p>
        <?php endif; ?>
      </div>
    </div>
  </section>
</div>
