<?php

declare(strict_types=1);

require_once dirname(__DIR__) . '/includes/bootstrap.php';
require_login();

$pageTitle = 'Campeonatos';
$currentNav = 'campeonatos';

$editRow = null;
if (isset($_GET['edit'])) {
    $eid = (int) $_GET['edit'];
    $st = db()->prepare('SELECT * FROM campeonatos WHERE id = ?');
    $st->execute([$eid]);
    $editRow = $st->fetch();
}

if ($_SERVER['REQUEST_METHOD'] === 'POST' && can_manage_data()) {
    verify_csrf();
    $action = $_POST['action'] ?? '';
    if ($action === 'delete') {
        $id = (int) ($_POST['id'] ?? 0);
        db()->prepare('DELETE FROM campeonatos WHERE id = ?')->execute([$id]);
        flash('ok', 'Campeonato eliminado.');
        redirect('/pages/campeonatos.php');
    }
    if ($action === 'save') {
        $id = (int) ($_POST['id'] ?? 0);
        $nombre = trim((string) ($_POST['nombre'] ?? ''));
        $temporada = trim((string) ($_POST['temporada'] ?? ''));
        $descripcion = trim((string) ($_POST['descripcion'] ?? ''));
        $fecha_inicio = (string) ($_POST['fecha_inicio'] ?? '');
        $fecha_fin = (string) ($_POST['fecha_fin'] ?? '');
        $estado = (string) ($_POST['estado'] ?? 'borrador');
        $formato = (string) ($_POST['formato'] ?? 'liga');
        $pv = (int) ($_POST['puntos_victoria'] ?? 3);
        $pe = (int) ($_POST['puntos_empate'] ?? 1);
        $pd = (int) ($_POST['puntos_derrota'] ?? 0);
        if ($nombre !== '' && $fecha_inicio !== '' && $fecha_fin !== '') {
            if ($id > 0) {
                $sql = 'UPDATE campeonatos SET nombre=?, temporada=?, descripcion=?, fecha_inicio=?, fecha_fin=?,
                         estado=?, formato=?, puntos_victoria=?, puntos_empate=?, puntos_derrota=?
                         WHERE id=?';
                db()->prepare($sql)->execute([
                    $nombre, $temporada ?: null, $descripcion ?: null, $fecha_inicio, $fecha_fin,
                    $estado, $formato, $pv, $pe, $pd, $id,
                ]);
                flash('ok', 'Campeonato actualizado.');
            } else {
                $sql = 'INSERT INTO campeonatos (nombre, temporada, descripcion, fecha_inicio, fecha_fin, estado, formato, puntos_victoria, puntos_empate, puntos_derrota)
                        VALUES (?,?,?,?,?,?,?,?,?,?)';
                db()->prepare($sql)->execute([
                    $nombre, $temporada ?: null, $descripcion ?: null, $fecha_inicio, $fecha_fin,
                    $estado, $formato, $pv, $pe, $pd,
                ]);
                flash('ok', 'Campeonato creado.');
            }
            redirect('/pages/campeonatos.php');
        }
    }
}

$lista = db()->query('SELECT * FROM campeonatos ORDER BY fecha_inicio DESC')->fetchAll();

require dirname(__DIR__) . '/includes/layout/header.php';
?>

<?php if (flash('ok')) : ?>
  <div class="alert alert-success"><?= h((string) flash('ok')) ?></div>
<?php endif; ?>

<?php if (can_manage_data()) : ?>
<div class="card" style="margin-bottom:1.5rem;">
  <div class="card-header">
    <h2><?= $editRow ? 'Editar campeonato' : 'Nuevo campeonato' ?></h2>
    <?php if ($editRow) : ?>
      <a class="btn btn-ghost" href="<?= h(url('pages/campeonatos.php')) ?>">Cancelar edición</a>
    <?php endif; ?>
  </div>
  <form method="post" class="form-grid cols-2">
    <?= csrf_field() ?>
    <input type="hidden" name="action" value="save">
    <input type="hidden" name="id" value="<?= (int) ($editRow['id'] ?? 0) ?>">
    <div>
      <label class="field" for="nombre">Nombre</label>
      <input type="text" id="nombre" name="nombre" required value="<?= h($editRow['nombre'] ?? '') ?>">
    </div>
    <div>
      <label class="field" for="temporada">Temporada</label>
      <input type="text" id="temporada" name="temporada" placeholder="2024-2025" value="<?= h($editRow['temporada'] ?? '') ?>">
    </div>
    <div style="grid-column:1/-1;">
      <label class="field" for="descripcion">Descripción</label>
      <textarea id="descripcion" name="descripcion"><?= h($editRow['descripcion'] ?? '') ?></textarea>
    </div>
    <div>
      <label class="field" for="fecha_inicio">Fecha inicio</label>
      <input type="date" id="fecha_inicio" name="fecha_inicio" required value="<?= h(isset($editRow['fecha_inicio']) ? substr((string) $editRow['fecha_inicio'], 0, 10) : '') ?>">
    </div>
    <div>
      <label class="field" for="fecha_fin">Fecha fin</label>
      <input type="date" id="fecha_fin" name="fecha_fin" required value="<?= h(isset($editRow['fecha_fin']) ? substr((string) $editRow['fecha_fin'], 0, 10) : '') ?>">
    </div>
    <div>
      <label class="field" for="estado">Estado</label>
      <select id="estado" name="estado">
        <?php
        $opts = ['borrador', 'inscripciones', 'en_curso', 'finalizado', 'cancelado'];
        $cur = $editRow['estado'] ?? 'borrador';
        foreach ($opts as $o) {
            $sel = $cur === $o ? ' selected' : '';
            echo '<option value="' . h($o) . '"' . $sel . '>' . h($o) . '</option>';
        }
        ?>
      </select>
    </div>
    <div>
      <label class="field" for="formato">Formato</label>
      <select id="formato" name="formato">
        <?php
        $fopts = ['liga', 'liga_grupos', 'eliminacion', 'amistoso'];
        $fc = $editRow['formato'] ?? 'liga';
        foreach ($fopts as $o) {
            $sel = $fc === $o ? ' selected' : '';
            echo '<option value="' . h($o) . '"' . $sel . '>' . h($o) . '</option>';
        }
        ?>
      </select>
    </div>
    <div>
      <label class="field" for="puntos_victoria">Puntos victoria</label>
      <input type="number" id="puntos_victoria" name="puntos_victoria" min="0" max="20" value="<?= h((string) ($editRow['puntos_victoria'] ?? 3)) ?>">
    </div>
    <div>
      <label class="field" for="puntos_empate">Puntos empate</label>
      <input type="number" id="puntos_empate" name="puntos_empate" min="0" max="20" value="<?= h((string) ($editRow['puntos_empate'] ?? 1)) ?>">
    </div>
    <div>
      <label class="field" for="puntos_derrota">Puntos derrota</label>
      <input type="number" id="puntos_derrota" name="puntos_derrota" min="0" max="20" value="<?= h((string) ($editRow['puntos_derrota'] ?? 0)) ?>">
    </div>
    <div class="form-actions" style="grid-column:1/-1;padding-left:0;padding-right:0;">
      <button type="submit" class="btn btn-primary">Guardar</button>
    </div>
  </form>
</div>
<?php endif; ?>

<div class="card">
  <div class="card-header">
    <h2>Listado</h2>
  </div>
  <div class="table-wrap">
    <table class="data-table">
      <thead>
        <tr>
          <th>Nombre</th>
          <th>Temporada</th>
          <th>Estado</th>
          <th>Inicio</th>
          <th>Fin</th>
          <th></th>
        </tr>
      </thead>
      <tbody>
        <?php foreach ($lista as $row) : ?>
          <tr>
            <td><?= h($row['nombre']) ?></td>
            <td><?= h($row['temporada'] ?? '—') ?></td>
            <td><span class="badge badge-muted"><?= h($row['estado']) ?></span></td>
            <td><?= h($row['fecha_inicio']) ?></td>
            <td><?= h($row['fecha_fin']) ?></td>
            <td>
              <?php if (can_manage_data()) : ?>
                <a href="<?= h(url('pages/campeonatos.php?edit=' . (int) $row['id'])) ?>">Editar</a>
                <form method="post" style="display:inline;margin-left:0.5rem;" onsubmit="return confirm('¿Eliminar este campeonato y datos relacionados?');">
                  <?= csrf_field() ?>
                  <input type="hidden" name="action" value="delete">
                  <input type="hidden" name="id" value="<?= (int) $row['id'] ?>">
                  <button type="submit" class="btn btn-danger" style="padding:0.25rem 0.5rem;font-size:0.8rem;">Eliminar</button>
                </form>
              <?php endif; ?>
            </td>
          </tr>
        <?php endforeach; ?>
      </tbody>
    </table>
  </div>
  <?php if (!$lista) : ?>
    <div class="empty-state">No hay campeonatos aún.</div>
  <?php endif; ?>
</div>

<?php require dirname(__DIR__) . '/includes/layout/footer.php'; ?>
