From 67b1e931e31b4e302c16aabc4e39ae5c71616e7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9=20Garnier?= Date: Wed, 4 Jan 2023 13:29:14 +0100 Subject: [PATCH] =?UTF-8?q?Corection=20de=20bug=20-=20maj=20de=20l'ordre?= =?UTF-8?q?=20lors=20de=20l'ajout=20d'=C3=A9nigme=20et=20lors=20de=20la=20?= =?UTF-8?q?suppression?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WEB/Model/AdminModel.php | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/WEB/Model/AdminModel.php b/WEB/Model/AdminModel.php index 7190f825..5c696a1a 100644 --- a/WEB/Model/AdminModel.php +++ b/WEB/Model/AdminModel.php @@ -16,7 +16,7 @@ class AdminModel public function addNewEnigmeSolo(string $nom,string $enonce,string $aide,string $rappel,string $exemple,string $test,string $solution, string $prompt) : Enigme { - $last = $this->enigme_gateway->findLastEnigma(); + $last = $this->enigme_gateway->findLastEnigmaByOrdre(); if ($last != null){ $ordre = $last[0]->getOrdre() + 1; } else { @@ -44,11 +44,32 @@ async function submit(){ return $tabEnigme[0]; } + private function majOrdreAfterDelete(int $ordre){ + $lesEnigmes = $this->enigme_gateway->findSoloEnigma(); + if ($lesEnigmes == null) { + return; + } + $lastOrdre = $this->enigme_gateway->findLastEnigmaByOrdre()[0]->getOrdre(); + if ($ordre > $lastOrdre) { + return; + } + foreach ($lesEnigmes as $enigme) { + if ($enigme->getOrdre() <= $ordre) { + continue; + } + $enigme->setOrdre($enigme->getOrdre()-1); + $this->enigme_gateway->update($enigme); + } + } + public function deleteEnigme(int $id) : void { - $nom = $this->enigme_gateway->findById($id)[0]->getNom(); + $enigme = $this->enigme_gateway->findById($id)[0]; + $nom = $enigme->getNom(); + $ordre = $enigme->getOrdre(); $this->enigme_gateway->delete($id); unlink('View/src/JS/'.$nom.'.js'); + $this->majOrdreAfterDelete($ordre); } public function getEnigmesSolo() : array