From f06fec639e1a34da8e0a32419721686f4b75fb85 Mon Sep 17 00:00:00 2001 From: "dorian.hodin" Date: Mon, 20 Mar 2023 16:09:59 +0100 Subject: [PATCH] Delete Gateway, call API on delete function --- .gitignore | 1 + Source/API/script/Gateway/GatewayAdmin.php | 40 ---- Source/API/script/Gateway/GatewayForm.php | 191 ------------------ Source/API/script/Gateway/GatewayKeyword.php | 124 ------------ .../GatewayListResponseOfCandidate.php | 127 ------------ .../Gateway/GatewayPossibleResponse.php | 79 -------- Source/API/script/Gateway/GatewayQuestion.php | 189 ----------------- Source/API/script/Gateway/GatewayResponse.php | 131 ------------ Source/Model/ModelAdmin.php | 64 +++++- 9 files changed, 56 insertions(+), 890 deletions(-) create mode 100644 .gitignore delete mode 100644 Source/API/script/Gateway/GatewayAdmin.php delete mode 100644 Source/API/script/Gateway/GatewayForm.php delete mode 100644 Source/API/script/Gateway/GatewayKeyword.php delete mode 100644 Source/API/script/Gateway/GatewayListResponseOfCandidate.php delete mode 100644 Source/API/script/Gateway/GatewayPossibleResponse.php delete mode 100644 Source/API/script/Gateway/GatewayQuestion.php delete mode 100644 Source/API/script/Gateway/GatewayResponse.php diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0a9f463 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/Source/Config/vendor/ diff --git a/Source/API/script/Gateway/GatewayAdmin.php b/Source/API/script/Gateway/GatewayAdmin.php deleted file mode 100644 index 6952c29..0000000 --- a/Source/API/script/Gateway/GatewayAdmin.php +++ /dev/null @@ -1,40 +0,0 @@ -connection = connect(); - } - - /** - * Permet de récupérer le mot de passe de l'administrateur en fonction de son login. - * @param String $login Le login de l'administrateur. - * @return String|null Le mot de passe de l'administrateur ou null si l'administrateur n'existe pas. - */ - - public function getPasswordWithLogin(String $login) - { - $query = "SELECT password FROM ADMIN WHERE login = :login"; - $this->connection->executeQuery($query, array( - ':login' => array($login, PDO::PARAM_STR) - )); - $result = $this->connection->getResults(); - if(empty($result)) - return null; - return $result[0]['password']; - } -} \ No newline at end of file diff --git a/Source/API/script/Gateway/GatewayForm.php b/Source/API/script/Gateway/GatewayForm.php deleted file mode 100644 index 5bfec04..0000000 --- a/Source/API/script/Gateway/GatewayForm.php +++ /dev/null @@ -1,191 +0,0 @@ -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 string $title Titre du formulaire que l'on veut sauvegarder - * @param string $desc Description du formulaire que l'on veut sauvegarder - * - * @return void - */ - public function insertForm(string $title, string $desc): void - { - if (empty($this->getForm())) { - $query = "INSERT INTO Form(title, description) VALUES(:title, :desc)"; - $this->connection->executeQuery($query, array( - ':title' => array($title, PDO::PARAM_STR), - ':desc' => array($desc, PDO::PARAM_STR) - )); - } - } - - /** - * 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"; - $this->connection->executeQuery($query); - - return $this->connection->getResults(); - } - - /** - * Permet de supprimer le formulaire dont l'id est le même que le formulaire passé en paramètre. - * - * @param int $form Id du formulaire que l'on veut supprimer de la base de donnée - * - * @return void - */ - public function deleteForm(int $form): void - { - $query = "DELETE FROM Form WHERE id = :id"; - $this->connection->executeQuery($query, array( - ':id' => array($form, PDO::PARAM_INT) - )); - } - - /** - * 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 - FROM Propose p, PossibleResponse pr - WHERE p.question = :id AND p.possibleResponse = pr.id - AND pr.content = :response"; - $this->connection->executeQuery($query, array( - ':id' => array($idQuestion, PDO::PARAM_INT), - ':response' => array($response, PDO::PARAM_STR) - )); - - $idPossibleResponse = $this->connection->getResults()[0][0]; - - $query = "INSERT INTO Reference(possibleResponse, keyword) VALUES(:possibleResponse, :keyword)"; - $this->connection->executeQuery($query, array( - ':possibleResponse' => array($idPossibleResponse, PDO::PARAM_INT), - ':keyword' => array($keyword, PDO::PARAM_STR) - )); - } - - /** - * 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 int $question Id de la question qui contient la réponse - * - * @return void - */ - public function deleteKeywordFromQuestion(string $keyword, string $response, int $question): void - { - $query = "SELECT pr.id FROM Propose p, PossibleResponse r - WHERE p.question = :id AND p.possibleResponse = pr.id - AND pr.content = :response"; - $this->connection->executeQuery($query, array( - ':id' => array($question, PDO::PARAM_INT), - ':response' => array($response, PDO::PARAM_STR) - )); - - $idPossibleResponse = $this->connection->getResults()[0][0]; - - $query = "DELETE FROM Reference WHERE response = :idResponse AND keyword = :idKeword"; - $this->connection->executeQuery($query, array( - ':idResponse' => array($idPossibleResponse, PDO::PARAM_INT), - ':idKeword' => array($keyword, PDO::PARAM_INT) - )); - } - - /** - * Permet de modifier le titre du formulaire sauvé dans la base de donnée. - * - * @param string $title Nouveau titre - * @param int $form Id du formulaire que l'on veut modifier - * - * @return void - */ - public function updateTitleToForm(string $title, int $form): void - { - $query = "UPDATE Form SET title = :title WHERE id = :id"; - $this->connection->executeQuery($query, array( - ':title' => array($title, PDO::PARAM_STR), - ':id' => array($form, PDO::PARAM_INT) - )); - } - - /** - * Permet de modifier la description du formulaire sauvé dans la base de donnée. - * - * @param string $description Nouvelle description - * @param int $form Id du formulaire que l'on veut modifier - * - * @return void - */ - public function updateDescriptionToForm(string $description, int $form): void - { - $query = "UPDATE Form SET title = :title WHERE description = :description"; - $this->connection->executeQuery($query, array( - ':description' => array($description, PDO::PARAM_STR), - ':id' => array($form, PDO::PARAM_INT) - )); - } - - /** - * Permet de supprimer la description du formulaire dans la base de donnée en le remplaçant par une chaine vide. - * - * @param int $form Id du formulaire que l'on veut modifier - * - * @return void - */ - public function deleteDescriptionToForm(int $form): void - { - $query = "UPDATE Form SET title = :title WHERE description = :description"; - $this->connection->executeQuery($query, array( - ':description' => array('', PDO::PARAM_STR), - ':id' => array($form, PDO::PARAM_INT) - )); - } - - /** - * Permet de vérifier si un formulaire est présent dans la base de donnée - * - * @return bool - */ - public function existsForm(): bool - { - $query = "SELECT * FROM Form"; - $this->connection->executeQuery($query); - return !empty($this->connection->getResults()); - } -} diff --git a/Source/API/script/Gateway/GatewayKeyword.php b/Source/API/script/Gateway/GatewayKeyword.php deleted file mode 100644 index 4a08f44..0000000 --- a/Source/API/script/Gateway/GatewayKeyword.php +++ /dev/null @@ -1,124 +0,0 @@ -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)"; - $this->connection->executeQuery($query, array( - ':word' => array($keyword, PDO::PARAM_STR) - )); - } - - /** - * 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"; - $this->connection->executeQuery($query, array( - ':word' => array($keyword, PDO::PARAM_STR) - )); - } - - /** - * 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"; - $this->connection->executeQuery($query); - - 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 - WHERE k.word = r.keyword AND r.possibleResponse = :id"; - $this->connection->executeQuery($query, array( - ':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, Categorize 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"]; - } - - return $tab; - } -} diff --git a/Source/API/script/Gateway/GatewayListResponseOfCandidate.php b/Source/API/script/Gateway/GatewayListResponseOfCandidate.php deleted file mode 100644 index 6f9d30e..0000000 --- a/Source/API/script/Gateway/GatewayListResponseOfCandidate.php +++ /dev/null @@ -1,127 +0,0 @@ -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(); - $gatewayKeyword = new GatewayKeyword(); - $tabKeywords = []; - - $query = "SELECT * FROM ListResponsesOfCandidate WHERE id = :id"; - $this->connection->executeQuery($query, array( - ':id' => array($idListResponse, PDO::PARAM_INT) - )); - - $questionList = $this->connection->getResults()[0]; - - $responses = $gatewayResponse->getResponsesByIdListCandidate($questionList['id']); - - foreach ($responses as $row) { - $tabKeywords[] = $gatewayKeyword->getKeywordsContentByCategorieze($row['id']); - } - - 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"; - $this->connection->executeQuery($query); - - return $this->connection->getResults(); - } - - /** - * 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(); - foreach ($gatewayResponse->getResponsesIdByIdListCandidate($id) as $response) { - $gatewayResponse->deleteResponseById($response['id']); - } - $query = "DELETE FROM ListResponsesOfCandidate WHERE id = :id"; - $this->connection->executeQuery($query, array( - 'id' => array($id, PDO::PARAM_INT) - )); - } - - /** - * 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(); - - $query = "INSERT INTO ListResponsesOfCandidate(date, titleForm) VALUES(:date, :titleForm)"; - $this->connection->executeQuery($query, array( - ':date' => array(date('Y-m-d H:i:s'), PDO::PARAM_STR), - ':titleForm' => array($titleForm, PDO::PARAM_STR) - )); - - $idListQuestion = $this->connection->lastInsertId(); - - for ($i = 0; $i < count($answer); $i++) { - $question = $gatewayQuestion->getQuestionContentById($id[$i]); - $idResponse = $gatewayResponse->insertResponse($question, $answer[$i], $category[$i]); - - $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) - )); - } - } -} diff --git a/Source/API/script/Gateway/GatewayPossibleResponse.php b/Source/API/script/Gateway/GatewayPossibleResponse.php deleted file mode 100644 index ce1cd71..0000000 --- a/Source/API/script/Gateway/GatewayPossibleResponse.php +++ /dev/null @@ -1,79 +0,0 @@ -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 - WHERE p.question = :questionId AND p.possibleResponse = pr.id"; - $this->connection->executeQuery($query, array( - ':questionId' => array($idQuestion, PDO::PARAM_INT) - )); - - 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)"; - $this->connection->executeQuery($query, array( - ':content' => array($contentPossibleResponse, PDO::PARAM_STR) - )); - - 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 deleted file mode 100644 index 323aaa7..0000000 --- a/Source/API/script/Gateway/GatewayQuestion.php +++ /dev/null @@ -1,189 +0,0 @@ -connection = connect(); - } - - /** - * Permet d'ajouter une question dans la base de donnée. - * - * @param array $question Information sur la question ajouter [type, content] - * @param int $idForm Id du formulaire associer - * - * @return int Id de la question ajouté en base - */ - public function addQuestion(array $question, int $idForm): int - { - $query = "INSERT INTO Question(content, type, form) VALUES(:content, :type, :form)"; - $this->connection->executeQuery($query, array( - ':content' => array($question[1], PDO::PARAM_STR), - ':type' => array($question[0], PDO::PARAM_STR), - ':form' => array($idForm, PDO::PARAM_INT) - )); - - 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(); - $idPossibleResponse = $gatewayPossibleResponse->insertPossibleResponse($response); - - $query = "INSERT INTO Propose(question, possibleResponse) VALUES(:question, :possibleResponse)"; - $this->connection->executeQuery($query, array( - ':question' => array($idQuestion, PDO::PARAM_INT), - ':possibleResponse' => array($idPossibleResponse, PDO::PARAM_INT) - )); - - - foreach ($categories as $keyword) { - $gatewayForm = new GatewayForm(); - $gatewayForm->assignKeywordToQuestion($keyword, $response, $idQuestion); - } - - return $idQuestion; - } - - /** - * Permet de supprimer une question dans la base ainsi que ses dépendances - * - * @param int $idQuestion Id de la question à supprimer - * @param string $type Type de la question à supprimer - * - * @return void - */ - public function deleteQuestion(int $idQuestion, string $type): void - { - if ($type != "BusinessClass\TextQuestion") { - $query = "DELETE FROM Propose WHERE question = :id"; - $this->connection->executeQuery($query, array( - ':id' => array($idQuestion, PDO::PARAM_INT) - )); - $gatewayPossibleResponse = new GatewayPossibleResponse(); - $listPossibleResponse = $gatewayPossibleResponse->getPossibleResponseByQuestion($idQuestion); - foreach ($listPossibleResponse as $row) { - $gatewayPossibleResponse->deletePossibleResponse($row["id"]); - } - } - - $query = "DELETE FROM Question WHERE id = :id"; - $this->connection->executeQuery($query, array( - ':id' => array($idQuestion, PDO::PARAM_INT) - )); - } - - /** - * Permet de modifier dans la base de données les informations de la question. - * - * @param array $question Question modifier à changer en base [id, type, contente] - * - * @return void - */ - public function updateQuestion(array $question): void - { - $query = "UPDATE Question SET content = :content, type = :type WHERE id = :id"; - $this->connection->executeQuery($query, array( - ':content' => array($question[2], PDO::PARAM_STR), - ':type' => array($question[1], PDO::PARAM_STR), - ':id' => array($question[0], PDO::PARAM_STR) - )); - } - - /** - * 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"; - $this->connection->executeQuery($query, array( - ':fom' => array($idForm, PDO::PARAM_INT) - )); - - $listQuestions = $this->connection->getResults(); - $possibleResponsesContent = []; - $keywordsResponses = []; - $gatewayKeyword = new GatewayKeyword(); - $gatewayPossibleResponse = new GatewayPossibleResponse(); - - if (!empty($listQuestions)) { - - for ($i = 0; $i < count($listQuestions); $i++) { - - if ($listQuestions[$i]["type"] != "BusinessClass/TextQuestion") { - $idQuestion = $listQuestions[$i]["id"]; - $possibleResponses = $gatewayPossibleResponse->getPossibleResponseByQuestion($idQuestion); - $tmpTabKeyword = []; - $tmpTabPossibleResponse = []; - - foreach ($possibleResponses as $row) { - $tmpTabKeyword[] = $gatewayKeyword->getKeywordsContentByReference($row["id"]); - $tmpTabPossibleResponse[] = $row["content"]; - } - - $possibleResponsesContent[] = $tmpTabPossibleResponse; - $keywordsResponses[] = $tmpTabKeyword; - } else { - $possibleResponsesContent[] = null; - $keywordsResponses[] = null; - } - } - return array($listQuestions, $possibleResponsesContent, $keywordsResponses); - } - 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"; - $this->connection->executeQuery($query, array( - ':id' => array($id, PDO::PARAM_INT) - )); - - return $this->connection->getResults()[0][0]; - } -} diff --git a/Source/API/script/Gateway/GatewayResponse.php b/Source/API/script/Gateway/GatewayResponse.php deleted file mode 100644 index 21a9ed4..0000000 --- a/Source/API/script/Gateway/GatewayResponse.php +++ /dev/null @@ -1,131 +0,0 @@ -connection = connect(); - } - - /** - * 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->getResponsesByIdListCandidate($listResponsesOfCandidateId); - $tab = []; - foreach ($result as $row) { - $tab[] = (new GatewayKeyword())->getKeywordsContentByCategorieze($row['id']); - } - - 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.responsesCandidate = :id AND r.id = s.response"; - $this->connection->executeQuery($query, array( - ':id' => array($listResponsesOfCandidateId, PDO::PARAM_INT) - )); - return $this->connection->getResults(); - } - - /** - * 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.responsesCandidate = :id AND r.id = s.response"; - $this->connection->executeQuery($query, array( - ':id' => array($listResponsesOfCandidateId, 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"; - $this->connection->executeQuery($query, array( - ':id' => array($responseId, PDO::PARAM_INT) - )); - - $query = "DELETE FROM Submit WHERE response = :id"; - $this->connection->executeQuery($query, array( - ':id' => array($responseId, PDO::PARAM_INT) - )); - - $query = "DELETE FROM Response WHERE id = :id"; - $this->connection->executeQuery($query, array( - ':id' => array($responseId, PDO::PARAM_INT) - )); - } - - /** - * 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)"; - $this->connection->executeQuery($query, array( - ':content' => array($content, PDO::PARAM_STR), - ':questionContent' => array($questionContent, PDO::PARAM_STR) - )); - - $idResponse = $this->connection->lastInsertId(); - - foreach ($category as $keyword) { - $query = "INSERT INTO Categorize (response, keyword) VALUES(:response, :keyword)"; - $this->connection->executeQuery($query, array( - ':response' => array($idResponse, PDO::PARAM_STR), - ':keyword' => array($keyword, PDO::PARAM_STR) - )); - } - - return $idResponse; - } -} diff --git a/Source/Model/ModelAdmin.php b/Source/Model/ModelAdmin.php index b727a61..0530e0d 100644 --- a/Source/Model/ModelAdmin.php +++ b/Source/Model/ModelAdmin.php @@ -2,12 +2,10 @@ namespace Model; -use API\script\Gateway\GatewayForm; -use API\script\Gateway\GatewayKeyword; -use API\script\Gateway\GatewayListResponseOfCandidate; -use API\script\Gateway\GatewayPossibleResponse; -use API\script\Gateway\GatewayQuestion; use BusinessClass\Form; +use Exception; +use GuzzleHttp\Client; +use GuzzleHttp\Exception\GuzzleException; use PDOException; /** @@ -16,6 +14,13 @@ use PDOException; */ class ModelAdmin { + + private Client $client; + + public function __construct(){ + $this->client = new Client(); + } + public function goToAdmin(): void { global $rep, $views; @@ -51,12 +56,23 @@ class ModelAdmin * Permet de supprimer une question du formulaire * * @return void + * @throws Exception */ public function deleteQuestion():void { $idQuestion = $_POST["idQuestion"]; $type = $_POST["type"]; - (new GatewayQuestion())->deleteQuestion($idQuestion, $type); + try { + $res = $this->client->request('DELETE', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/deleteQuestion? + classQuestion='.$type.'& + id='.$idQuestion + ); + if ($res->getStatusCode()!=200){ + throw new Exception('DeleteQuestion failed'); + } + }catch (GuzzleException $g){ + throw new Exception($g->getMessage(),$g->getCode(),$g); + } } /** @@ -79,10 +95,20 @@ class ModelAdmin * Permet de supprimer une possible réponse à une question * * @return void + * @throws Exception */ public function deleteResponse(): void { - (new GatewayPossibleResponse())->deletePossibleResponse($_POST["possibleResponse"]); + try { + $res = $this->client->request('DELETE', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/deletePossibleResponse? + id='.$_POST["possibleResponse"] + ); + if ($res->getStatusCode()!=200){ + throw new Exception('DeletePossibleResponse failed'); + } + }catch (GuzzleException $g){ + throw new Exception($g->getMessage(),$g->getCode(),$g); + } } /** @@ -114,10 +140,20 @@ class ModelAdmin * Permet de supprimer une catégorie (mot-clef) * * @return void + * @throws Exception */ public function deleteKeyword(): void { - (new GatewayKeyword())->deleteKeyword($_POST["idCateg"]); + try { + $res = $this->client->request('DELETE', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/deleteKeyword? + keyword='.$_POST["idCateg"] + ); + if ($res->getStatusCode()!=200){ + throw new Exception('DeleteKeyword failed'); + } + }catch (GuzzleException $g){ + throw new Exception($g->getMessage(),$g->getCode(),$g); + } } /** @@ -174,9 +210,19 @@ class ModelAdmin * Permet de supprimer les réponses d'une personne d'un formulaire * * @return void + * @throws Exception */ public function deleteResponsesCandidate(): void { - (new GatewayListResponseOfCandidate())->deleteListResponseOfCandidate($_POST["idResponseCandidate"]); + try { + $res = $this->client->request('DELETE', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/deleteListResponseOfCandidate? + id='.$_POST["idResponseCandidate"] + ); + if ($res->getStatusCode()!=200){ + throw new Exception('DeleteListResponseOfCandidate failed'); + } + }catch (GuzzleException $g){ + throw new Exception($g->getMessage(),$g->getCode(),$g); + } } }