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(