From 4f9ab8264c86aa7bd69a7de8e80f01380a0006f6 Mon Sep 17 00:00:00 2001 From: Ness Gaster Date: Thu, 23 Feb 2023 13:50:29 +0100 Subject: [PATCH 1/9] Add GatewayAdmin.php --- Source/API/script/Gateway/GatewayAdmin.php | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Source/API/script/Gateway/GatewayAdmin.php diff --git a/Source/API/script/Gateway/GatewayAdmin.php b/Source/API/script/Gateway/GatewayAdmin.php new file mode 100644 index 0000000..c1b3363 --- /dev/null +++ b/Source/API/script/Gateway/GatewayAdmin.php @@ -0,0 +1,54 @@ +connection = connect(); + } + + public function addAdmin(string $login, string $hash): void + { + $query = "INSERT INTO Admin(login, hash) VALUES(:login, :hash)"; + $this->connection->executeQuery($query, array( + ':login' => array($login, PDO::PARAM_STR), + ':hash' => array($hash, PDO::PARAM_STR) + )); + } + + public function getPassword(string $login): array + { + $query = 'SELECT Hash FROM Admin WHERE Login = :login'; + + $this->connection->executeQuery($query, array( + ':login' => array($login, PDO::PARAM_STR) + )); + + $results=$this->con->getResults(); + return $results; + } + + public function changePassword(string $login, string $hash): void + { + $query = "UPDATE Admin SET hash = :hash WHERE login = :login"; + $this->connection->executeQuery($query, array( + ':login' => array($login, PDO::PARAM_STR), + ':hash' => array($hash, PDO::PARAM_STR) + )); + } + + public function deleteAdmin(string $login): void + { + $query = "DELETE FROM Admin WHERE login = :login"; + $this->connection->executeQuery($query, array( + ':login' => array($login, PDO::PARAM_STR) + )); + } +} \ No newline at end of file From a15369f9a81f4fa19d0a0ea17199a302525ed69b Mon Sep 17 00:00:00 2001 From: Ness Gaster Date: Thu, 23 Feb 2023 15:35:14 +0100 Subject: [PATCH 2/9] =?UTF-8?q?commencement=20des=20commentaires=20et=20co?= =?UTF-8?q?rrection=20de=20m=C3=A9thode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/API/script/Gateway/GatewayAdmin.php | 41 +++++++++- Source/API/script/Gateway/GatewayForm.php | 77 ++++++++++++++++++- Source/API/script/Gateway/GatewayKeyword.php | 69 ++++++++++++++++- .../GatewayListResponseOfCandidate.php | 43 +++++++++-- Source/API/script/Gateway/GatewayResponse.php | 75 ++++++++++++++++-- 5 files changed, 287 insertions(+), 18 deletions(-) diff --git a/Source/API/script/Gateway/GatewayAdmin.php b/Source/API/script/Gateway/GatewayAdmin.php index c1b3363..a93b9be 100644 --- a/Source/API/script/Gateway/GatewayAdmin.php +++ b/Source/API/script/Gateway/GatewayAdmin.php @@ -5,8 +5,14 @@ namespace API\script\Gateway; use API\script\Config\Connection; use PDO; +/** + * Permet d'accéder, d'écrire ou de modifier les données contenues dans la table Admin afin de gérer l'espace administrateur. + */ class GatewayAdmin { + /** + * @var Connection + */ private Connection $connection; public function __construct() @@ -14,6 +20,14 @@ class GatewayAdmin $this->connection = connect(); } + /** + * Permet d'ajouter un administrateur dans la base de données. + * + * @param string $login Login du nouvel adimin + * @param string $hash Mot de passe au format hash du nouvel admin + * + * @return void + */ public function addAdmin(string $login, string $hash): void { $query = "INSERT INTO Admin(login, hash) VALUES(:login, :hash)"; @@ -23,6 +37,14 @@ class GatewayAdmin )); } + /** + * Permet de récupérer le mot de passe en format hash du login passé en argument, + * afin de vérifier si la connection de l'utilisateur. + * + * @param string $login Login du coup duquel on veut récupérer le hash associé + * + * @return array + */ public function getPassword(string $login): array { $query = 'SELECT Hash FROM Admin WHERE Login = :login'; @@ -31,10 +53,18 @@ class GatewayAdmin ':login' => array($login, PDO::PARAM_STR) )); - $results=$this->con->getResults(); - return $results; + return $this->connection->getResults(); } + /** + * Permet de changer le mot de passe de l'administrateur dont le login + * et le nouveau mot de passe au format hash est passé en argument. + * + * @param string $login Login dont on change le mot de passe + * @param string $hash Nouveau mot de passe au format hash + * + * @return void + */ public function changePassword(string $login, string $hash): void { $query = "UPDATE Admin SET hash = :hash WHERE login = :login"; @@ -44,6 +74,13 @@ class GatewayAdmin )); } + /** + * Permet de supprimer un administrateur de la base de donnée par un login passé en paramètre. + * + * @param string $login Login du compte qui sera supprimé + * + * @return void + */ public function deleteAdmin(string $login): void { $query = "DELETE FROM Admin WHERE login = :login"; diff --git a/Source/API/script/Gateway/GatewayForm.php b/Source/API/script/Gateway/GatewayForm.php index 400f98d..73c18f3 100644 --- a/Source/API/script/Gateway/GatewayForm.php +++ b/Source/API/script/Gateway/GatewayForm.php @@ -7,15 +7,33 @@ use BusinessClass\Form; use BusinessClass\Question; use PDO; +/** + * Permet d'accéder, d'écrire ou de modifier les données contenues dans la table Form + * afin de gérer l'affichage principale du formulaire. + */ class GatewayForm { + /** + * @var Connection + */ private Connection $connection; + /** + * + */ public function __construct() { $this->connection = connect(); } + /** + * Permet d'instancier un formulaire s'il n'y a pas déjà un de présent dans la base de donnée + * afin de rendre le formulaire modulable. + * + * @param Form $form Formulaire que l'on veut sauvegarder + * + * @return void + */ public function insertForm(Form $form): void { if (empty($this->getForm())) { @@ -27,6 +45,11 @@ class GatewayForm } } + /** + * Permet de récupérer le formulaire sauvegarder dans la base de donnée. + * + * @return array Retourne un array contenant l'ensemble des données du formulaire + */ public function getForm(): array { $query = "SELECT * FROM Form"; @@ -35,6 +58,13 @@ class GatewayForm return $this->connection->getResults(); } + /** + * Permet de supprimer le formulaire dont l'id est le même que le formulaire passé en paramètre. + * + * @param Form $form Formulaire que l'on veut supprimer de la base de donnée + * + * @return void + */ public function deleteForm(Form $form): void { $query = "DELETE FROM Form WHERE id = :id"; @@ -43,6 +73,16 @@ class GatewayForm )); } + /** + * Permet de faire le lien entre une catégorie et la réponse possible passées en paramètre + * à la question dont l'id est aussi passé en paramètre. + * + * @param string $keyword Keyword que l'on veut associer + * @param string $response Réponse que l'on veut associer + * @param int $idQuestion Id de la question qui contient la réponse + * + * @return void + */ public function assignKeywordToQuestion(string $keyword, string $response, int $idQuestion): void { $query = "SELECT pr.id @@ -63,6 +103,16 @@ class GatewayForm )); } + /** + * Permet de supprimer le lien entre une catégorie et la réponse possible passées en paramètre + * à la question dont l'id est aussi passé en paramètre. + * + * @param string $keyword Keyword que l'on veut associer + * @param string $response Réponse que l'on veut associer + * @param Question $question Id de la question qui contient la réponse + * + * @return void + */ public function deleteKeywordFromQuestion(string $keyword, string $response, Question $question): void { $query = "SELECT pr.id FROM Propose p, PossibleResponse r @@ -82,6 +132,14 @@ class GatewayForm )); } + /** + * Permet de modifier le titre du formulaire sauvé dans la base de donnée. + * + * @param string $title Nouveau titre + * @param Form $form Formulaire que l'on veut modifier + * + * @return void + */ public function updateTitleToForm(string $title, Form $form): void { $query = "UPDATE Form SET title = :title WHERE id = :id"; @@ -91,6 +149,14 @@ class GatewayForm )); } + /** + * Permet de modifier la description du formulaire sauvé dans la base de donnée. + * + * @param string $description Nouvelle description + * @param Form $form Formulaire que l'on veut modifier + * + * @return void + */ public function updateDescriptionToForm(string $description, Form $form): void { $query = "UPDATE Form SET title = :title WHERE description = :description"; @@ -100,11 +166,18 @@ class GatewayForm )); } + /** + * Permet de supprimer la description du formulaire dans la base de donnée en le remplaçant par une chaine vide. + * + * @param Form $form Formulaire que l'on veut modifier + * + * @return void + */ public function deleteDescriptionToForm(Form $form): void { - $query = "UPDATE Form SET title = :title WHERE description = :descript"; + $query = "UPDATE Form SET title = :title WHERE description = :description"; $this->connection->executeQuery($query, array( - ':descript' => array('', PDO::PARAM_STR), + ':description' => array('', PDO::PARAM_STR), ':id' => array($form->getId(), PDO::PARAM_INT) )); } diff --git a/Source/API/script/Gateway/GatewayKeyword.php b/Source/API/script/Gateway/GatewayKeyword.php index 37b8b4b..4234cfe 100644 --- a/Source/API/script/Gateway/GatewayKeyword.php +++ b/Source/API/script/Gateway/GatewayKeyword.php @@ -5,15 +5,32 @@ namespace API\script\Gateway; use API\script\Config\Connection; use PDO; +/** + * Permet d'accéder, d'écrire ou de modifier les données contenues dans la table Keyword + * afin de gérer les catégories disponibles et associer aux différentes réponses des questions. + */ class GatewayKeyword { + /** + * @var Connection + */ private Connection $connection; + /** + * + */ public function __construct() { $this->connection = connect(); } + /** + * Permet d'ajouter un Keyword dans la base de donnée. + * + * @param string $keyword Keyword à ajouter + * + * @return void + */ public function insertKeyword(string $keyword) { $query = "INSERT INTO Keyword(word) VALUES(:word)"; @@ -22,6 +39,13 @@ class GatewayKeyword )); } + /** + * Permet de supprimer un keyword de la base de donnée. + * + * @param string $keyword Keyword à supprimer + * + * @return void + */ public function deleteKeyword(string $keyword) { $query = "DELETE FROM Keyword WHERE word = :word"; @@ -30,6 +54,11 @@ class GatewayKeyword )); } + /** + * Permet de récupérer l'ensemble des Keyword disponible. + * + * @return array Retourne la liste de l'ensemble des keyword sauvé dans la base de donnée + */ public function getAllKeyword(): array { $query = "SELECT * FROM Keyword"; @@ -38,6 +67,13 @@ class GatewayKeyword return $this->connection->getResults(); } + /** + * Permet de récupérer tous les Keyword qui font référence à l'id de la réponse possible à une question passée en paramètre. + * + * @param int $id Id de la possible réponse que l'on veut connaitre ses catégories + * + * @return array Retourne l'ensemble de tous les Keyword associer à la réponse + */ public function getKeywordsContentByReference(int $id): array { $query = "SELECT k.* FROM Keyword k, Reference r @@ -46,10 +82,41 @@ class GatewayKeyword ':id' => array($id, PDO::PARAM_STR) )); + return $this->getKeywordByAssotiation($id , $query); + } + + /** + * Permet de récupérer tous les Keyword qui font référence à l'id de la réponse d'un candidat passée en paramètre. + * + * @param int $id Id de la réponse que l'on veut connaitre ses catégories + * + * @return array Retourne l'ensemble de tous les Keyword associer à la réponse + */ + public function getKeywordsContentByCategorieze(int $id): array + { + $query = "SELECT k.* FROM Keyword k, Categorieze c + WHERE k.word = c.keyword AND c.response = :id"; + + return $this->getKeywordByAssotiation($id , $query); + } + + /** + * Permet de récupérer une liste de Keyword selon une requête donnée et un id associé. + * + * @param int $id Id de l'objet dont on veut ses Keyword associé + * @param string $query Requête que l'on veut exécuter + * + * @return array Retourne la liste des différents Keyword associé à l'objet voulu + */ + private function getKeywordByAssotiation(int $id, string $query): array + { + $this->connection->executeQuery($query, array( + ':id' => array($id, PDO::PARAM_STR) + )); $tab = []; foreach ($this->connection->getResults() as $result) { - $tab[] = $result["word"]; + $tab[] = $result["word"]; } return $tab; diff --git a/Source/API/script/Gateway/GatewayListResponseOfCandidate.php b/Source/API/script/Gateway/GatewayListResponseOfCandidate.php index 7862ea0..01e2666 100644 --- a/Source/API/script/Gateway/GatewayListResponseOfCandidate.php +++ b/Source/API/script/Gateway/GatewayListResponseOfCandidate.php @@ -5,8 +5,15 @@ namespace API\script\Gateway; use API\script\Config\Connection; use PDO; +/** + * Permet d'accéder, d'écrire ou de modifier les données contenues dans la table ListResponseOfCandidate + * afin de gérer les réponses fournit des candidats. + */ class GatewayListResponseOfCandidate { + /** + * @var Connection + */ private Connection $connection; public function __construct() @@ -14,11 +21,19 @@ class GatewayListResponseOfCandidate $this->connection = connect(); } + /** + * Permet de récupérer l'ensemble des réponses d'un candidat ansi que les Keywords associer à chaque réponse. + * + * @param int $idListResponse Id de la liste de réponse d'un candidat + * + * @return array Retourne une liste contenant + * à l'indice 0 les informations globale de la liste des réponses du candidat, à l'indice 1 la liste de réponse + * et à l'indice 2 une liste de liste de Keword, + * où chaque indice d'une liste de question est associé au même indice une réponse + */ public function getDetailsListResponsesOfCandidate(int $idListResponse) { $gatewayResponse = new GatewayResponse(); - $gatewayKeyword = new GatewayKeyword(); - $tabKeywords = []; $query = "SELECT * FROM ListResponsesOfCandidate WHERE id = :id"; $this->connection->executeQuery($query, array( @@ -27,15 +42,16 @@ class GatewayListResponseOfCandidate $questionList = $this->connection->getResults()[0]; - $responses = $gatewayResponse->getResponsesByIdListCandidate($questionList['id']); + $result = $gatewayResponse->getCatgoriezeOfResponsesIdByIdListCandidate($questionList['id']); - foreach ($responses as $row) { - $tabKeywords[] = $gatewayKeyword->getKeywordsContentByCategorieze($row['id']); - } - - return array($questionList, $responses, $tabKeywords); + return array($questionList, $result[0], $result[1]); } + /** + * Permet de recupérer seulement les informations globales de toutes listes de réponses de candidat. + * + * @return array Retourne une liste d'informations globale de la liste des réponses du candidat + */ public function getAllListResponsesOfCandidate(): array { $query = "SELECT * FROM ListResponsesOfCandidate"; @@ -44,6 +60,10 @@ class GatewayListResponseOfCandidate return $this->connection->getResults(); } + /** + * @param $id + * @return void + */ public function deleteListResponseOfCandidate($id): void { $gatewayResponse = new GatewayResponse(); @@ -58,6 +78,13 @@ class GatewayListResponseOfCandidate )); } + /** + * @param $id + * @param $answer + * @param $category + * @param $titleForm + * @return void + */ public function insertListResponsesOfCandidate($id, $answer, $category, $titleForm) { $gatewayResponse = new GatewayResponse(); diff --git a/Source/API/script/Gateway/GatewayResponse.php b/Source/API/script/Gateway/GatewayResponse.php index 6803de0..b22e400 100644 --- a/Source/API/script/Gateway/GatewayResponse.php +++ b/Source/API/script/Gateway/GatewayResponse.php @@ -5,8 +5,15 @@ namespace API\script\Gateway; use API\script\Config\Connection; use PDO; +/** + * Permet d'accéder, d'écrire ou de modifier les données contenues dans la table Response + * afin de récupérer les réponses d'un utilisateur. + */ class GatewayResponse { + /** + * @var Connection + */ private Connection $connection; public function __construct() @@ -14,10 +21,18 @@ class GatewayResponse $this->connection = connect(); } - public function getResponsesByIdListCandidate(int $listResponsesOfCandidateId): array + /** + * Permet de récupérer la liste des réponses d'un candidat ainsi que les Keyword couvert pour chaque réponse. + * + * @param int $listResponsesOfCandidateId Id du candidat + * + * @return array Retourne une liste contenant à l'indice 0 la liste de réponse + * et à l'indice 1 une liste de liste de Keword, + * où chaque indice d'une liste de question est associé au même indice une réponse + */ + public function getCatgoriezeOfResponsesIdByIdListCandidate(int $listResponsesOfCandidateId): array { - - $result = $this->getResponsesIdByIdListCandidate($listResponsesOfCandidateId); + $result = $this->getResponsesByIdListCandidate($listResponsesOfCandidateId); $tab = []; foreach ($result as $row) { $tab[] = (new GatewayKeyword())->getKeywordsContentByCategorieze($row['id']); @@ -26,15 +41,57 @@ class GatewayResponse return array($result, $tab); } + /** + * Permet de récupérer la liste des réponses d'un candidat par son id. + * + * @param int $listResponsesOfCandidateId Id du candidat + * + * @return array Retourne la list des réponses du candidat + */ + public function getResponsesByIdListCandidate(int $listResponsesOfCandidateId): array + { + $query = "SELECT r.* FROM Response r, Submit s WHERE s.responseCandidate = :id AND r.id = s.response"; + return $this->getResponsesByQueryAndIdListCandidate($query, $listResponsesOfCandidateId); + } + + /** + * Permet de récupérer la liste des id des réponses d'un candidat par son id. + * + * @param int $listResponsesOfCandidateId Id du candidat + * + * @return array Retourne la list des id des réponses du candidat + */ public function getResponsesIdByIdListCandidate(int $listResponsesOfCandidateId): array { $query = "SELECT r.id FROM Response r, Submit s WHERE s.responseCandidate = :id AND r.id = s.response"; + return $this->getResponsesByQueryAndIdListCandidate($query, $listResponsesOfCandidateId); + } + + /** + * Permet de récupérer une liste de format de réponse définit par la commande sql passé en paramètre, + * dont l'id du candidat, ayant formulé ces réponses, est passé en paramètre. + * + * @param string $query Requête du format de liste de réponse voulu + * @param int $id Id du candidat cible + * + * @return array Retourne la liste des réponses d'un candidat selon le format voulu + */ + private function getResponsesByQueryAndIdListCandidate(string $query, int $id): array + { $this->connection->executeQuery($query, array( - ':id' => array($listResponsesOfCandidateId, PDO::PARAM_INT) + ':id' => array($id, PDO::PARAM_INT) )); return $this->connection->getResults(); } + /** + * Permet de supprimer la réponse et ses liens avec les différents Keyword + * selon l'id de la réponse passée en paramêtre + * + * @param int $responseId Id de la réponse à supprimer + * + * @return void + */ public function deleteResponseById(int $responseId): void { $query = "DELETE FROM Categorize WHERE response = :id"; @@ -53,6 +110,15 @@ class GatewayResponse )); } + /** + * Permet d'insérer une réponse ainsi que de la lier avec les Keywords passés en paramètre. + * + * @param string $content Contenu de la réponse + * @param string $questionContent Contenu de la question, dans le cas où la question viendra à changer dans le futur + * @param array $category Liste des Keyword associé à la réponse + * + * @return int Retourne l'Id de la réponse insérée + */ public function insertResponse(string $content, string $questionContent, array $category): int { $query = "INSERT INTO Response(content, questionContent) VALUES (:content, :questionContent)"; @@ -63,7 +129,6 @@ class GatewayResponse $idResponse = $this->connection->lastInsertId(); - foreach ($category as $keyword) { $query = "INSERT INTO Categorize (response, keyword) VALUES(:response, :keyword)"; $this->connection->executeQuery($query, array( From 6551febec63b54a0552f50c4fc01584b25775c46 Mon Sep 17 00:00:00 2001 From: Ness Gaster Date: Tue, 28 Feb 2023 10:01:05 +0100 Subject: [PATCH 3/9] =?UTF-8?q?commencement=20des=20commentaires=20et=20co?= =?UTF-8?q?rrection=20de=20m=C3=A9thode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GatewayListResponseOfCandidate.php | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Source/API/script/Gateway/GatewayListResponseOfCandidate.php b/Source/API/script/Gateway/GatewayListResponseOfCandidate.php index 01e2666..cf2eeb8 100644 --- a/Source/API/script/Gateway/GatewayListResponseOfCandidate.php +++ b/Source/API/script/Gateway/GatewayListResponseOfCandidate.php @@ -61,10 +61,13 @@ class GatewayListResponseOfCandidate } /** - * @param $id + * Permet de supprimer de la base de donnée une liste, de reponse et ses dépendances + * + * @param int $id Id de la liste de reponse d'un candidat à supprimer + * * @return void */ - public function deleteListResponseOfCandidate($id): void + public function deleteListResponseOfCandidate(int $id): void { $gatewayResponse = new GatewayResponse(); @@ -79,13 +82,16 @@ class GatewayListResponseOfCandidate } /** - * @param $id - * @param $answer - * @param $category - * @param $titleForm + * Permet d'insérer la liste des réponses d'un candidat au questionnaire avec les catégories associer à la réponse fournie. + * + * @param array $id Liste des id des questions afin de récupérer son contenu pour l'associer à la réponse. + * @param array $answer List des réponses du candidat. + * @param array $category List de list de catégories, chaque liste d'incide n correspond aux catégories couvertes par la réponse d'indice n. + * @param string $titleForm Nom du formulaire sur lequel il a répondu. + * * @return void */ - public function insertListResponsesOfCandidate($id, $answer, $category, $titleForm) + public function insertListResponsesOfCandidate(array $id, array $answer, array $category, string $titleForm) { $gatewayResponse = new GatewayResponse(); $gatewayQuestion = new GatewayQuestion(); From 9e077c8939761ccaec4e3a0bce521c5e3d8bb92d Mon Sep 17 00:00:00 2001 From: Alexis Date: Tue, 28 Feb 2023 12:24:19 +0100 Subject: [PATCH 4/9] Print responses and categories into Admin Page without CSS --- Source/API/script/Gateway/GatewayForm.php | 2 +- Source/API/script/Gateway/GatewayKeyword.php | 2 +- Source/API/script/Gateway/GatewayResponse.php | 2 +- Source/Controller/ControllerAdmin.php | 2 ++ Source/Model/ModelAdmin.php | 22 +++++++++++++-- Source/Views/HTML/admin.php | 28 +++++++++++++++++++ 6 files changed, 53 insertions(+), 5 deletions(-) diff --git a/Source/API/script/Gateway/GatewayForm.php b/Source/API/script/Gateway/GatewayForm.php index 73c18f3..788f825 100644 --- a/Source/API/script/Gateway/GatewayForm.php +++ b/Source/API/script/Gateway/GatewayForm.php @@ -55,7 +55,7 @@ class GatewayForm $query = "SELECT * FROM Form"; $this->connection->executeQuery($query); - return $this->connection->getResults(); + var_dump($this->connection->getResults()); } /** diff --git a/Source/API/script/Gateway/GatewayKeyword.php b/Source/API/script/Gateway/GatewayKeyword.php index 4234cfe..b68381c 100644 --- a/Source/API/script/Gateway/GatewayKeyword.php +++ b/Source/API/script/Gateway/GatewayKeyword.php @@ -94,7 +94,7 @@ class GatewayKeyword */ public function getKeywordsContentByCategorieze(int $id): array { - $query = "SELECT k.* FROM Keyword k, Categorieze c + $query = "SELECT k.* FROM Keyword k, Categorize c WHERE k.word = c.keyword AND c.response = :id"; return $this->getKeywordByAssotiation($id , $query); diff --git a/Source/API/script/Gateway/GatewayResponse.php b/Source/API/script/Gateway/GatewayResponse.php index b22e400..114f4b0 100644 --- a/Source/API/script/Gateway/GatewayResponse.php +++ b/Source/API/script/Gateway/GatewayResponse.php @@ -50,7 +50,7 @@ class GatewayResponse */ public function getResponsesByIdListCandidate(int $listResponsesOfCandidateId): array { - $query = "SELECT r.* FROM Response r, Submit s WHERE s.responseCandidate = :id AND r.id = s.response"; + $query = "SELECT r.* FROM Response r, Submit s WHERE s.responsesCandidate = :id AND r.id = s.response"; return $this->getResponsesByQueryAndIdListCandidate($query, $listResponsesOfCandidateId); } diff --git a/Source/Controller/ControllerAdmin.php b/Source/Controller/ControllerAdmin.php index dcf4d89..2e349a5 100644 --- a/Source/Controller/ControllerAdmin.php +++ b/Source/Controller/ControllerAdmin.php @@ -93,6 +93,8 @@ class ControllerAdmin { $categories = (new ModelAdmin())->getCategories(); $questions = (new ModelAdmin())->getQuestions(); + $responsesCandidate = (new ModelAdmin())->getResponsesCandidate(); + global $rep, $views; require_once($rep.$views['admin']); } diff --git a/Source/Model/ModelAdmin.php b/Source/Model/ModelAdmin.php index 22653ca..034a99b 100644 --- a/Source/Model/ModelAdmin.php +++ b/Source/Model/ModelAdmin.php @@ -4,6 +4,7 @@ namespace Model; use API\script\Gateway\GatewayForm; use API\script\Gateway\GatewayKeyword; +use API\script\Gateway\GatewayListResponseOfCandidate; use API\script\Gateway\GatewayQuestion; use BusinessClass\Form; @@ -14,8 +15,8 @@ use BusinessClass\Form; class ModelAdmin { /** - * Permet de créer et d'ajouter une question et de retourner son ID afin de la reconnaitre facilement dans - * la suite du code. + * Permet de créer et d'ajouter une question et de retourner son ID afin de la + * reconnaitre facilement dans la suite du code. * * @return int */ @@ -105,4 +106,21 @@ class ModelAdmin $questionsArray = (new GatewayQuestion())->getAllQuestions($idForm); return Factory::getBuiltObjects($questionsArray, "Question"); } + + + /** + * Permet de récupérer toutes les réponses existantes. + * + * @return array + */ + public function getResponsesCandidate(): array + { + $responsesCandidate = (new GatewayListResponseOfCandidate())->getAllListResponsesOfCandidate(); + $results = []; + foreach ($responsesCandidate as $response) { + $results[] = (new GatewayListResponseOfCandidate())->getDetailsListResponsesOfCandidate($response["id"]); + } + + return $results; + } } diff --git a/Source/Views/HTML/admin.php b/Source/Views/HTML/admin.php index 9530637..92f982c 100644 --- a/Source/Views/HTML/admin.php +++ b/Source/Views/HTML/admin.php @@ -82,6 +82,34 @@ +
+ +
+ + +

Catégories associées : + +

+ +

Question :

+

Réponse :

+ + +

+ +
+
+ From af0fe2fe0d858bc0f5a2c25b7872989250fa9e45 Mon Sep 17 00:00:00 2001 From: Alexis Date: Tue, 28 Feb 2023 18:50:55 +0100 Subject: [PATCH 5/9] Print responses and categories into Admin Page without CSS --- Source/API/script/Gateway/GatewayForm.php | 2 +- Source/API/script/Gateway/GatewayListResponseOfCandidate.php | 2 +- Source/Controller/ControllerAdmin.php | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Source/API/script/Gateway/GatewayForm.php b/Source/API/script/Gateway/GatewayForm.php index 788f825..73c18f3 100644 --- a/Source/API/script/Gateway/GatewayForm.php +++ b/Source/API/script/Gateway/GatewayForm.php @@ -55,7 +55,7 @@ class GatewayForm $query = "SELECT * FROM Form"; $this->connection->executeQuery($query); - var_dump($this->connection->getResults()); + return $this->connection->getResults(); } /** diff --git a/Source/API/script/Gateway/GatewayListResponseOfCandidate.php b/Source/API/script/Gateway/GatewayListResponseOfCandidate.php index 7862ea0..f033b69 100644 --- a/Source/API/script/Gateway/GatewayListResponseOfCandidate.php +++ b/Source/API/script/Gateway/GatewayListResponseOfCandidate.php @@ -78,7 +78,7 @@ class GatewayListResponseOfCandidate $query = "INSERT INTO Submit (responsesCandidate, response) VALUES(:responsesCandidate, :response)"; $this->connection->executeQuery($query, array( ':responsesCandidate' => array($idListQuestion, PDO::PARAM_STR), - 'response' => array($idResponse, PDO::PARAM_STR) + ':response' => array($idResponse, PDO::PARAM_STR) )); } } diff --git a/Source/Controller/ControllerAdmin.php b/Source/Controller/ControllerAdmin.php index 2e349a5..a2001b2 100644 --- a/Source/Controller/ControllerAdmin.php +++ b/Source/Controller/ControllerAdmin.php @@ -95,6 +95,8 @@ class ControllerAdmin $questions = (new ModelAdmin())->getQuestions(); $responsesCandidate = (new ModelAdmin())->getResponsesCandidate(); + var_dump($responsesCandidate); + global $rep, $views; require_once($rep.$views['admin']); } From 0c9fa8e0ec8250e32fcbb13a0e58aaa1375f870c Mon Sep 17 00:00:00 2001 From: Alexis Date: Tue, 28 Feb 2023 19:19:25 +0100 Subject: [PATCH 6/9] Add a menu into Administration View --- Source/Config/config.php | 3 + Source/Controller/ControllerAdmin.php | 46 +++++++++---- Source/Views/HTML/admin.php | 93 +-------------------------- Source/Views/HTML/categories.php | 49 ++++++++++++++ Source/Views/HTML/questions.php | 75 +++++++++++++++++++++ Source/Views/HTML/responses.php | 61 ++++++++++++++++++ 6 files changed, 224 insertions(+), 103 deletions(-) create mode 100644 Source/Views/HTML/categories.php create mode 100644 Source/Views/HTML/questions.php create mode 100644 Source/Views/HTML/responses.php diff --git a/Source/Config/config.php b/Source/Config/config.php index 88f8e4d..443a696 100644 --- a/Source/Config/config.php +++ b/Source/Config/config.php @@ -7,6 +7,9 @@ $views['form'] = 'Views/HTML/form.php'; $views['admin'] = 'Views/HTML/admin.php'; $views['possibleResponsesForm'] = 'Views/HTML/possibleResponsesForm.php'; $views['continue'] = 'Views/HTML/continue.php'; +$views['categories'] = 'Views/HTML/categories.php'; +$views['questions'] = 'Views/HTML/questions.php'; +$views['responses'] = 'Views/HTML/responses.php'; $googleApis = "https://fonts.googleapis.com"; $googleStatic = "https://fonts.gstatic.com"; diff --git a/Source/Controller/ControllerAdmin.php b/Source/Controller/ControllerAdmin.php index a2001b2..5c155f4 100644 --- a/Source/Controller/ControllerAdmin.php +++ b/Source/Controller/ControllerAdmin.php @@ -22,7 +22,7 @@ class ControllerAdmin $type = $_POST['type']; $idQuestion = (new ModelAdmin())->addQuestion(); if (strcmp($type, "BusinessClass\TextQuestion") == 0) { - $this->goToAdminPage(); + $this->goToQuestions(); } else { $categories = (new ModelAdmin())->getCategories(); $questionContent = $_POST['question']; @@ -67,7 +67,7 @@ class ControllerAdmin global $rep, $views; require_once($rep.$views['possibleResponsesForm']); } else { - $this->goToAdminPage(); + $this->goToQuestions(); } } @@ -84,32 +84,52 @@ class ControllerAdmin /** - * Permet de naviguer jusqu'à la page d'admninistration principale. On retrouve la gestion - * des données de notre application + * Permet d'ajouter une catégories (mot-clef) à notre application * * @return void */ - public function goToAdminPage(): void + public function addKeyword(): void + { + (new ModelAdmin())->addKeyword(); + $this->goToCategories(); + } + + + /** + * Permet de naviguer jusqu'à la page de gestion des catégories + * + * @return void + */ + public function goToCategories(): void { $categories = (new ModelAdmin())->getCategories(); - $questions = (new ModelAdmin())->getQuestions(); - $responsesCandidate = (new ModelAdmin())->getResponsesCandidate(); + global $rep, $views; + require_once($rep.$views['categories']); + } - var_dump($responsesCandidate); + /** + * Permet de naviguer jusqu'à la page de gestion des questions + * + * @return void + */ + public function goToQuestions(): void + { + $questions = (new ModelAdmin())->getQuestions(); global $rep, $views; - require_once($rep.$views['admin']); + require_once($rep.$views['questions']); } /** - * Permet d'ajouter une catégories (mot-clef) à notre application + * Permet de naviguer jusqu'à la page de gestion des réponses * * @return void */ - public function addKeyword(): void + public function goToResponses(): void { - (new ModelAdmin())->addKeyword(); - $this->goToAdminPage(); + $responsesCandidate = (new ModelAdmin())->getResponsesCandidate(); + global $rep, $views; + require_once($rep.$views['responses']); } } diff --git a/Source/Views/HTML/admin.php b/Source/Views/HTML/admin.php index 92f982c..12a68ce 100644 --- a/Source/Views/HTML/admin.php +++ b/Source/Views/HTML/admin.php @@ -15,101 +15,14 @@ - logo UCA

Administration

-
-
-
- - - -
- -
    -
  • -
-
- -
- -
    - -
    -
  • printStrategy(); ?>
  • - -
-
-
- - -
- -
-
- -
- -
-
-

- - -
- -
- -

- - -
-
-
- -
- - -

Catégories associées : - -

- -

Question :

-

Réponse :

- - -

- -
+ Les catégories + Les questions + Les réponses
- diff --git a/Source/Views/HTML/categories.php b/Source/Views/HTML/categories.php new file mode 100644 index 0000000..b1e7b70 --- /dev/null +++ b/Source/Views/HTML/categories.php @@ -0,0 +1,49 @@ + + + + + + + + + + Formulaire de témoignage + + + + + + +logo UCA +

Administration

+ + + +
+ +
+

Les catégories :

+
+ + + +
+
+
    +
  • +
+
+ + + + diff --git a/Source/Views/HTML/questions.php b/Source/Views/HTML/questions.php new file mode 100644 index 0000000..d503780 --- /dev/null +++ b/Source/Views/HTML/questions.php @@ -0,0 +1,75 @@ + + + + + + + + + + Formulaire de témoignage + + + + + + +logo UCA +

Administration

+ + + +
+ +
+

Les questions :

+
+
+
+ +
+ +
+
+
+ + +
+ +
+ +
+ + +
+
+
+
+
    + +
  • printStrategy(); ?>
  • + +
+
+ + + + diff --git a/Source/Views/HTML/responses.php b/Source/Views/HTML/responses.php new file mode 100644 index 0000000..4a3fefc --- /dev/null +++ b/Source/Views/HTML/responses.php @@ -0,0 +1,61 @@ + + + + + + + + + + Formulaire de témoignage + + + + + + +logo UCA +

Administration

+ + + +
+ +
+

Les réponses :

+
+
+ + +

Catégories associées : + +

+ +

Question :

+

Réponse :

+ + +

+ +
+
+ + + + From 9f728edf8a47d3d700b24205f6dcf68d5a4c800b Mon Sep 17 00:00:00 2001 From: Alexis Date: Wed, 1 Mar 2023 15:28:32 +0100 Subject: [PATCH 7/9] New view for form and admin --- Source/BusinessClass/CheckBoxQuestion.php | 6 +++--- Source/BusinessClass/ListBoxQuestion.php | 6 +++--- Source/BusinessClass/TextQuestion.php | 6 +++--- Source/Model/ModelCandidate.php | 12 +++++++++--- Source/Views/CSS/form.css | 21 +++++++++++++++------ Source/Views/HTML/possibleResponsesForm.php | 2 +- Source/Views/JS/getData-Ids.js | 4 ++-- 7 files changed, 36 insertions(+), 21 deletions(-) diff --git a/Source/BusinessClass/CheckBoxQuestion.php b/Source/BusinessClass/CheckBoxQuestion.php index ef132e8..093df04 100644 --- a/Source/BusinessClass/CheckBoxQuestion.php +++ b/Source/BusinessClass/CheckBoxQuestion.php @@ -26,17 +26,17 @@ class CheckBoxQuestion extends BoxQuestion $categories = $this->getCategories(); $html = "\t\t\t
- \n"; + \n"; for ($i = 0; $i < count($possibleResponses); $i++) { $categoriesSplit = $possibleResponses[$i]."||"; foreach ($categories[$i] as $category) { $categoriesSplit.= $category."_"; } - $html.= "\t\t\t\t + $html.= "\t\t\t\t
  • \n"; } - $html.= "\t\t\t
  • \n"; + $html.= "\t\t\t
    \n"; return $html; } diff --git a/Source/BusinessClass/ListBoxQuestion.php b/Source/BusinessClass/ListBoxQuestion.php index f23df5e..3ed692a 100644 --- a/Source/BusinessClass/ListBoxQuestion.php +++ b/Source/BusinessClass/ListBoxQuestion.php @@ -26,8 +26,8 @@ class ListBoxQuestion extends BoxQuestion $categories = $this->getCategories(); $html = "\t\t\t
    - - \n"; for ($i = 0; $i < count($possibleResponses); $i++) { $categoriesSplit = $possibleResponses[$i]."||"; @@ -37,7 +37,7 @@ class ListBoxQuestion extends BoxQuestion $html.= "\t\t\t\t\t\n"; } $html.= "\t\t\t\t -
    \n"; +
    \n"; return $html; } diff --git a/Source/BusinessClass/TextQuestion.php b/Source/BusinessClass/TextQuestion.php index 1327836..78d0f2f 100644 --- a/Source/BusinessClass/TextQuestion.php +++ b/Source/BusinessClass/TextQuestion.php @@ -18,8 +18,8 @@ class TextQuestion extends Question $id = $this->getId(); return "\t\t\t
    - - -
    \n"; + +
    +
    \n"; } } diff --git a/Source/Model/ModelCandidate.php b/Source/Model/ModelCandidate.php index 9485f7b..559f24f 100644 --- a/Source/Model/ModelCandidate.php +++ b/Source/Model/ModelCandidate.php @@ -20,8 +20,8 @@ class ModelCandidate public function submitForm(): void { $answersAndCategories = $_POST['answers']; - $dataIds = null; + $dataIds = null; if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'submitForm') { $dataIdsJson = $_POST['data_ids']; $dataIds = json_decode($dataIdsJson); @@ -61,11 +61,17 @@ class ModelCandidate $description = $form[0]['description']; $questionsTab = (new GatewayQuestion())->getAllQuestions($form[0]['id']); + $questions = Factory::getBuiltObjects($questionsTab, "Question"); + $nbQuestions = count($questions); + $time = round(($nbQuestions * 20)/60); $html = "

    $title

    \n +

    $description

    \n +
    +

    Temps estimé : $time minutes

    \n
    \n"; @@ -74,11 +80,11 @@ class ModelCandidate } if (count($questions) > 0) { - $html.= "\t\t\t\n + $html.= "\t\t\t\n \t\t\t \t\t\t \t\t
    \n -\t
    \n"; +\t


    \n"; } else { $html.= "\t\t\n \t\n"; diff --git a/Source/Views/CSS/form.css b/Source/Views/CSS/form.css index 7173841..5c4cf56 100644 --- a/Source/Views/CSS/form.css +++ b/Source/Views/CSS/form.css @@ -1,18 +1,27 @@ +h3 { + text-align: center; +} + +h4 { + text-align: center; + font-weight: normal; +} + #container_form { display: flex; flex-direction: row; justify-content: center; - margin-top: 5%; + margin-top: 3%; } #container_form h2{ padding-top: 1%; } -#container_form #button { +#button { margin-top: 5%; - width: 20%; - height: 5%; + width: 15%; + height: 3%; margin-left: 79%; margin-bottom: 10%; cursor: pointer; @@ -21,8 +30,8 @@ border-radius: 20px; } -#container_form #button:hover { - background-color: rgb(23,143,150); +#button:hover { + background-color: rgba(23, 143, 150, 0.7); } #container_testimony, #container_personalInfos { diff --git a/Source/Views/HTML/possibleResponsesForm.php b/Source/Views/HTML/possibleResponsesForm.php index ad8188a..6578ce9 100644 --- a/Source/Views/HTML/possibleResponsesForm.php +++ b/Source/Views/HTML/possibleResponsesForm.php @@ -36,7 +36,7 @@ - +
  • Date: Wed, 1 Mar 2023 18:22:00 +0100 Subject: [PATCH 8/9] =?UTF-8?q?Correction=20de=20bug=20de=20l'insertion=20?= =?UTF-8?q?des=20r=C3=A9ponses=20dans=20la=20base=20de=20donn=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GatewayListResponseOfCandidate.php | 50 ++++++++++++- .../Gateway/GatewayPossibleResponse.php | 42 +++++++++++ Source/API/script/Gateway/GatewayQuestion.php | 71 ++++++++++++++++--- Source/BusinessClass/CheckBoxQuestion.php | 4 +- Source/BusinessClass/ListBoxQuestion.php | 4 +- Source/Model/ModelCandidate.php | 24 +++++-- 6 files changed, 172 insertions(+), 23 deletions(-) diff --git a/Source/API/script/Gateway/GatewayListResponseOfCandidate.php b/Source/API/script/Gateway/GatewayListResponseOfCandidate.php index f033b69..902f792 100644 --- a/Source/API/script/Gateway/GatewayListResponseOfCandidate.php +++ b/Source/API/script/Gateway/GatewayListResponseOfCandidate.php @@ -5,15 +5,36 @@ namespace API\script\Gateway; use API\script\Config\Connection; use PDO; +/** + * Permet d'accéder, d'écrire ou de modifier les données contenues dans la table PossibleResponse + * afin de gérer la liste des réponses et les catégories associer d'un candidat. + */ class GatewayListResponseOfCandidate { + /** + * @var Connection + */ private Connection $connection; + /** + * + */ public function __construct() { $this->connection = connect(); } + /** + * Permet de récupérer la liste détaillée des réponses avec leurs catégories associer + * aux différentes questions qu'un candidat cible a répondu + * + * @param int $idListResponse Id du candidat pour lequel on veut récupérer ses réponses + * + * @return array Retourne une liste qui pour + * l'indice 0 a la liste des infos du candidat + * l'indice 1 la liste des réponses + * l'indice 2 une liste de liste de catégories, qui pour chaque même indice correspont à la liste des catégories de la réponse + */ public function getDetailsListResponsesOfCandidate(int $idListResponse) { $gatewayResponse = new GatewayResponse(); @@ -36,6 +57,11 @@ class GatewayListResponseOfCandidate return array($questionList, $responses, $tabKeywords); } + /** + * Permet de récupérer la liste des personnes ayant répondu aux formulaire + * + * @return array Retourne la liste brute des informations de tous les candidats ayant répondu au formulaire + */ public function getAllListResponsesOfCandidate(): array { $query = "SELECT * FROM ListResponsesOfCandidate"; @@ -44,7 +70,14 @@ class GatewayListResponseOfCandidate return $this->connection->getResults(); } - public function deleteListResponseOfCandidate($id): void + /** + * Permet de supprimer la liste des réponses d'un candidat de la base de donnée + * + * @param int $id Id du candidat à supprimer + * + * @return void + */ + public function deleteListResponseOfCandidate(int $id): void { $gatewayResponse = new GatewayResponse(); @@ -54,11 +87,22 @@ class GatewayListResponseOfCandidate $query = "DELETE FROM ListResponsesOfCandidate WHERE id = :id"; $this->connection->executeQuery($query, array( - 'id' => array($id, PDO::PARAM_STR) + 'id' => array($id, PDO::PARAM_INT) )); } - public function insertListResponsesOfCandidate($id, $answer, $category, $titleForm) + /** + * Permet d'insérer dans la base de données les réponses aux questions d'un candidat + * ainsi que les catégories associées à chaque réponse + * + * @param array $id Liste des id des questions répondue + * @param array $answer Liste des réponses à chaque question + * @param array $category Liste des catégories attribuées à chaque réponse + * @param string $titleForm Titre du formulaire + * + * @return void + */ + public function insertListResponsesOfCandidate(array $id, array $answer, array $category, string $titleForm): void { $gatewayResponse = new GatewayResponse(); $gatewayQuestion = new GatewayQuestion(); diff --git a/Source/API/script/Gateway/GatewayPossibleResponse.php b/Source/API/script/Gateway/GatewayPossibleResponse.php index 58956d8..7f3280d 100644 --- a/Source/API/script/Gateway/GatewayPossibleResponse.php +++ b/Source/API/script/Gateway/GatewayPossibleResponse.php @@ -5,15 +5,31 @@ namespace API\script\Gateway; use API\script\Config\Connection; use PDO; +/** + * Permet d'accéder, d'écrire ou de modifier les données contenues dans la table PossibleResponse. + */ class GatewayPossibleResponse { + /** + * @var Connection + */ private Connection $connection; + /** + * + */ public function __construct() { $this->connection = connect(); } + /** + * Permet de récupérer les différentes réponses possibles à une question donnée. + * + * @param string $idQuestion Id de la question pour laquelle on veut récupérer les réponses possibles + * + * @return array Retourne la liste de possibles réponses + */ public function getPossibleResponseByQuestion(string $idQuestion): array { $query = "SELECT pr.* FROM Propose p, PossibleResponse pr @@ -25,6 +41,12 @@ class GatewayPossibleResponse return $this->connection->getResults(); } + /** + * Permet d'insérer une possible réponse dans la base de donnée. + * + * @param string $contentPossibleResponse Contenu de la possible réponse + * @return int + */ public function insertPossibleResponse(string $contentPossibleResponse): int { $query = "INSERT INTO PossibleResponse(content) VALUES(:content)"; @@ -34,4 +56,24 @@ class GatewayPossibleResponse return $this->connection->lastInsertId(); } + + /** + * Permet de supprimer une possible réponse de la base de donnée par son id. + * + * @param int $id Id de la possible réponse à supprimer + * + * @return void + */ + public function deletePossibleResponse(int $id): void + { + $query = "DELETE FROM Reference WHERE response = :id"; + $this->connection->executeQuery($query, array( + ':id' => array($id, PDO::PARAM_INT) + )); + + $query = "DELETE FROM PossibleResponse WHERE id = :id"; + $this->connection->executeQuery($query, array( + ':id' => array($id, PDO::PARAM_INT) + )); + } } diff --git a/Source/API/script/Gateway/GatewayQuestion.php b/Source/API/script/Gateway/GatewayQuestion.php index 643c7b8..fc4e768 100644 --- a/Source/API/script/Gateway/GatewayQuestion.php +++ b/Source/API/script/Gateway/GatewayQuestion.php @@ -8,15 +8,33 @@ use BusinessClass\Question; use BusinessClass\TextQuestion; use PDO; +/** + * Permet d'accéder, d'écrire ou de modifier les données contenues dans la table Question + * afin de rendre le formulaire modulable. + */ class GatewayQuestion { + /** + * @var Connection + */ private Connection $connection; + /** + * + */ public function __construct() { $this->connection = connect(); } + /** + * Permet d'ajouter une question dans la base de donnée. + * + * @param Question $question Information sur la question ajouter + * @param int $idForm Id du formulaire associer + * + * @return int Id de la question ajouté en base + */ public function addQuestion(Question $question, int $idForm): int { $query = "INSERT INTO Question(content, type, form) VALUES(:content, :type, :form)"; @@ -29,6 +47,15 @@ class GatewayQuestion return $this->connection->lastInsertId(); } + /** + * Ajoute une possible réponse à une question cible et associe à la possible réponse des catégories. + * + * @param string $response Contenu de la réponse possible + * @param array $categories Liste des catégories attribuées à la possible réponse + * @param int $idQuestion Id de la question associée à cette possible réponse + * + * @return int Retourne l'id de la possible réponse insérée en base + */ public function insertResponseInQuestion(string $response, array $categories, int $idQuestion): int { $gatewayPossibleResponse = new GatewayPossibleResponse(); @@ -49,6 +76,13 @@ class GatewayQuestion return $idQuestion; } + /** + * Permet de supprimer une question dans la base ainsi que ses dépendances + * + * @param Question $question Information de la question à supprimer + * + * @return void + */ public function deleteQuestion(Question $question): void { if (get_class($question) == BoxQuestion::class) { @@ -59,15 +93,8 @@ class GatewayQuestion $listPossibleResponse = $question->getPossibleResponses(); for ($i = 0; $i < count($listPossibleResponse); $i++) { - $query = "DELETE FROM Reference WHERE response = :id"; - $this->connection->executeQuery($query, array( - ':id' => array($listPossibleResponse[$i]->getId(), PDO::PARAM_INT) - )); - - $query = "DELETE FROM PossibleResponse WHERE id = :id"; - $this->connection->executeQuery($query, array( - ':id' => array($listPossibleResponse[$i]->getId(), PDO::PARAM_INT) - )); + $gatewayPossibleResponse = new GatewayPossibleResponse(); + $gatewayPossibleResponse->deletePossibleResponse($listPossibleResponse[$i]->getId()); } } @@ -77,6 +104,13 @@ class GatewayQuestion )); } + /** + * Permet de modifier dans la base de données les informations de la question. + * + * @param Question $question Question modifier à changer en base + * + * @return void + */ public function updateQuestion(Question $question): void { $query = "UPDATE Question SET content = :content, type = :type, form = :frm WHERE id = :id"; @@ -88,6 +122,18 @@ class GatewayQuestion )); } + /** + * Permet de récupérer toutes les questions, possibles réponses et catégories associées d'un formualire cible. + * + * @param string $idForm Id du formulaire + * + * @return array Retourne une liste qui pour + * l'indice 0 la liste des questions + * l'indice 1 une liste de liste de réponses, qui pour chaque même indice correspond à la liste des réponses possibles de la question + * l'indice 2 une liste de liste de liste de catégories qui pour chaque indice de questions, + * on a une liste de liste de catégories qui pour chaque indice de réponses est associer une liste de catégories + * Ou vide s'il n'y a pas de question dans la base + */ public function getAllQuestions(string $idForm): array { $query = "SELECT * FROM Question WHERE form = :fom"; @@ -128,6 +174,13 @@ class GatewayQuestion return array(); } + /** + * Permet de récupérer le contenu d'une réponse à une question par son id. + * + * @param string $id Id de la question cible + * + * @return string Retourne le contenu de la question ciblé + */ public function getQuestionContentById(string $id): string { $query = "SELECT content FROM Question WHERE id = :id"; diff --git a/Source/BusinessClass/CheckBoxQuestion.php b/Source/BusinessClass/CheckBoxQuestion.php index 093df04..f06b135 100644 --- a/Source/BusinessClass/CheckBoxQuestion.php +++ b/Source/BusinessClass/CheckBoxQuestion.php @@ -25,11 +25,11 @@ class CheckBoxQuestion extends BoxQuestion $possibleResponses = $this->getPossibleResponses(); $categories = $this->getCategories(); - $html = "\t\t\t
    + $html = "\t\t\t
    \n"; for ($i = 0; $i < count($possibleResponses); $i++) { - $categoriesSplit = $possibleResponses[$i]."||"; + $categoriesSplit = $id."||".$possibleResponses[$i]."||"; foreach ($categories[$i] as $category) { $categoriesSplit.= $category."_"; } diff --git a/Source/BusinessClass/ListBoxQuestion.php b/Source/BusinessClass/ListBoxQuestion.php index 3ed692a..abc63f0 100644 --- a/Source/BusinessClass/ListBoxQuestion.php +++ b/Source/BusinessClass/ListBoxQuestion.php @@ -25,12 +25,12 @@ class ListBoxQuestion extends BoxQuestion $possibleResponses = $this->getPossibleResponses(); $categories = $this->getCategories(); - $html = "\t\t\t
    + $html = "\t\t\t