Actualiser api/results.php

This commit is contained in:
2026-07-21 16:19:03 +02:00
parent 3064f1fdd6
commit c669724ed0
-19
View File
@@ -1,45 +1,31 @@
<?php
require_once 'config.php';
$method = $_SERVER['REQUEST_METHOD'];
// Vérifier les droits admin
$user = requireAdmin();
if ($method !== 'POST') {
jsonResponse(['error' => 'Méthode non autorisée'], 405);
}
$data = getJsonInput();
if (!isset($data['match_id']) || !isset($data['winner_id']) || !isset($data['score'])) {
jsonResponse(['error' => 'match_id, winner_id et score requis'], 400);
}
$db = getDB();
// Vérifier que le match existe
$stmt = $db->prepare("SELECT id, player1_id, player2_id, status FROM matches WHERE id = ?");
$stmt->execute([$data['match_id']]);
$match = $stmt->fetch();
if (!$match) {
jsonResponse(['error' => 'Match non trouvé'], 404);
}
if ($match['status'] === 'completed') {
jsonResponse(['error' => 'Ce match a déjà un résultat'], 400);
}
// Vérifier que le gagnant est l'un des deux joueurs
if ($data['winner_id'] != $match['player1_id'] && $data['winner_id'] != $match['player2_id']) {
jsonResponse(['error' => 'Le gagnant doit être l\'un des deux joueurs du match'], 400);
}
$db->beginTransaction();
try {
// Mettre à jour le match
$stmt = $db->prepare("
UPDATE matches
SET status = 'completed', winner_id = ?, score = ?
@@ -47,7 +33,6 @@ try {
");
$stmt->execute([$data['winner_id'], $data['score'], $data['match_id']]);
// Mettre à jour les pronostics
$stmt = $db->prepare("
UPDATE predictions
SET is_correct = CASE
@@ -58,7 +43,6 @@ try {
");
$stmt->execute([$data['winner_id'], $data['match_id']]);
// Ajouter les points bonus pour les pronostics corrects
$stmt = $db->prepare("
UPDATE users u
JOIN predictions p ON u.id = p.user_id
@@ -68,8 +52,6 @@ try {
$stmt->execute([POINTS_CORRECT_PREDICTION, $data['match_id'], $data['winner_id']]);
$db->commit();
// Compter les pronostics corrects
$stmt = $db->prepare("
SELECT COUNT(*) as correct_count
FROM predictions
@@ -84,7 +66,6 @@ try {
'correct_predictions' => (int)$correctCount,
'points_distributed' => $correctCount * POINTS_CORRECT_PREDICTION
]);
} catch (Exception $e) {
$db->rollBack();
jsonResponse(['error' => 'Erreur lors de l\'enregistrement du résultat: ' . $e->getMessage()], 500);