You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SAE4.01_FORMULAIRE/Source/Controller/ControllerAdmin.php

161 lines
4.5 KiB

<?php
namespace Controller;
use Exception;
use InvalidArgumentException;
use Model\ModelAdmin;
/**
* Permet de controller les réponses à fournir en fonction des actions passer dans l'URL
* par l'administrateur
*/
class ControllerAdmin
{
/**
* Ajoute une question grâce à son contenu et son type récupéré dans le tableau $_POST
* Si la question n'est pas une question texte, on appelle un nouveau formulaire permettant
* d'ajouter des réponses prédéfinies à la question.
*
* @return void
* @throws Exception
*/
public function addQuestion(): void
{
$type = $_POST['type'];
if (empty($_POST['type'])) {
throw new InvalidArgumentException('$_POST[\'type\'] is empty');
}
$idQuestion = (new ModelAdmin())->addQuestion();
if (strcmp($type, "BusinessClass\TextQuestion") == 0) {
$this->goToQuestions();
} else {
$categories = (new ModelAdmin())->getCategories();
$questionContent = $_POST['question'];
global $rep, $views;
require_once($rep.$views['possibleResponsesForm']);
}
}
/**
* Ajoute une possibilité de réponse à une question, on assigne également cette réponse
* à des catégories. On propose ensuite à l'utilisateur de continuer l'ajout d'autres réponses.
*
* @return void
* @throws Exception
*/
public function addResponse(): void
{
if (empty($_POST['idQuestion'] || empty($_POST['question']) || empty($_POST['type']))) {
throw new InvalidArgumentException('$_POST parameters is missing');
}
(new ModelAdmin())->addResponse();
$categories = (new ModelAdmin())->getCategories();
$idQuestion = $_POST['idQuestion'];
$questionContent = $_POST['question'];
$type = $_POST['type'];
global $rep, $views;
require_once($rep.$views['continue']);
}
/**
* Permet de proposer à l'utiliser de continuer ou non à ajouter des possibilités de réponses à l'aide
* de la fonction addResponse(). Sinon, il retourne à la page administration.
*
* @return void
* @throws Exception
*/
public function continueResponse(): void
{
if (empty($_POST['choose'] || empty($_POST['idQuestion']) || empty($_POST['type']) || empty($_POST['question']))) {
throw new InvalidArgumentException('$_POST parameters is missing');
}
$choose = $_POST['choose'];
if ($choose == "Oui") {
$idQuestion = $_POST['idQuestion'];
$categories = (new ModelAdmin())->getCategories();
$questionContent = $_POST['question'];
$type = $_POST['type'];
global $rep, $views;
require_once($rep.$views['possibleResponsesForm']);
} else {
$this->goToQuestions();
}
}
/**
* Permet de créer un nouveau formulaire avec un titre et une description.
*
* @return void
* @throws Exception
*/
public function createForm(): void
{
(new ModelAdmin())->createForm();
}
/**
* Permet d'ajouter une catégorie (mot-clef) à notre application
*
* @return void
* @throws Exception
*/
public function addKeyword(): void
{
(new ModelAdmin())->addKeyword();
$this->goToCategories();
}
/**
* Permet de naviguer jusqu'à la page de gestion des catégories
*
* @return void
* @throws Exception
*/
public function goToCategories(): void
{
$categories = (new ModelAdmin())->getCategories();
global $rep, $views;
require_once($rep.$views['categories']);
}
/**
* Permet de naviguer jusqu'à la page de gestion des questions
*
* @return void
* @throws Exception
*/
public function goToQuestions(): void
{
$questions = (new ModelAdmin())->getQuestions();
global $rep, $views;
require_once($rep.$views['questions']);
}
/**
* Permet de naviguer jusqu'à la page de gestion des réponses
*
* @return void
* @throws Exception
*/
public function goToResponses(): void
{
$responsesCandidate = (new ModelAdmin())->getResponsesCandidate();
global $rep, $views;
require_once($rep.$views['responses']);
}
public function goToAdministration(): void
{
global $rep, $views;
require_once($rep.$views['admin']);
}
}