client = new Client(); } /** * Permet de soumettre et d'envoyer la réponse à un formulaire. * * @return void * @throws Exception */ public function submitForm(): void { $answersAndCategories = $_POST['answers']; $dataIds = null; if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'submitForm') { $dataIdsJson = $_POST['data_ids']; $dataIds = json_decode($dataIdsJson); } $answer = []; $category = []; $questionsId = []; foreach ($answersAndCategories as $answerAndCategory) { $exploded = explode("||",$answerAndCategory); if( count($exploded) == 3 ){ $questionsId[] = $exploded[0]; $answer[] = $exploded[1]; $categs = $exploded[2]; $categs = explode("_", $categs); array_pop($categs); $category[] = $categs; } else { $questionsId[] = array_shift($dataIds); $answer[] = $answerAndCategory; $category[] = []; } } try { $res = $this->client->request('GET', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/getForm'); if ($res->getStatusCode()!=200){ throw new Exception('GetForm failed'); } $form = json_decode($res->getBody()); $title = $form[0]["title"]; $res =$this->client->request('POST', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/insertListResponsesOfCandidate? id='.implode(",",$questionsId).'& answer='.implode(",",$answer).'& category='.implode(",",$category).'& titleForm='.$title ); if ($res->getStatusCode()!=200){ throw new Exception('InsertListResponsesOfCandidate failed'); } }catch (GuzzleException $g){ throw new Exception($g->getMessage(),$g->getCode(),$g); } } /** * Permet de récupérer le code html à afficher dans la page du formulaire, * on récupère donc le formulaire et toutes les questions qu'il contient. * On les traduit en code HTML puis on le retourne. On utilise une Factory * pour récupérer les questions. * * @return string * @throws Exception */ public function getForm(): string { try { $res = $this->client->request('GET', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/getForm'); if ($res->getStatusCode()!=200){ throw new Exception('GetForm failed'); } $form = json_decode($res->getBody()); if (empty($form)) { return "PAS DE FORMULAIRE\n"; } $title = $form[0]['title']; $description = $form[0]['description']; $res = $this->client->request('GET', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/getAllQuestions? idForm='.$form[0]['id'] ); if ($res->getStatusCode()!=200){ throw new Exception('GetAllQuestion failed'); } $questionsTab = json_decode($res->getBody()); }catch (GuzzleException $g){ throw new Exception($g->getMessage(),$g->getCode(),$g); } $questions = Factory::getBuiltObjects($questionsTab, "Question"); $nbQuestions = count($questions); $time = round(($nbQuestions * 20)/60); $html = "

$title

"; $html .= str_repeat("", sizeof($questions)); $html.= "
"; foreach ($questions as $question) { $html.= $question->printStrategy()."\n"; } if (count($questions) > 0) { $html.= "
text-message

Souhaitez-vous envoyer vos réponses ? \n

"; } else { $html.= "\t\t\n \t\n"; } return $html; } /** * @throws InvalidLoginOrPasswordException * @throws InexistantLoginException * @throws Exception */ public function login() :void { global $rep,$views,$sel; $password = Clean::simpleString($_REQUEST['password']); $identifiant = Clean::simpleString($_REQUEST['login']); try { if (Validate::login($identifiant) && Validate::password($password)) { $res = $this->client->request('GET', 'https://codefirst.iut.uca.fr/containers/Temoignages-deploy_api_form/getPasswordWithLogin? login='.$identifiant ); if ($res->getStatusCode()!=200){ throw new Exception('GetPasswordWithLogin failed'); } $passwordbdd = json_decode($res->getBody()); if ($passwordbdd == null) { throw new InexistantLoginException(); } if (password_verify($sel . $password, $passwordbdd)) { $_SESSION['role'] = 'Admin'; } else { $_SESSION['role'] = 'Visitor'; } } else { throw new InvalidLoginOrPasswordException(); } }catch (GuzzleException $g){ throw new Exception($g->getMessage(),$g->getCode(),$g); } } }