diff --git a/app/controller/AdminController.php b/app/controller/AdminController.php index 5f0517d0c140ce3ae939859aee592cf91a794646..006d0120e94577cad9f649cf155fc05d2a85342c 100644 --- a/app/controller/AdminController.php +++ b/app/controller/AdminController.php @@ -631,4 +631,15 @@ class AdminController extends Controller { } } } + + public function supprPartie() { + $id = $this->route["params"]["slug"]; + Admin::supprPartie($id); + header("Location:supprime/ok"); + } + + public function displaysupprPartieOK() { + $this->view->display(); + } + } diff --git a/app/kernel/Router.php b/app/kernel/Router.php index 81fe4913bfdbd06fdce07b363d6687ae658a1e6f..c213c26666ea9491b392ccb1692f492513514517 100644 --- a/app/kernel/Router.php +++ b/app/kernel/Router.php @@ -353,6 +353,18 @@ class Router $result["params"]["slug"] = $parts[2]; } + else if($parts[0] == "admin" && count($parts) == 4 && $parts[1] == 'partie' && $parts[3] == 'supprime') { + $result["controller"] = 'Admin'; + $result['action'] = "supprPartie"; + $result["params"]["slug"] = $parts[2]; + } + + else if($parts[0] == "admin" && count($parts) == 5 && $parts[1] == 'partie' && $parts[3] == 'supprime' && $parts[4] == 'ok') { + $result["controller"] = 'Admin'; + $result['action'] = "displaysupprPartieOK"; + $result["params"]["slug"] = $parts[2]; + } + else if ($parts[0] == "add_partie" && count($parts) == 2 && $parts[1] == "addjoueurs1") { $result["controller"] = "Partie"; $result["action"] = "addjoueurs1"; diff --git a/app/model/Admin.php b/app/model/Admin.php index c4e1ad520ee9b4202e522ef6baa18d21792933bc..b0f2dd27cd683978b7cd2f5a674d7ad2572f2c5f 100644 --- a/app/model/Admin.php +++ b/app/model/Admin.php @@ -234,9 +234,48 @@ class Admin extends Model { while ($ligne = $stmt2->fetch(PDO::FETCH_ASSOC)) { $joueurs = $jeu->type == 'equipes' ? Admin::getEquipes($ligne['id']) : Admin::getListeJoueur($ligne['id']); $scores = $jeu->type_scores == 'scores' ? Admin::getListeScorePartie2($ligne['id']) : Admin::getListeClassement2($ligne['id']); - Partie::modPartie($joueur, $scores, $jeu, $ligne['id']); + Partie::modPartie($joueurs, $scores, $jeu, $ligne['id']); } return 0; } + public static function supprPartie($id) { + $db = Database::getInstance(); + $sql5 = "UPDATE R_joueur_jeu SET score = :new_score WHERE joueur = :id_joueur AND jeu = :id_jeu;"; + $stmt5 = $db->prepare($sql5); + $partieSuppr = Partie::getFromId($id); + // recherche des joueurs ayant fais une partie apres celle-ci (celle-ci incluse) + $sql1 = "SELECT * FROM R_joueur_partie JOIN R_partie ON R_joueur_partie.partie = R_partie.id WHERE date >= date(:date) AND jeu =:jeu ORDER BY date"; + $stmt1 = $db->prepare($sql1); + $stmt1->execute(array(':date' => $partieSuppr->date, ":jeu" => $partieSuppr->jeu)); + // pour tout les joueurs remettre les scrores comme-ci aucune partie après celle-ci a été jouée + $joueurDejaTraite = array(); + while ($joueur = $stmt1->fetch(PDO::FETCH_ASSOC)) { + if (!in_array($joueur['joueur'], $joueurDejaTraite)) { + $joueurDejaTraite[] = $joueur['joueur']; + $stmt5->execute(array(':new_score' => $joueur['score'], + ':id_joueur' => $joueur['joueur'], + ':id_jeu' => $joueur['jeu'])); + } + } + + $sql = "DELETE FROM R_joueur_partie WHERE partie = :id"; + $req = $db->prepare($sql); + $req->execute(array(':id' => $id)); + + $sql = "DELETE FROM R_partie WHERE id = :id"; + $req = $db->prepare($sql); + $req->execute(array(':id' => $id)); + + $jeu = Jeu::getFromSlug($partieSuppr->jeu); + $sql2 = "SELECT * FROM R_partie WHERE date > date(:date) AND jeu =:jeu ORDER BY date"; + $stmt2 = $db->prepare($sql2); + $stmt2->execute(array(':date' => $partieSuppr->date, ":jeu" => $partieSuppr->jeu)); + while ($ligne = $stmt2->fetch(PDO::FETCH_ASSOC)) { + $joueurs = $jeu->type == 'equipes' ? Admin::getEquipes($ligne['id']) : Admin::getListeJoueur($ligne['id']); + $scores = $jeu->type_scores == 'scores' ? Admin::getListeScorePartie2($ligne['id']) : Admin::getListeClassement2($ligne['id']); + Partie::modPartie($joueurs, $scores, $jeu, $ligne['id']); + } + } + } \ No newline at end of file diff --git a/app/view/Admin/displayListPartie.html b/app/view/Admin/displayListPartie.html index 201744481a0d71a414d3ad2c62ad380e13f192e8..b3c0d1c650a5b39c764a51b48447663be986d50a 100644 --- a/app/view/Admin/displayListPartie.html +++ b/app/view/Admin/displayListPartie.html @@ -21,6 +21,7 @@ include(ROOT."/app/view/Includes/header.include.html"); <td><a href=\"".BASE_URL."/jeu/".$ligne['slug']."\">".$ligne['nom']."</a></td> <td><a href=\"".BASE_URL."/admin/partie/".$ligne['slug']."\">".$ligne['date']."</a></td> <td><a href=\"partie/".$ligne['id']."/modifinit\"><img src=\"".BASE_URL."/images/modif.svg\" alt=\"Modifier\"//></a></td> + <td><a href=\"partie/".$ligne['id']."/supprime\"><img src=\"".BASE_URL."/images/cancel.svg\" /></a></td> </tr> "; } diff --git a/app/view/Admin/displaysupprPartieOK.html b/app/view/Admin/displaysupprPartieOK.html new file mode 100644 index 0000000000000000000000000000000000000000..fb721522c37496cced358d77ad7ee9a0ce26b1a6 --- /dev/null +++ b/app/view/Admin/displaysupprPartieOK.html @@ -0,0 +1,17 @@ +<?php + $page_title = "Page d'administration"; +include(ROOT."/app/view/Includes/header.include.html"); +?> + +<?php if(isset($_SESSION['user']) && Admin::estAdmin($_SESSION['user']->slug)) { ?> + +<article class="msg-valide"><h2>Suppression réussie !</h2></article> + + +<?php } else { ?> + +<article class="msg-erreur">Vous n'êtes pas connecté comme administrateur</article> + +<?php } ?> + +<?php include(ROOT."/app/view/Includes/footer.include.html"); ?>