diff --git a/RestControllers/surveysController.php b/RestControllers/surveysController.php new file mode 100644 index 0000000..f84c2f0 --- /dev/null +++ b/RestControllers/surveysController.php @@ -0,0 +1,57 @@ +getSurveyIDFromPostID("postID"); + + //Try to cancel the user's response to the survey + if(!components()->survey->cancel_response($surveyID, userID)) + Rest_fatal_error(500, "Couldn't cancel user response to the survey !"); + + //Success + return array("success" => "The response to the survey was cancelled!"); + + } + + /** + * Get the ID of a survey from a $_POST ID + * + * @param string $name The name of the post field that contains + * associated POST ID + * @return int The ID of the target survey + */ + private function getSurveyIDFromPostID(string $name) : int { + + //Get the ID of the target post + $postID = getPostPostIDWithAccess("postID"); + + //Check if a survey is associated with the post + $surveyID = components()->survey->get_id($postID); + + //Check for errors + if($surveyID == 0) + Rest_fatal_error(401, "No survey was found with the specified post !"); + + //Return survey ID + return $surveyID; + + } + +} \ No newline at end of file diff --git a/classes/components/survey.php b/classes/components/survey.php index 5a72ea9..7ac5648 100644 --- a/classes/components/survey.php +++ b/classes/components/survey.php @@ -128,6 +128,22 @@ class Survey { return $results[0]["ID"]; } + /** + * Cancel the response of a user to a survey + * + * @param int $surveyID The ID of the target survey + * @param int $userID The ID of the user removing his response + * @return bool FALSE in case of failure / TRUE in case of success + */ + public function cancel_response(int $surveyID, int $userID) : bool { + + //Perform a request on the database + return CS::get()->db->deleteEntry( + $this::SURVEY_RESPONSE_TABLE, + "ID_sondage = ? AND ID_utilisateurs = ?", + array($surveyID, $userID)); + } + /** * Delete the survey associated to a post *