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 = "