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(); $query = "SELECT * FROM ListResponsesOfCandidate WHERE id = :id"; $this->connection->executeQuery($query, array( ':id' => array($idListResponse, PDO::PARAM_INT) )); $questionList = $this->connection->getResults()[0]; $result = $gatewayResponse->getCatgoriezeOfResponsesIdByIdListCandidate($questionList['id']); 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"; $this->connection->executeQuery($query); return $this->connection->getResults(); } /** * 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(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_STR) )); } /** * 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(array $id, array $answer, array $category, string $titleForm) { $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) )); } } }