From aac0f995929d203ab9852c247b26f7e98397fddf Mon Sep 17 00:00:00 2001 From: "dorian.hodin" Date: Mon, 13 Mar 2023 10:11:42 +0100 Subject: [PATCH] Finalize call of API from ModelAdmin.php, cant test yet, remove Gateway --- .idea/SAE4.01_FORMULAIRE.iml | 4 +- .idea/php.xml | 2 +- Source/API/script/Gateway/GatewayAdmin.php | 40 ---- Source/API/script/Gateway/GatewayForm.php | 118 ----------- Source/API/script/Gateway/GatewayKeyword.php | 124 ----------- .../GatewayListResponseOfCandidate.php | 129 ------------ .../Gateway/GatewayPossibleResponse.php | 79 ------- Source/API/script/Gateway/GatewayQuestion.php | 193 ------------------ Source/API/script/Gateway/GatewayResponse.php | 142 ------------- Source/Config/composer.json | 1 - Source/Config/composer.lock | 165 +-------------- Source/Model/ModelAdmin.php | 49 ++--- 12 files changed, 31 insertions(+), 1015 deletions(-) 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/.idea/SAE4.01_FORMULAIRE.iml b/.idea/SAE4.01_FORMULAIRE.iml index c956989..d05557a 100644 --- a/.idea/SAE4.01_FORMULAIRE.iml +++ b/.idea/SAE4.01_FORMULAIRE.iml @@ -1,7 +1,9 @@ - + + + diff --git a/.idea/php.xml b/.idea/php.xml index b673eaa..639f74d 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -9,7 +9,7 @@ - + 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 dafd45b..0000000 --- a/Source/API/script/Gateway/GatewayForm.php +++ /dev/null @@ -1,118 +0,0 @@ -connection = connect(); - } - - public function insertForm(Form $form): void - { - if (empty($this->getForm())) { - $query = "INSERT INTO Form(title, description) VALUES(:title, :desc)"; - $this->connection->executeQuery($query, array( - ':title' => array($form->getTitle(), PDO::PARAM_STR), - ':desc' => array($form->getDescription(), PDO::PARAM_STR) - )); - } - } - - public function getForm(): array - { - $query = "SELECT * FROM Form"; - $this->connection->executeQuery($query); - - return $this->connection->getResults(); - } - - public function deleteForm(Form $form): void - { - $query = "DELETE FROM Form WHERE id = :id"; - $this->connection->executeQuery($query, array( - ':id' => array($form->getId(), PDO::PARAM_INT) - )); - } - - 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) - )); - } - - public function deleteKeywordFromQuestion(string $keyword, string $response, Question $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->getId(), 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) - )); - } - - public function updateTitleToForm(string $title, Form $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->getId(), PDO::PARAM_INT) - )); - } - - public function updateDescriptionToForm(string $description, Form $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->getId(), PDO::PARAM_INT) - )); - } - - public function deleteDescriptionToForm(Form $form): void - { - $query = "UPDATE Form SET title = :title WHERE description = :descript"; - $this->connection->executeQuery($query, array( - ':descript' => array('', PDO::PARAM_STR), - ':id' => array($form->getId(), PDO::PARAM_INT) - )); - } - - 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 46ffa7a..0000000 --- a/Source/API/script/Gateway/GatewayListResponseOfCandidate.php +++ /dev/null @@ -1,129 +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); - } - - $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 8d0ed0b..0000000 --- a/Source/API/script/Gateway/GatewayQuestion.php +++ /dev/null @@ -1,193 +0,0 @@ -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)"; - $this->connection->executeQuery($query, array( - ':content' => array($question->getContent(), PDO::PARAM_STR), - ':type' => array(get_class($question), 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 Question $question Information de la question à supprimer - * - * @return void - */ - public function deleteQuestion(Question $question): void - { - if (get_class($question) == BoxQuestion::class) { - $query = "DELETE FROM Propose WHERE question = :id"; - $this->connection->executeQuery($query, array( - ':id' => array($question->getId(), PDO::PARAM_INT) - )); - - $listPossibleResponse = $question->getPossibleResponses(); - for ($i = 0; $i < count($listPossibleResponse); $i++) { - $gatewayPossibleResponse = new GatewayPossibleResponse(); - $gatewayPossibleResponse->deletePossibleResponse($listPossibleResponse[$i]->getId()); - } - } - - $query = "DELETE FROM Question WHERE id = :id"; - $this->connection->executeQuery($query, array( - ':id' => array($question->getId(), PDO::PARAM_INT) - )); - } - - /** - * 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"; - $this->connection->executeQuery($query, array( - ':content' => array($question->getContent(), PDO::PARAM_STR), - ':type' => array(get_class($question), PDO::PARAM_STR), - ':frm' => array($question->getForm(), PDO::PARAM_STR), - ':id' => array($question->getId(), 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 12b28bf..0000000 --- a/Source/API/script/Gateway/GatewayResponse.php +++ /dev/null @@ -1,142 +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"; - 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($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"; - $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/Config/composer.json b/Source/Config/composer.json index 73e584d..7e0b92d 100644 --- a/Source/Config/composer.json +++ b/Source/Config/composer.json @@ -2,7 +2,6 @@ "name": "dorian/config", "description": "composer for guzzle client", "require": { - "guzzle/guzzle": "^3.9", "guzzlehttp/psr7": "^2.4", "guzzlehttp/guzzle": "^7.5" } diff --git a/Source/Config/composer.lock b/Source/Config/composer.lock index 630c85c..255bf8a 100644 --- a/Source/Config/composer.lock +++ b/Source/Config/composer.lock @@ -4,108 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "453f177e189a55adc413c1f52956898c", + "content-hash": "3dca324180ba7c8b11cc23a565f02dff", "packages": [ - { - "name": "guzzle/guzzle", - "version": "v3.9.3", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle3.git", - "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9", - "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "php": ">=5.3.3", - "symfony/event-dispatcher": "~2.1" - }, - "replace": { - "guzzle/batch": "self.version", - "guzzle/cache": "self.version", - "guzzle/common": "self.version", - "guzzle/http": "self.version", - "guzzle/inflection": "self.version", - "guzzle/iterator": "self.version", - "guzzle/log": "self.version", - "guzzle/parser": "self.version", - "guzzle/plugin": "self.version", - "guzzle/plugin-async": "self.version", - "guzzle/plugin-backoff": "self.version", - "guzzle/plugin-cache": "self.version", - "guzzle/plugin-cookie": "self.version", - "guzzle/plugin-curlauth": "self.version", - "guzzle/plugin-error-response": "self.version", - "guzzle/plugin-history": "self.version", - "guzzle/plugin-log": "self.version", - "guzzle/plugin-md5": "self.version", - "guzzle/plugin-mock": "self.version", - "guzzle/plugin-oauth": "self.version", - "guzzle/service": "self.version", - "guzzle/stream": "self.version" - }, - "require-dev": { - "doctrine/cache": "~1.3", - "monolog/monolog": "~1.0", - "phpunit/phpunit": "3.7.*", - "psr/log": "~1.0", - "symfony/class-loader": "~2.1", - "zendframework/zend-cache": "2.*,<2.3", - "zendframework/zend-log": "2.*,<2.3" - }, - "suggest": { - "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.9-dev" - } - }, - "autoload": { - "psr-0": { - "Guzzle": "src/", - "Guzzle\\Tests": "tests/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Guzzle Community", - "homepage": "https://github.com/guzzle/guzzle/contributors" - } - ], - "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "support": { - "issues": "https://github.com/guzzle/guzzle3/issues", - "source": "https://github.com/guzzle/guzzle3/tree/master" - }, - "abandoned": "guzzlehttp/guzzle", - "time": "2015-03-18T18:23:50+00:00" - }, { "name": "guzzlehttp/guzzle", "version": "7.5.0", @@ -707,69 +607,6 @@ } ], "time": "2023-03-01T10:25:55+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v2.8.52", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a77e974a5fecb4398833b0709210e3d5e334ffb0", - "reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0", - "shasum": "" - }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^2.0.5|~3.0.0", - "symfony/dependency-injection": "~2.6|~3.0.0", - "symfony/expression-language": "~2.6|~3.0.0", - "symfony/stopwatch": "~2.3|~3.0.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v2.8.50" - }, - "time": "2018-11-21T14:20:20+00:00" } ], "packages-dev": [], diff --git a/Source/Model/ModelAdmin.php b/Source/Model/ModelAdmin.php index 64f2b59..425c162 100644 --- a/Source/Model/ModelAdmin.php +++ b/Source/Model/ModelAdmin.php @@ -6,6 +6,7 @@ use BusinessClass\Form; use Exception; use GuzzleHttp\Client; use GuzzleHttp\Exception\GuzzleException; +use PDOException; /** * Permet de développer les fonctions appelées par le controllerAdmin pour gérer @@ -47,12 +48,10 @@ class ModelAdmin $res = $this->client->request('GET', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/getForm'); $form = json_decode($res->getBody()); if (!empty($form)) { - $res = $this->client->request('POST', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/insertQuestion? + $res = $this->client->request('POST', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/addQuestion? content='.$questionContent.'& classQuestion='.get_class($question).'& - idForm='.$form[0]['id'].'& - listPossibleResponse='.$question->getPossibleResponses().'& - listOfCategories='.$question->getCategories() + idForm='.$form[0]['id'] ); return json_decode($res->getBody()); } @@ -68,9 +67,8 @@ class ModelAdmin * Permet d'ajouter une possibilité de réponse à une question en l'assignant à des catégories. * * @return void + * @throws Exception */ - /* - * TODO: Changer les gateways et savoir qui garder parce que la ça commence à me casser les couilles public function addResponse(): void { $idQuestion = $_POST['idQuestion']; @@ -79,9 +77,17 @@ class ModelAdmin if ($categories == null) { $categories = []; } - (new GatewayQuestion())->insertResponseInQuestion($response, $categories, $idQuestion); + try { + $this->client->request('POST', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/insertResponseInQuestion? + response='.$response.'& + categories='.$categories.'& + $idQuestion='.$idQuestion + ); + }catch (GuzzleException $g){ + throw new Exception($g->getMessage(),$g->getCode(),$g); + } } - */ + /** * Permet de créer un nouveau formulaire en précisant son titre et sa description. @@ -157,22 +163,19 @@ class ModelAdmin */ public function getQuestions(): array { - if((new GatewayForm())->existsForm()) { - $idForm = (new GatewayForm())->getForm()[0]["id"]; - $questionsArray = (new GatewayQuestion())->getAllQuestions($idForm); - return Factory::getBuiltObjects($questionsArray, "Question"); - } - else { - return array(); - } - try { - $res = $this->client->request('GET', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/getForm'); - $idForm = json_decode($res->getBody())[0]["id"]; - $res = $this->client->request('GET', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/getAllQuestions? + try { + $res = $this->client->request('GET', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/existsForm'); + if (json_decode($res->getBody())){ + $res = $this->client->request('GET', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/getForm'); + $idForm = json_decode($res->getBody())[0]["id"]; + $res = $this->client->request('GET', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/getAllQuestions? idForm='.$idForm - ); - $questionsArray = json_decode($res->getBody()); - return Factory::getBuiltObjects($questionsArray, "Question"); + ); + $questionsArray = json_decode($res->getBody()); + return Factory::getBuiltObjects($questionsArray, "Question"); + }else{ + return array(); + } }catch (GuzzleException $g){ throw new Exception($g->getMessage(),$g->getCode(),$g); }