diff --git a/WEB/Config/Config.php b/WEB/Config/Config.php index 7f20e771..1bc9f965 100644 --- a/WEB/Config/Config.php +++ b/WEB/Config/Config.php @@ -27,8 +27,10 @@ $vues['next'] = 'View/src/pages/FirstTests/FirstTest'; //Admin $vues['admin'] = 'View/src/pages/Admin/Admin.php'; $vues['addEnigmeSolo'] = 'View/src/pages/Admin/AddEnigmeSolo.php'; +$vues['addEnigmeMulti'] = 'View/src/pages/Admin/AddEnigmeMulti.php'; $vues['detailEnigme'] = 'View/src/pages/Admin/DetailEnigme.php'; $vues['modifEnigmeSolo'] = 'View/src/pages/Admin/ModifEnigmeSolo.php'; +$vues['modifEnigmeMulti'] = 'View/src/pages/Admin/ModifEnigmeMulti.php'; $vues['adminSolo'] = 'View/src/pages/Admin/AdminExtendSolo.php'; $vues['adminMulti'] = 'View/src/pages/Admin/AdminExtendMulti.php'; $vues['seeOrdre'] = 'View/src/pages/Admin/SeeOrdre.php'; diff --git a/WEB/Controller/AdminController.php b/WEB/Controller/AdminController.php index ae95067c..cd8bcd52 100644 --- a/WEB/Controller/AdminController.php +++ b/WEB/Controller/AdminController.php @@ -39,18 +39,27 @@ class AdminController extends UserController case "goToAddEnigmeSolo": $this->goToAddEnigmeSolo(); break; + case "goToAddEnigmeMulti": + $this->goToAddEnigmeMulti(); + break; case "logout": $this->logout(); break; case "addNewEnigmeSolo": $this->addNewEnigmeSolo(); break; + case "addNewEnigmeMulti": + $this->addNewEnigmeMulti(); + break; case "goToDetailEnigme": $this->goToDetailEnigme(); break; case "goToModifEnigmeSolo": $this->goToModifEnigmeSolo(); break; + case "goToModifEnigmeMulti": + $this->goToModifEnigmeMulti(); + break; case "goToAdminSolo": $this->goToAdminSolo(); break; @@ -112,6 +121,7 @@ class AdminController extends UserController global $rep, $vues; $model = new AdminModel(); $lesEnigmesSolo = $model->getEnigmesSolo(); + $lesEnigmesMulti = $model->getEnigmesMulti(); require($rep . $vues['admin']); } catch (Exception $e) { $error = $e->getMessage(); @@ -128,6 +138,15 @@ class AdminController extends UserController require($rep . $vues['erreur']); } } + public function goToAddEnigmeMulti(){ + try { + global $rep, $vues; + require($rep . $vues['addEnigmeMulti']); + } catch (Exception $e) { + $error = $e->getMessage(); + require($rep . $vues['erreur']); + } + } public function goToDetailEnigme() { try { @@ -152,6 +171,18 @@ class AdminController extends UserController require($rep . $vues['erreur']); } } + public function goToModifEnigmeMulti() + { + try { + global $rep, $vues; + $model = new AdminModel(); + $enigme = $model->getEnigmeById($_GET['id']); + require($rep . $vues['modifEnigmeMulti']); + } catch (Exception $e) { + $error = $e->getMessage(); + require($rep . $vues['erreur']); + } + } public function goToAdminSolo() { try { @@ -168,8 +199,8 @@ class AdminController extends UserController { try { global $rep, $vues; - // $model = new AdminModel(); - // $lesEnigmesSolo = $model->getEnigmesSolo(); + $model = new AdminModel(); + $lesEnigmesMulti = $model->getEnigmesMulti(); require($rep . $vues['adminMulti']); } catch (Exception $e) { $error = $e->getMessage(); @@ -226,7 +257,17 @@ class AdminController extends UserController $test = $_POST['test']; $solution = $_POST['solution']; $prompt = $_POST['prompt']; - $enigme = $model->editEnigme($id, $nom, $enonce, $aide, $rappel, $exemple, $test, $solution, $prompt); + if (isset($_POST['points'])) { + $points = $_POST['points']; + } else { + $points = 0; + } + if (isset($_POST['tempsDeResolution'])){ + $tempsDeResolution = $_POST['tempsDeResolution']; + } else { + $tempsDeResolution = 0; + } + $enigme = $model->editEnigme($id, $nom, $enonce, $aide, $rappel, $exemple, $test, $solution, $prompt, $points, $tempsDeResolution); echo ''; require($rep . $vues['detailEnigme']); } @@ -301,4 +342,39 @@ class AdminController extends UserController require($rep . $vues['erreur']); } } + public function addNewEnigmeMulti() + { + try { + global $rep, $vues; + $model = new AdminModel(); + $nom = $_POST['nom']; + $enonce = $_POST['enigme']; + $aide = $_POST['aide']; + $rappel = $_POST['rappel']; + $exemple = $_POST['exemple']; + $test = $_POST['test']; + $solution = $_POST['solution']; + $prompt = $_POST['prompt']; + $points = $_POST['points']; + $tempsDeResolution = $_POST['tempsDeResolution']; + if (empty($nom) || empty($enonce) || empty($test) || empty($solution) || empty($points) || empty($tempsDeResolution)) { + throw new Exception("Les champs nom, enigme, test, solution, points et temps de résolution doivent être remplis"); + } + if (empty($aide)) { + $aide = "Il n'y a pas d'aide pour cette énigme"; + } + if (empty($rappel)) { + $rappel = "Il n'y a pas de rappel pour cette énigme"; + } + if (empty($exemple)) { + $exemple = "Il n'y a pas d'exemple pour cette énigme"; + } + $enigme = $model->addNewEnigmeMulti($nom, $enonce, $aide, $rappel, $exemple, $test, $solution, $prompt, $points, $tempsDeResolution); + echo ''; + $this->goToAdmin(); + } catch (Exception $e) { + $error = $e->getMessage(); + require($rep . $vues['erreur']); + } + } } \ No newline at end of file diff --git a/WEB/Controller/EnigmeGateway.php b/WEB/Controller/EnigmeGateway.php index b35bb7e4..a1d9742b 100644 --- a/WEB/Controller/EnigmeGateway.php +++ b/WEB/Controller/EnigmeGateway.php @@ -94,7 +94,8 @@ class EnigmeGateway public function findMultiEnigma() : array { $query = "SELECT * FROM Enigme - WHERE points IS NOT NULL OR points != 0"; + WHERE points != 0 + AND tempsDeResolution IS NOT NULL OR tempsDeResolution != 0"; $this->con->executeQuery($query); $tabEnigme=EnigmeFactory::create($this->con->getResults()); return $tabEnigme; @@ -180,7 +181,10 @@ class EnigmeGateway public function getRandomEnigme() : Enigme { - $query = "SELECT * FROM Enigme WHERE ordre = 0 ORDER BY RANDOM() LIMIT 1"; + $query = "SELECT * FROM Enigme + WHERE points IS NOT NULL OR points != 0 + AND tempsDeResolution IS NOT NULL OR tempsDeResolution != 0 + ORDER BY RANDOM() LIMIT 1"; $this->con->executequery($query); $results = $this->con->getResults(); if (empty($results)){ diff --git a/WEB/Model/AdminModel.php b/WEB/Model/AdminModel.php index ea3a3a8e..ee56fbd3 100755 --- a/WEB/Model/AdminModel.php +++ b/WEB/Model/AdminModel.php @@ -33,6 +33,29 @@ class AdminModel if (is_resource($js)) { fwrite($js, "//~ Function that test the user code +async function submit(){ + var test = editor.getValue()+`\\n\n". $solution . "\n". $test . "\n`; + exec(\"print ('True')\", \"code\"); + exec(test, \"solution\"); + result.innerHTML = \"Test en cours...\"; + await new Promise(r => setTimeout(r, 1500)); + check(); +}"); + fclose($js); + } else { + throw new Exception("Impossible d'ouvrir le fichier"); + } + return $tabEnigme[0]; + } + public function addNewEnigmeMulti(string $nom,string $enonce,string $aide,string $rappel,string $exemple,string $test,string $solution, string $prompt, int $points, int $tempsDeResolution) : Enigme + { + $enigme = new Enigme(1,$nom, $enonce, $aide, $rappel, $exemple, $solution, $test, 0, $tempsDeResolution, $points, $prompt); + $this->enigme_gateway->insert($enigme); + $tabEnigme = $this->enigme_gateway->findLastEnigma(); + $js = fopen("View/src/JS/$nom.js", "w"); + if (is_resource($js)) { + fwrite($js, "//~ Function that test the user code + async function submit(){ var test = editor.getValue()+`\\n\n". $solution . "\n". $test . "\n`; exec(\"print ('True')\", \"code\"); @@ -82,11 +105,15 @@ async function submit(){ { return $this->enigme_gateway->findSoloEnigma(); } + public function getEnigmesMulti() : array + { + return $this->enigme_gateway->findMultiEnigma(); + } public function getEnigmeById (int $id) : Enigme { return $this->enigme_gateway->findById($id)[0]; } - public function editEnigme(int $id, string $nom,string $enonce,string $aide,string $rappel,string $exemple,string $test,string $solution, string $prompt) : Enigme + public function editEnigme(int $id, string $nom,string $enonce,string $aide,string $rappel,string $exemple,string $test,string $solution, string $prompt, int $points, int $tempsDeResolution) : Enigme { $old = $this->enigme_gateway->findById($id)[0]; $ordre = $old->getOrdre(); @@ -98,7 +125,7 @@ async function submit(){ $test = trim($test); $solution = trim($solution); $prompt = trim($prompt); - $enigme = new Enigme($id,$nom, $enonce, $aide, $rappel, $exemple, $solution, $test, $ordre, 0, 0, $prompt); + $enigme = new Enigme($id,$nom, $enonce, $aide, $rappel, $exemple, $solution, $test, $ordre, $tempsDeResolution, $points, $prompt); $this->enigme_gateway->update($enigme); $js = fopen("View/src/JS/$nom.js", "w"); if (is_resource($js)) { diff --git a/WEB/View/src/CSS/Admin2.css b/WEB/View/src/CSS/Admin2.css index 751bc908..068c83e0 100644 --- a/WEB/View/src/CSS/Admin2.css +++ b/WEB/View/src/CSS/Admin2.css @@ -219,7 +219,7 @@ button { .user-box input:valid ~ label { top: -20px; left: 0; - color: #be5631; + color: rgba(146, 254, 157, 1); font-size: 12px; } diff --git a/WEB/View/src/pages/Admin/AddEnigmeMulti.php b/WEB/View/src/pages/Admin/AddEnigmeMulti.php new file mode 100644 index 00000000..f21fb8a0 --- /dev/null +++ b/WEB/View/src/pages/Admin/AddEnigmeMulti.php @@ -0,0 +1,92 @@ + + + + Admin + + + + + + + + + +
+ Retour +

Ajouter un énigme

+
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+ +
+ + \ No newline at end of file diff --git a/WEB/View/src/pages/Admin/AddEnigmeSolo.php b/WEB/View/src/pages/Admin/AddEnigmeSolo.php index 8b283e29..69c5ec32 100644 --- a/WEB/View/src/pages/Admin/AddEnigmeSolo.php +++ b/WEB/View/src/pages/Admin/AddEnigmeSolo.php @@ -69,7 +69,7 @@
- +
+ + + \ No newline at end of file diff --git a/WEB/View/src/pages/Admin/ModifEnigmeSolo.php b/WEB/View/src/pages/Admin/ModifEnigmeSolo.php index f1bda0a4..52f19bdb 100644 --- a/WEB/View/src/pages/Admin/ModifEnigmeSolo.php +++ b/WEB/View/src/pages/Admin/ModifEnigmeSolo.php @@ -70,7 +70,7 @@
- +