connection = (new ConnectClass)->connect(); }catch(PDOException $e){ throw new PDOException($e->getMessage(), $e->getCode(), $e); } } public function addQuestion(string $contentQuestion, string $classQuestion, int $idForm): int { $query = "INSERT INTO `question`(content, type, form) VALUES(:content, :type, :form)"; $this->connection->executeQuery($query, array( ':content' => array($contentQuestion, PDO::PARAM_STR), ':type' => array($classQuestion, PDO::PARAM_STR), ':form' => array($idForm, PDO::PARAM_INT) )); return $this->connection->lastInsertId(); } public function insertResponseInQuestion(string $response, array $categories, int $idQuestion): void { $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); } } public function deleteQuestion(string $questionClass, int $idQuestion, array $questionGetPossibleResponse): void { if($questionClass == "BoxQuestionAPI") { $query = "DELETE FROM `propose` WHERE question = :id"; $this->connection->executeQuery($query, array( ':id' => array($idQuestion, PDO::PARAM_INT) )); $listPossibleResponse = $questionGetPossibleResponse; 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) )); } } $query = "DELETE FROM `question` WHERE id = :id"; $this->connection->executeQuery($query, array( ':id' => array($idQuestion, PDO::PARAM_INT) )); } public function updateQuestion(string $questionContent, string $questionClass, string $questionGetForm, string $idQuestion): void { $query = "UPDATE `question` SET content = :content, type = :type, form = :form WHERE id = :id"; $this->connection->executeQuery($query, array( ':content' => array($questionContent, PDO::PARAM_STR), ':type' => array($questionClass, PDO::PARAM_STR), ':form' => array($questionGetForm, PDO::PARAM_STR), ':id' => array($idQuestion, PDO::PARAM_STR) )); } public function getAllQuestions(array $idForm): array { $query = "SELECT * FROM `question` WHERE form = :form"; $this->connection->executeQuery($query, array( ':form' => array($idForm[0], 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") { $possibleResponses = $gatewayPossibleResponse->getPossibleResponseByQuestion($listQuestions[$i]["id"]); //$this->connection->getResults(); $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(); } public function getQuestionContentById(int $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]; } }