Commit 50f492d2 authored by Mahmoud Aglan's avatar Mahmoud Aglan

fix: align all tournament views with actual DB column names

Views were referencing columns that don't exist:
- rounds_count → rounds_total/swiss_rounds
- entry_fee → entry_fee_coins
- prize_pool → prize_pool_coins
- start_date → starts_at
- end_date → registration_closes_at
- organization_id → org_id
- started_at → removed (column doesn't exist)

Also fixed start() to skip bot players (already registered via bulk import)
and not crash when player_id doesn't match a real profile.
Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
parent 17472ee0
......@@ -226,7 +226,7 @@ class TournamentsController
'max_players' => (int)$_POST['max_players'],
'entry_fee_coins' => (int)($_POST['entry_fee'] ?? 0),
'prize_pool_coins' => (int)($_POST['prize_pool'] ?? 0),
'starts_at' => $_POST['start_date'] ?: date('c'),
'starts_at' => !empty($_POST['start_date']) ? date('c', strtotime($_POST['start_date'])) : date('c'),
'status' => 'draft',
];
......@@ -350,14 +350,16 @@ class TournamentsController
return;
}
// Register players in Swiss API
// Register players in Swiss API (skip bots — they're already registered via bulk import)
if (!empty($tournament['swiss_api_tournament_id'])) {
$players = $this->db->select('tournament_registrations', [
'tournament_id' => "eq.{$id}",
'is_bot' => 'eq.false',
]);
foreach ($players as $player) {
$profile = $this->db->selectOne('profiles', ['id' => "eq.{$player['player_id']}"]);
if (!$profile) continue;
SwissApiService::registerPlayer($tournament['swiss_api_tournament_id'], [
'name' => $profile['display_name'] ?? $profile['username'] ?? $player['player_id'],
'fideRatingStandard' => $profile['elo_blitz'] ?? 1500,
......@@ -367,7 +369,6 @@ class TournamentsController
$this->db->update('el3ab_tournaments', ['id' => "eq.{$id}"], [
'status' => 'in_progress',
'started_at' => date('c'),
'updated_at' => date('c'),
]);
......
......@@ -66,7 +66,7 @@
<select name="organization_id" class="form-input">
<option value="">بدون منظمة</option>
<?php foreach ($organizations ?? [] as $org): ?>
<option value="<?= View::e($org['id']) ?>" <?= ($tournament['organization_id'] ?? '') === $org['id'] ? 'selected' : '' ?>>
<option value="<?= View::e($org['id']) ?>" <?= ($tournament['org_id'] ?? '') === $org['id'] ? 'selected' : '' ?>>
<?= View::e($org['name']) ?>
</option>
<?php endforeach; ?>
......@@ -216,13 +216,13 @@
<div class="grid grid-2 gap-4">
<div class="form-group">
<label class="form-label">رسوم الاشتراك (عملات)</label>
<input type="number" name="entry_fee" class="form-input" value="<?= $tournament['entry_fee'] ?? 0 ?>" min="0">
<input type="number" name="entry_fee" class="form-input" value="<?= $tournament['entry_fee_coins'] ?? 0 ?>" min="0">
<span class="form-hint">0 = مجاني</span>
</div>
<div class="form-group">
<label class="form-label">مجموع الجوائز (عملات)</label>
<input type="number" name="prize_pool" class="form-input" value="<?= $tournament['prize_pool'] ?? 0 ?>" min="0">
<input type="number" name="prize_pool" class="form-input" value="<?= $tournament['prize_pool_coins'] ?? 0 ?>" min="0">
</div>
</div>
......@@ -263,13 +263,13 @@
<div class="grid grid-2 gap-4">
<div class="form-group">
<label class="form-label">تاريخ البدء *</label>
<input type="datetime-local" name="start_date" class="form-input" value="<?= $tournament['start_date'] ?? '' ?>" required dir="ltr">
<input type="datetime-local" name="start_date" class="form-input" value="<?= !empty($tournament['starts_at']) ? date('Y-m-d\TH:i', strtotime($tournament['starts_at'])) : '' ?>" required dir="ltr">
<span class="form-error"></span>
</div>
<div class="form-group">
<label class="form-label">تاريخ الانتهاء</label>
<input type="datetime-local" name="end_date" class="form-input" value="<?= $tournament['end_date'] ?? '' ?>" dir="ltr">
<input type="datetime-local" name="end_date" class="form-input" value="<?= !empty($tournament['registration_closes_at']) ? date('Y-m-d\TH:i', strtotime($tournament['registration_closes_at'])) : '' ?>" dir="ltr">
</div>
</div>
......
......@@ -79,7 +79,7 @@
<?= $t['players_count'] ?? 0 ?> / <?= $t['max_players'] ?? '-' ?>
</td>
<td class="text-xs text-muted tabular-nums">
<?= $t['start_date'] ? date('Y/m/d', strtotime($t['start_date'])) : '-' ?>
<?= !empty($t['starts_at']) ? date('Y/m/d', strtotime($t['starts_at'])) : '-' ?>
</td>
<td>
<div class="dropdown">
......
......@@ -140,11 +140,11 @@ $tabs['arbiter'] = 'أدوات الحكم';
</div>
<div class="info-item">
<span class="info-label">عدد الجولات</span>
<span class="info-value"><?= $tournament['rounds_count'] ?? '-' ?></span>
<span class="info-value"><?= $tournament['rounds_total'] ?? $tournament['swiss_rounds'] ?? '-' ?></span>
</div>
<div class="info-item">
<span class="info-label">الجولة الحالية</span>
<span class="info-value"><?= $tournament['current_round'] ?? 0 ?> / <?= $tournament['rounds_count'] ?? '-' ?></span>
<span class="info-value"><?= $tournament['current_round'] ?? 0 ?> / <?= $tournament['rounds_total'] ?? $tournament['swiss_rounds'] ?? '-' ?></span>
</div>
<div class="info-item">
<span class="info-label">التحكم بالوقت</span>
......@@ -166,19 +166,15 @@ $tabs['arbiter'] = 'أدوات الحكم';
<div class="info-list">
<div class="info-item">
<span class="info-label">رسوم الاشتراك</span>
<span class="info-value"><?= $tournament['entry_fee'] ? number_format($tournament['entry_fee']) . ' عملة' : 'مجاني' ?></span>
<span class="info-value"><?= ($tournament['entry_fee_coins'] ?? 0) > 0 ? number_format($tournament['entry_fee_coins']) . ' عملة' : 'مجاني' ?></span>
</div>
<div class="info-item">
<span class="info-label">مجموع الجوائز</span>
<span class="info-value"><?= $tournament['prize_pool'] ? number_format($tournament['prize_pool']) . ' عملة' : '-' ?></span>
<span class="info-value"><?= ($tournament['prize_pool_coins'] ?? 0) > 0 ? number_format($tournament['prize_pool_coins']) . ' عملة' : '-' ?></span>
</div>
<div class="info-item">
<span class="info-label">تاريخ البدء</span>
<span class="info-value"><?= $tournament['start_date'] ? date('Y/m/d H:i', strtotime($tournament['start_date'])) : '-' ?></span>
</div>
<div class="info-item">
<span class="info-label">تاريخ الانتهاء</span>
<span class="info-value"><?= !empty($tournament['end_date']) ? date('Y/m/d H:i', strtotime($tournament['end_date'])) : '-' ?></span>
<span class="info-value"><?= !empty($tournament['starts_at']) ? date('Y/m/d H:i', strtotime($tournament['starts_at'])) : '-' ?></span>
</div>
<div class="info-item">
<span class="info-label">تاريخ الإنشاء</span>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment