test Model methods
continuous-integration/drone/push Build is passing Details

AdminInterface
Alexis 2 years ago
parent b730acbf4d
commit 504c7975d2

@ -7,9 +7,9 @@ require_once __DIR__ ."/Connection.php";
function connect() function connect()
{ {
$dsn = "mysql:host=".$_ENV["HOST"].";dbname=".$_ENV["DATABASE"].";"; $dsn = "mysql:host=localhost;dbname=formulaire;charset=utf8";
$login = $_ENV["USER"]; $login = "root";
$password = $_ENV["PASSWORD"]; $password = "root";
try { try {

@ -2,8 +2,6 @@
namespace API\script\Gateway; namespace API\script\Gateway;
include(__DIR__ . "/../Config/config.php");
use API\script\Config\Connection; use API\script\Config\Connection;
use BusinessClass\Form; use BusinessClass\Form;
use BusinessClass\Keyword; use BusinessClass\Keyword;
@ -39,25 +37,26 @@ class GatewayForm
return $this->connection->getResults(); return $this->connection->getResults();
} }
public function assignKeywordToQuestion(Keyword $keyword, string $response, int $idQuestion) public function assignKeywordToQuestion(string $keyword, string $response, int $idQuestion)
{ {
$query = "SELECT pr.id FROM Propose p, PossibleResponse r WHERE p.question = :id AND p.possibleResponse = pr.id AND pr.content = :response"; echo $keyword;
$query = "SELECT pr.id FROM Propose p, PossibleResponse pr WHERE p.question = :id AND p.possibleResponse = pr.id AND pr.content = :response";
$this->connection->executeQuery($query, array( $this->connection->executeQuery($query, array(
':id' => array($idQuestion, PDO::PARAM_STR), ':id' => array($idQuestion, PDO::PARAM_STR),
':response' => array($response, PDO::PARAM_STR) ':response' => array($response, PDO::PARAM_STR)
)); ));
$idPossibleResponse = $this->connection->getResults()[0][0];
$idPossibleResponse = $this->connection->getResults()[0][0];
$query = "INSERT INTO Reference(possibleResponse, keyword) VALUES(:possibleResponse, :keyword)"; $query = "INSERT INTO Reference(possibleResponse, keyword) VALUES(:possibleResponse, :keyword)";
$this->connection->executeQuery($query, array( $this->connection->executeQuery($query, array(
':possibleResponse' => array($idPossibleResponse, PDO::PARAM_INT), ':possibleResponse' => array($idPossibleResponse, PDO::PARAM_INT),
':keyword' => array($keyword->getId(), PDO::PARAM_INT) ':keyword' => array($keyword, PDO::PARAM_STR)
)); ));
} }
public function deleteKeywordFromQuestion(Keyword $keyword, string $response, Question $question) public function deleteKeywordFromQuestion(string $keyword, string $response, Question $question)
{ {
$query = "SELECT pr.id FROM Propose p, PossibleResponse r WHERE p.question = :id AND p.possibleResponse = pr.id AND pr.content = :response"; $query = "SELECT pr.id FROM Propose p, PossibleResponse r WHERE p.question = :id AND p.possibleResponse = pr.id AND pr.content = :response";
$this->connection->executeQuery($query, array( $this->connection->executeQuery($query, array(

@ -2,8 +2,6 @@
namespace API\script\Gateway; namespace API\script\Gateway;
include(__DIR__ . "/../Config/config.php");
use API\script\Config\Connection; use API\script\Config\Connection;
use BusinessClass\Keyword; use BusinessClass\Keyword;

@ -2,11 +2,10 @@
namespace API\script\Gateway; namespace API\script\Gateway;
include(__DIR__ . "/../Config/config.php");
use API\script\Config\Connection; use API\script\Config\Connection;
use BusinessClass\BoxQuestion; use BusinessClass\BoxQuestion;
use BusinessClass\Question; use BusinessClass\Question;
use BusinessClass\TextQuestion;
use PDO; use PDO;
class GatewayQuestion class GatewayQuestion
@ -29,7 +28,7 @@ class GatewayQuestion
$idQuestion = $this->connection->lastInsertId(); $idQuestion = $this->connection->lastInsertId();
if(get_class($question) == BoxQuestion::class){ if(get_class($question) != TextQuestion::class){
$listPossibleResponse = $question->getPossibleResponses(); $listPossibleResponse = $question->getPossibleResponses();
for($i = 0; $i < count($listPossibleResponse); $i++){ for($i = 0; $i < count($listPossibleResponse); $i++){
@ -49,11 +48,12 @@ class GatewayQuestion
foreach ($question->getCategories()[$i] as $keyword){ foreach ($question->getCategories()[$i] as $keyword){
$gatewayForm = new GatewayForm($this->connection); $gatewayForm = new GatewayForm();
$gatewayForm->assignKeywordToQuestion($keyword, $listPossibleResponse[$i], $idQuestion); $gatewayForm->assignKeywordToQuestion($keyword, $listPossibleResponse[$i], $idQuestion);
} }
} }
} }
} }
public function deleteQuestion(Question $question): void public function deleteQuestion(Question $question): void
@ -97,40 +97,51 @@ class GatewayQuestion
public function getAllQuestions(string $idForm): array //revoie un array contenant trois qui pour chaque indice commun de ces 3 array une question, sa liste de reponse possible et sa liste de keyword associer au réponse. les deux autres sont null si c'est une textBox public function getAllQuestions(string $idForm): array //revoie un array contenant trois qui pour chaque indice commun de ces 3 array une question, sa liste de reponse possible et sa liste de keyword associer au réponse. les deux autres sont null si c'est une textBox
{ {
$query = "SELECT * FROM Question WHERE from = :form"; $query = "SELECT * FROM Question WHERE form = :form";
$this->connection->executeQuery($query, array( $this->connection->executeQuery($query, array(
':form' => array($idForm, PDO::PARAM_STR) ':form' => array($idForm, PDO::PARAM_STR)
)); ));
$resultQuestion = $this->connection->getResults(); $resultQuestion = $this->connection->getResults();
$possibleResponse = []; $possibleResponse = [];
$keywordResponse = []; $keywordResponse = [];
for ($i=0; $i < count($resultQuestion); $i++){
if($resultQuestion[$i]["type"]!="TextQuestion"){
$query = "SELECT pr.* FROM Propose p, PossibleResponse pr
WHERE p.question = :questionId AND p.possibleResponse = pr.id";
$this->connection->executeQuery($query, array(
':id' => array($resultQuestion[$i]["id"], PDO::PARAM_STR)
));
$possibleResponse[] = $this->connection->getResults(); if(!empty($resultQuestion))
$tmpTab = []; {
foreach ($possibleResponse[$i] as $row){ for ($i=0; $i < count($resultQuestion); $i++)
$query = "SELECT k.* FROM Keyword k, Reference r {
WHERE k.id = r.keyword AND r.response = :id"; if($resultQuestion[$i]["type"]!="TextQuestion")
{
$query = "SELECT pr.* FROM Propose p, PossibleResponse pr
WHERE p.question = :questionId AND p.possibleResponse = pr.id";
$this->connection->executeQuery($query, array( $this->connection->executeQuery($query, array(
':id' => array($row["id"], PDO::PARAM_STR) ':questionId' => array($resultQuestion[$i]["id"], PDO::PARAM_INT)
)); ));
$tmpTab[] = $this->connection->getResults(); $possibleResponse[] = $this->connection->getResults();
$tmpTab = [];
foreach ($possibleResponse[$i] as $row){
var_dump($row);
$query = "SELECT k.* FROM Keyword k, Reference r
WHERE k.word = r.keyword AND r.possibleResponse = :id";
$this->connection->executeQuery($query, array(
':id' => array($row["id"], PDO::PARAM_INT)
));
$tmpTab[] = $this->connection->getResults();
}
$keywordResponse[] = $tmpTab;
}
else{
$possibleResponse[] = null;
$keywordResponse[] = null;
} }
$keywordResponse[] = $tmpTab;
}
else{
$possibleResponse[] = null;
$keywordResponse[] = null;
} }
return array($resultQuestion, $possibleResponse, $keywordResponse);
} }
return array($resultQuestion, $possibleResponse, $keywordResponse); return array();
} }
} }

@ -2,8 +2,6 @@
namespace Controller; namespace Controller;
use API\Gateway\GatewayQuestion;
use BusinessClass\ListBoxQuestion;
use Model\ModelAdmin; use Model\ModelAdmin;
class ControllerAdmin class ControllerAdmin

@ -10,6 +10,7 @@ class ControllerCandidate
{ {
global $rep, $views; global $rep, $views;
$html = (new ModelCandidate())->getForm(); $html = (new ModelCandidate())->getForm();
require($rep.$views['form']); require($rep.$views['form']);
} }

@ -18,7 +18,7 @@ class FrontController
try try
{ {
/* Si l'action est NULL on appelle goToTestimony(), sinon on nettoie l'action */ /* Si l'action est NULL on appelle goToTestimony(), sinon on nettoie l'action */
$action = $_REQUEST['action'] ? $action = $_REQUEST['action'] : (new ControllerCandidate)->goToForm(); $action = $_REQUEST['action'] ? $action = $_REQUEST['action'] : (new ControllerCandidate())->goToForm();
foreach ($listControllers as $controller) // Pour chaque Controller foreach ($listControllers as $controller) // Pour chaque Controller
{ {
@ -31,7 +31,7 @@ class FrontController
} catch (PDOException|Exception $e) } catch (PDOException|Exception $e)
{ {
$dVueError[] = "Erreur innatendue !"; // Ecriture du message d'erreur $dVueError[] = "Erreur innatendue !"; // Ecriture du message d'erreur
require ($rep.$views['error']); // Affichage de la vue d'erreur echo "ERREUUUUUR";
} }
exit(0); exit(0);

@ -24,7 +24,6 @@ class ModelAdmin
public function createForm(): void public function createForm(): void
{ {
if(empty((new GatewayForm())->getForm())) if(empty((new GatewayForm())->getForm()))
{ {
$form = new Form(0, "Votre avis nous intéresse !!!", "Description de notrer formulaire", array()); $form = new Form(0, "Votre avis nous intéresse !!!", "Description de notrer formulaire", array());

@ -34,6 +34,7 @@ class ModelCandidate
return "PAS DE FORMULAIRE\n"; return "PAS DE FORMULAIRE\n";
} }
$title = $form[0]['title']; $title = $form[0]['title'];
$description = $form[0]['description']; $description = $form[0]['description'];
$questionsTab = (new GatewayQuestion())->getAllQuestions($form[0]['id']); $questionsTab = (new GatewayQuestion())->getAllQuestions($form[0]['id']);
@ -51,6 +52,7 @@ class ModelCandidate
$possiblesResponses = $questionsTab[1][$i]; $possiblesResponses = $questionsTab[1][$i];
$content = $questionsTab[0][$i]['content']; $content = $questionsTab[0][$i]['content'];
$categories = $questionsTab[2][$i]; $categories = $questionsTab[2][$i];
$id = $questionsTab[0][$i]['id']; $id = $questionsTab[0][$i]['id'];
$questions[] = new $questionsTab[0][$i]['type']($possiblesResponses, $content, $categories, $id); $questions[] = new $questionsTab[0][$i]['type']($possiblesResponses, $content, $categories, $id);
@ -63,6 +65,7 @@ class ModelCandidate
<div id='container_form'>\n <div id='container_form'>\n
<form>\n"; <form>\n";
foreach ($questions as $question) foreach ($questions as $question)
{ {
$html.= $question->printStrategy()."\n"; $html.= $question->printStrategy()."\n";

@ -3,6 +3,8 @@
use Controller\FrontController; use Controller\FrontController;
require_once(__DIR__ . "/API/script/Config/config.php");
require_once(__DIR__.'/Config/config.php'); require_once(__DIR__.'/Config/config.php');
require_once(__DIR__.'/Config/Autoload.php'); require_once(__DIR__.'/Config/Autoload.php');
Autoload::charger(); Autoload::charger();
@ -11,4 +13,4 @@ session_start();
$frontController = new FrontController(); $frontController = new FrontController();
?> ?>

Loading…
Cancel
Save