mirror of
				https://github.com/pierre42100/ComunicAPI
				synced 2025-11-04 04:04:20 +00:00 
			
		
		
		
	Implemented Survey Object
This commit is contained in:
		
							
								
								
									
										111
									
								
								RestControllers/SurveysController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								RestControllers/SurveysController.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,111 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Restserver controller
 | 
			
		||||
 * 
 | 
			
		||||
 *  Surveys controller
 | 
			
		||||
 * 
 | 
			
		||||
 * @author Pierre HUBERT
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
class SurveysController {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Cancel a response to a survey
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @url POST /surveys/cancel_response
 | 
			
		||||
	 */
 | 
			
		||||
	public function cancel_response(){
 | 
			
		||||
 | 
			
		||||
		user_login_required();
 | 
			
		||||
 | 
			
		||||
		//Get the ID of the survey
 | 
			
		||||
		$surveyID = $this->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!");
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Send a response to a survey
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @url POST /surveys/send_response
 | 
			
		||||
	 */
 | 
			
		||||
	public function send_response(){
 | 
			
		||||
 | 
			
		||||
		user_login_required();
 | 
			
		||||
 | 
			
		||||
		//Get the ID of the survey
 | 
			
		||||
		$surveyID = $this->getSurveyIDFromPostID("postID");
 | 
			
		||||
 | 
			
		||||
		//Get the ID of the response of the user
 | 
			
		||||
		if(!isset($_POST['choiceID']))
 | 
			
		||||
			Rest_fatal_error(401, "Please specify the ID of your choice in your request!");
 | 
			
		||||
		$choiceID = (int) $_POST['choiceID'];
 | 
			
		||||
 | 
			
		||||
		//Try to cancel the user's previous response to the survey
 | 
			
		||||
		if(!components()->survey->cancel_response($surveyID, userID))
 | 
			
		||||
			Rest_fatal_error(500, "Couldn't cancel user previous response to the survey !");
 | 
			
		||||
		
 | 
			
		||||
		//Check if the user choice exists or not
 | 
			
		||||
		if(!components()->survey->choice_exists($surveyID, $choiceID))
 | 
			
		||||
			Rest_fatal_error(404, "Specified response does not exists!");
 | 
			
		||||
		
 | 
			
		||||
		//Save the answer
 | 
			
		||||
		if(!components()->survey->send_response(userID, $surveyID, $choiceID))
 | 
			
		||||
			Rest_fatal_error(500, "An error occured while trying to save response to the survey!");
 | 
			
		||||
		
 | 
			
		||||
		//Success
 | 
			
		||||
		return array("success" => "User response has been saved!");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * 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;
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Parse a survey object into a valid API entry
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param Survey $survey The survey object to convert
 | 
			
		||||
	 * @return array Generated API entry
 | 
			
		||||
	 */
 | 
			
		||||
	public static function SurveyToAPI(Survey $survey) : array {
 | 
			
		||||
 | 
			
		||||
		$data = array();
 | 
			
		||||
 | 
			
		||||
		$data["ID"] = $survey->get_id();
 | 
			
		||||
		$data["userID"] = $survey->get_userID();
 | 
			
		||||
		$data["postID"] = $survey->get_postID();
 | 
			
		||||
		$data["creation_time"] = $survey->get_time_sent();
 | 
			
		||||
		$data["question"] = $survey->get_question();
 | 
			
		||||
		$data["user_choice"] = $survey->get_user_choice();
 | 
			
		||||
		$data["choices"] = $survey->get_choices();
 | 
			
		||||
 | 
			
		||||
		return $data;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user