84 lines
4.2 KiB
PHP
84 lines
4.2 KiB
PHP
<?php
|
||
declare(strict_types=1);
|
||
require_once __DIR__ . '/includes/app.php';
|
||
app_boot();
|
||
require_login();
|
||
|
||
$user = current_user();
|
||
$id = (int) ($_GET['id'] ?? 0);
|
||
$stmt = db()->prepare('SELECT * FROM athletes WHERE id = :id AND user_id = :user_id LIMIT 1');
|
||
$stmt->execute(['id' => $id, 'user_id' => (int) $user['id']]);
|
||
$athlete = $stmt->fetch();
|
||
|
||
if (!$athlete) {
|
||
http_response_code(404);
|
||
render_header('Fiche introuvable', ['description' => 'La fiche sportif demandée est introuvable.']);
|
||
?>
|
||
<main class="container py-5">
|
||
<div class="empty-card">
|
||
<h1 class="h4">Fiche introuvable</h1>
|
||
<p>Le sportif demandé n’existe pas ou n’est pas accessible avec votre compte.</p>
|
||
<a href="athletes.php" class="btn btn-dark">Retour à la liste</a>
|
||
</div>
|
||
</main>
|
||
<?php
|
||
render_footer();
|
||
exit;
|
||
}
|
||
|
||
render_header('Fiche sportif', ['description' => 'Consulter le détail complet d’un sportif dans RJLRESAKA.']);
|
||
?>
|
||
<main class="container-xxl py-5">
|
||
<div class="d-flex flex-wrap justify-content-between align-items-start gap-3 mb-4">
|
||
<div>
|
||
<p class="section-kicker mb-1">Fiche détaillée</p>
|
||
<h1 class="h2 mb-1"><?= e($athlete['first_name'] . ' ' . $athlete['last_name']) ?></h1>
|
||
<p class="text-secondary mb-0"><?= e((string) ($athlete['position_name'] ?: 'Poste non renseigné')) ?> • <?= e((string) $athlete['sport_name']) ?></p>
|
||
</div>
|
||
<div class="d-flex gap-2 flex-wrap">
|
||
<span class="badge text-bg-<?= e(stat_badge_class((string) $athlete['status'])) ?> px-3 py-2"><?= e(ucfirst((string) $athlete['status'])) ?></span>
|
||
<a href="athletes.php" class="btn btn-outline-secondary">Retour à la liste</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row g-4">
|
||
<div class="col-lg-4">
|
||
<div class="panel-card p-4 h-100">
|
||
<h2 class="h5 mb-3">Résumé</h2>
|
||
<dl class="detail-list mb-0">
|
||
<div><dt>Club actuel</dt><dd><?= e((string) $athlete['club_name']) ?></dd></div>
|
||
<div><dt>Nationalité</dt><dd><?= e((string) ($athlete['nationality'] ?: 'Non renseignée')) ?></dd></div>
|
||
<div><dt>Numéro</dt><dd><?= e((string) ($athlete['jersey_number'] ?: '—')) ?></dd></div>
|
||
<div><dt>Date d’arrivée</dt><dd><?= e(format_date($athlete['joined_on'])) ?></dd></div>
|
||
<div><dt>Créé le</dt><dd><?= e(format_datetime($athlete['created_at'])) ?></dd></div>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
<div class="col-lg-8">
|
||
<div class="panel-card p-4 mb-4">
|
||
<div class="d-flex justify-content-between align-items-center mb-3">
|
||
<h2 class="h5 mb-0">Performance actuelle</h2>
|
||
<span class="text-secondary small">Parcours professionnel — instantané</span>
|
||
</div>
|
||
<div class="row g-3">
|
||
<div class="col-md-4"><div class="metric-card"><span>Matchs joués</span><strong><?= e((string) $athlete['matches_played']) ?></strong></div></div>
|
||
<div class="col-md-4"><div class="metric-card"><span>Buts / points</span><strong><?= e((string) $athlete['goals_scored']) ?></strong></div></div>
|
||
<div class="col-md-4"><div class="metric-card"><span>Passes décisives</span><strong><?= e((string) $athlete['assists_count']) ?></strong></div></div>
|
||
</div>
|
||
</div>
|
||
<div class="panel-card p-4 h-100">
|
||
<h2 class="h5 mb-3">Parcours et distinctions</h2>
|
||
<div class="mb-4">
|
||
<p class="text-secondary small text-uppercase mb-2">Distinctions</p>
|
||
<p class="mb-0"><?= e((string) ($athlete['awards'] ?: 'Aucune distinction renseignée.')) ?></p>
|
||
</div>
|
||
<div>
|
||
<p class="text-secondary small text-uppercase mb-2">Note de parcours</p>
|
||
<p class="mb-0 detail-note"><?= nl2br(e((string) ($athlete['career_note'] ?: 'Aucune note de parcours pour le moment.'))) ?></p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
<?php render_footer(); ?>
|