<?php
require __DIR__.'/inc.php';
$ITEMS = is_file(__DIR__.'/items.php') ? (include __DIR__.'/items.php') : [];
if (!is_array($ITEMS)) $ITEMS = [];
$err = '';

// ---- вхід ----
if (!user() && $_SERVER['REQUEST_METHOD'] === 'POST') {
  $login = strtolower(trim($_POST['login'] ?? ''));
  $pw    = (string)($_POST['password'] ?? '');
  try {
    $st = db()->prepare("SELECT password FROM accounts WHERE login=?");
    $st->execute([$login]);
    $row = $st->fetch();
    if ($row && strcasecmp(l2hash($pw), $row['password']) === 0) {
      $_SESSION['login'] = $login;
      header('Location: /cabinet'); exit;
    }
    $err = 'Невірний логін або пароль.';
  } catch (Throwable $e) { $err = 'Помилка бази даних.'; }
}

// ---- форма входу ----
if (!user()) {
  head('Вхід');
  echo '<h1 style="color:#fff">Вхід у кабінет</h1>';
  if ($err) echo '<div class="msg bad">'.e($err).'</div>';
  ?>
  <div class="card" style="max-width:420px">
    <form method="post" autocomplete="off">
      <label>Логін</label><input name="login" required>
      <label>Пароль</label><input type="password" name="password" required>
      <div style="margin-top:18px"><button class="btn" type="submit">Увійти</button></div>
    </form>
  </div>
  <p class="mut">Немає акаунта? <a href="/register">Зареєструватися</a></p>
  <?php
  foot(); exit;
}

// ---- кабінет ----
$login = user();
$acc = db()->prepare("SELECT * FROM accounts WHERE login=?"); $acc->execute([$login]); $acc = $acc->fetch();
$chars = db()->prepare("SELECT obj_Id,char_name,sex,online,pvpkills,pkkills,karma,clanid,onlinetime FROM characters WHERE account_name=? AND deletetime=0 ORDER BY char_name");
$chars->execute([$login]); $chars = $chars->fetchAll();

function charLevel(int $obj): array {
  try {
    $s = db()->prepare("SELECT level,class_id FROM character_subclasses WHERE char_obj_id=? ORDER BY active DESC, isBase DESC LIMIT 1");
    $s->execute([$obj]); $r = $s->fetch();
    return $r ? [(int)$r['level'], (int)$r['class_id']] : [0,0];
  } catch (Throwable $e) { return [0,0]; }
}

$sel = isset($_GET['char']) ? (int)$_GET['char'] : 0;
$owned = array_column($chars, 'obj_Id');
$inv = [];
if ($sel && in_array($sel, array_map('intval',$owned), true)) {
  $q = db()->prepare("SELECT item_type,amount,enchant,location FROM items WHERE owner_id=? AND location IN('INVENTORY','PAPERDOLL') ORDER BY location DESC, item_type");
  $q->execute([$sel]); $inv = $q->fetchAll();
}
head('Кабінет'); ?>
<h1 style="color:#fff">Кабінет — <?= e($login) ?></h1>

<div class="grid">
  <div class="card">
    <h2>Акаунт</h2>
    <table>
      <tr><th>Логін</th><td><?= e($acc['login']) ?></td></tr>
      <tr><th>Email</th><td><?= e($acc['l2email'] ?? '—') ?></td></tr>
      <tr><th>Рівень доступу</th><td><?= (int)($acc['accessLevel'] ?? 0) ?></td></tr>
      <tr><th>Останній IP</th><td><?= e($acc['lastIP'] ?? '—') ?></td></tr>
      <tr><th>Останній вхід</th><td><?= $acc['lastactive'] ? date('Y-m-d H:i', (int)$acc['lastactive']/1000) : '—' ?></td></tr>
      <tr><th>Бан</th><td><?= ((int)($acc['ban_expire']??0) > time()) ? '<span class="off">є</span>' : '<span class="on">немає</span>' ?></td></tr>
    </table>
  </div>
  <div class="card">
    <h2>Як зайти у гру</h2>
    <p class="mut">Завантажте гру або папку <code>system</code> у розділі «Файли» та запустіть — оберіть сервер <b><?= SRV['name'] ?></b>. Логін і пароль ті самі, що тут.</p>
    <a class="btn sec" href="/files">Завантажити гру</a>
  </div>
</div>

<div class="card">
  <h2>Персонажі (<?= count($chars) ?>)</h2>
  <?php if (!$chars): ?>
    <p class="mut">Ще немає персонажів. Зайдіть у гру цим акаунтом і створіть героя — він з'явиться тут.</p>
  <?php else: ?>
    <table>
      <tr><th>Ім'я</th><th>Рівень</th><th>Клас</th><th>Стан</th><th>PvP / PK</th><th>Карма</th><th>У грі, год</th><th></th></tr>
      <?php foreach ($chars as $c): [$lv,$cl] = charLevel((int)$c['obj_Id']); ?>
      <tr>
        <td><b><?= e($c['char_name']) ?></b></td>
        <td><?= $lv ?: '—' ?></td>
        <td class="mut">#<?= $cl ?></td>
        <td><?= $c['online'] ? '<span class="on">онлайн</span>' : '<span class="off">офлайн</span>' ?></td>
        <td><?= (int)$c['pvpkills'] ?> / <?= (int)$c['pkkills'] ?></td>
        <td><?= (int)$c['karma'] ?></td>
        <td><?= round(((int)$c['onlinetime'])/3600,1) ?></td>
        <td><a href="/cabinet?char=<?= (int)$c['obj_Id'] ?>">Інвентар</a></td>
      </tr>
      <?php endforeach; ?>
    </table>
  <?php endif; ?>
</div>

<?php if ($sel): ?>
<div class="card">
  <h2>Інвентар персонажа</h2>
  <?php if (!$inv): ?>
    <p class="mut">Інвентар порожній або персонаж у грі (речі підвантажаться після виходу з гри).</p>
  <?php else: ?>
    <table>
      <tr><th>Предмет</th><th>Кількість</th><th>Заточка</th><th>Місце</th></tr>
      <?php foreach ($inv as $it): $iid=(int)$it['item_type']; $nm=$ITEMS[$iid] ?? ('Предмет #'.$iid); ?>
      <tr>
        <td><?= e($nm) ?> <span class="mut" style="font-size:12px">#<?= $iid ?></span></td>
        <td><?= (int)$it['amount'] ?></td>
        <td><?= (int)$it['enchant'] ? '+'.(int)$it['enchant'] : '—' ?></td>
        <td class="mut"><?= $it['location']==='PAPERDOLL' ? 'вдягнено' : 'інвентар' ?></td>
      </tr>
      <?php endforeach; ?>
    </table>
  <?php endif; ?>
</div>
<?php endif; ?>
<?php foot(); ?>
