Merge branch 'master' of https://codefirst.iut.uca.fr/git/nathan.boileau/Scripted
continuous-integration/drone/push Build is passing Details

ServeurDeTest
Pierre BALLANDRAS 2 years ago
commit 32768de02f

@ -48,7 +48,7 @@ class Connection extends SQLite3
$resultArray = $this->result->fetchArray(SQLITE3_ASSOC);
$multiArray = array();
while($resultArray != false){ //read next row
array_push($multiArray, $resultArray);
$multiArray[]=$resultArray;
$resultArray = $this->result->fetchArray(SQLITE3_ASSOC); //insert all rows to $multiArray
}
if ($multiArray == NULL)

@ -12,7 +12,6 @@ class FrontController
} else {
$role = "visitor";
}
// Check if action exists
$action = $_REQUEST['action'];
if ($role == "user") {

@ -19,13 +19,13 @@ class PartieGateway
}
/**
* @param array $listeJoueur
* @param array $listeUtilisateur
*/
public function partieInQueueExists() : bool{
$query = "SELECT count(*) FROM PARTICIPER WHERE etat = 0";
$this->con->executeQuery($query);
$results = $this->con->getResults();
if ($results[0]['count'] == 0)
if ($results[0]['count(*)'] == 0)
return false;
else
return true;
@ -35,20 +35,24 @@ class PartieGateway
$query = "SELECT max(id) FROM Partie";
$this->con->executeQuery($query);
$results=$this->con->getResults();
if (empty($results))
if ($results[0]['max(id)']==NULL)
return 0;
else
return $results[0]['max'];
return $results[0]['max(id)'];
}
public function creerPartieMulti(int $max, array $tabEnigme) : Partie{
$partie=PartieFactory::createPartieMulti($max+1,$tabEnigme);
$query= "INSERT INTO Partie VALUES (:idPartie,:idEnigme)";
$query= "INSERT INTO Partie VALUES (:idPartie,CURRENT_DATE)";
$this->con->executeQuery($query, array(':idPartie' => array($partie->getIdPartie(), SQLITE3_INTEGER)));
foreach($partie->getListeEnigme() as $Enigme){
$query= "INSERT INTO Contenir VALUES (:idPartie, :idEnigme)";
$this->con->executeQuery($query, array(
':idPartie' => array($partie->getIdPartie(), SQLITE3_INTEGER),
':idEnigme' => array($Enigme->getIdEnigme(), SQLITE3_INTEGER)));
if (count($partie->getListeEnigme()) != 0) {
foreach ($partie->getListeEnigme() as $Enigme) {
$query = "INSERT INTO Contenir VALUES (:idPartie, :idEnigme)";
$this->con->executeQuery($query, array(
':idPartie' => array($partie->getIdPartie(), SQLITE3_INTEGER),
':idEnigme' => array($Enigme->getIdEnigme(), SQLITE3_INTEGER)
)
);
}
}
return $partie;
}
@ -87,10 +91,10 @@ class PartieGateway
':idPartie' => array($partie->getIdPartie(), SQLITE3_INTEGER),
':idEnigme' => array($Enigme->getIdEnigme(), SQLITE3_INTEGER)));
}
$query= "INSERT INTO Participer VALUES (:idPartie, :idJoueur, TRUE)";
$query= "INSERT INTO Participer VALUES (:idPartie, :idUtilisateur, TRUE)";
$this->con->executeQuery($query, array(
'idPartie' => array($partie->getIdPartie(), SQLITE3_INTEGER),
'idJoueur' => array($utilisateur->getEmail(), SQLITE3_INTEGER)));
'idUtilisateur' => array($utilisateur->getEmail(), SQLITE3_INTEGER)));
}
public function delete(string $idPartie){

@ -74,22 +74,35 @@ class UtilisateurGateway
':email' => array($email,SQLITE3_TEXT)
));
$results=$this->con->getResults();
$estAdmin=$results['estAdmin'];
$estAdmin=$results[0]['estAdmin'];
return $estAdmin;
}
public function addToQueue(Utilisateur $utilisateur,Partie $partie){
$query = "INSERT INTO Participer VALUES (:idUtilisateur,:idPartie)";
$query = "INSERT INTO Participer VALUES (:idUtilisateur,:idPartie,0)";
$this->con->executeQuery($query,array(
'idUtilisateur' => array($utilisateur->getEmail(),SQLITE3_TEXT),
'idPartie' => array($partie->getIdPartie(), SQLITE3_INTEGER)
':idUtilisateur' => array($utilisateur->getEmail(),SQLITE3_TEXT),
':idPartie' => array($partie->getIdPartie(), SQLITE3_INTEGER)
));
}
public function isAlreadyInqueue(Utilisateur $utilisateur) : bool{
$query="SELECT utilisateur FROM Participer WHERE utilisateur=:utilisateur";
$this->con->executeQuery($query, array(
':utilisateur' => array($utilisateur->getEmail(),SQLITE3_TEXT)
)
);
$results=$this->con->getResults();
if ($results != array())
return false;
else
return true;
}
public function queueFilled(){
$query = "SELECT count(*) FROM Participer WHERE etat=0";
$this->con->executeQuery($query);
if ($this->con->getResults()[0]['count'] >= 4)
if ($this->con->getResults()[0]['count(*)'] >= 4)
return True;
else
return False;
@ -98,7 +111,7 @@ class UtilisateurGateway
/*public function resoudreEnigmeMulti(string $emailUtilisateur)
{
$query="SELECT c.partie FROM Contenir
WHERE c.joueur = :emailUtilisateur
WHERE c.utilisateur = :emailUtilisateur
and c.enCours = TRUE";
$this->con->executeQuery($query, array(
':emailUtilisateur' => array($emailUtilisateur,SQLITE3_TEXT)
@ -107,7 +120,7 @@ class UtilisateurGateway
$query="SELECT e.id, c2.indexEnigme FROM Resoudre r, Contenir c1,Contenir c2, Enigme e WHERE
r.id = :idPartie
AND r.joueur=:idJoueur
AND r.utilisateur=:idutilisateur
AND r.partie=:idPartie
AND r.temps IS NOT NULL
AND c1.partie = r.partie
@ -136,19 +149,19 @@ class UtilisateurGateway
$classement=$results[0]["max"]+1;
$query="SELECT * FROM Resoudre
WHERE r.joueur=:joueur
WHERE r.utilisateur=:utilisateur
AND r.enigme=:idEnigme
AND r.partie=:idPartie";
$this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT),
"utilisateur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER)));
$results=$this->con->getResults();
if(empty($results))
{
$query="INSERT INTO Resoudre VALUES (:joueur, :enigme,:partie,:classement,:index,:temps,TRUE)";
$query="INSERT INTO Resoudre VALUES (:utilisateur, :enigme,:partie,:classement,:index,:temps,TRUE)";
$this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT),
"utilisateur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER),
"classement" => array($classement, SQLITE3_INTEGER),
@ -160,11 +173,11 @@ class UtilisateurGateway
{
$query="UPDATE Resoudre
SET classement=:classement;
WHERE joueur=:joueur
WHERE utilisateur=:utilisateur
AND enigme=:idEnigme
AND partie=:idPartie";
$this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT),
"utilisateur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER),
"classement" => array($classement, SQLITE3_INTEGER)));
@ -174,7 +187,7 @@ class UtilisateurGateway
public function passerEnigmeMulti(string $emailUtilisateur){
$query="SELECT p.partie FROM Participer
WHERE p.joueur = :emailUtilisateur
WHERE p.utilisateur = :emailUtilisateur
and p.enCours = TRUE";
$this->con->executeQuery($query, array(
':emailUtilisateur' => array($emailUtilisateur,SQLITE3_TEXT)
@ -183,7 +196,7 @@ class UtilisateurGateway
$query="SELECT e.id, c2.indexEnigme FROM Resoudre r, Contenir c1,Contenir c2, Enigme e WHERE
r.id = :idPartie
AND r.joueur=:idJoueur
AND r.utilisateur=:idUtilisateur
AND r.partie=:idPartie
AND r.temps IS NOT NULL
AND r.enigme=c1.enigme
@ -201,9 +214,9 @@ class UtilisateurGateway
$idEnigme=$results[0]["enigme"];
$index=$results[0]["indexEnigme"];
$query="INSERT INTO Resoudre VALUES (:joueur, :enigme,:partie,:classement,:index,:temps,TRUE)";
$query="INSERT INTO Resoudre VALUES (:utilisateur, :enigme,:partie,:classement,:index,:temps,TRUE)";
$this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT),
"utilisateur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER),
"classement" => array(NULL, SQLITE3_NULL),
@ -214,7 +227,7 @@ class UtilisateurGateway
public function resoudreEnigmeSolo(string $emailUtilisateur)
{
$query="SELECT c.partie FROM Contenir
WHERE c.joueur = :emailUtilisateur
WHERE c.utilisateur = :emailUtilisateur
and c.enCours = TRUE";
$this->con->executeQuery($query, array(
':emailUtilisateur' => array($emailUtilisateur,SQLITE3_TEXT)
@ -223,7 +236,7 @@ class UtilisateurGateway
$query="SELECT e.id, c2.indexEnigme FROM Resoudre r, Contenir c1,Contenir c2, Enigme e WHERE
r.id = :idPartie
AND r.joueur=:idJoueur
AND r.utilisateur=:idUtilisateur
AND r.partie=:idPartie
AND r.enigme = c1.enigme
AND c1.partie = r.partie
@ -253,19 +266,19 @@ class UtilisateurGateway
$classement=$results[0]["max"]+1;
$query="SELECT * FROM Resoudre
WHERE r.joueur=:joueur
WHERE r.utilisateur=:utilisateur
AND r.enigme=:idEnigme
AND r.partie=:idPartie";
$this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT),
"utilisateur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER)));
$results=$this->con->getResults();
if(empty($results))
{
$query="INSERT INTO Resoudre VALUES (:joueur, :enigme,:partie,:classement,:index,:temps,TRUE)";
$query="INSERT INTO Resoudre VALUES (:utilisateur, :enigme,:partie,:classement,:index,:temps,TRUE)";
$this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT),
"utilisateur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER),
"classement" => array($classement, SQLITE3_INTEGER),
@ -276,11 +289,11 @@ class UtilisateurGateway
{
$query="UPDATE Resoudre
SET classement=:classement;
WHERE joueur=:joueur
WHERE utilisateur=:utilisateur
AND enigme=:idEnigme
AND partie=:idPartie";
$this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT),
"utilisateur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER),
"classement" => array($classement, SQLITE3_INTEGER)));

@ -31,6 +31,7 @@ class VisitorController
break;
case "goToQueue":
$model->goToLogin();
break;
default:
$error = "Action non valide";
require($rep . $vues['erreur']);

@ -2,6 +2,8 @@
class PartieFactory{
public static function createPartieMulti($newId,$tabEnigme) : Partie
{
if (count($tabEnigme)==0)
return new Partie($newId,array());
$tempsResolutionPartie=0;
$tabIndex=range(0,count($tabEnigme));
$randomNumber=0;

@ -4,33 +4,33 @@ include_once "Enigme.php";
class Partie
{
private string $idPartie;
private int $idPartie;
private DateTime $datePartie;
private array $listeEnigme;
/**
* @param string $idPartie
* @param int $idPartie
* @param array $datePartie
*/
public function __construct(string $idPartie, array $listeEnigme)
public function __construct(int $idPartie, array $listeEnigme)
{
$this->idPartie = $idPartie;
$this->datePartie = new DateTime();
$this->$listeEnigme = $listeEnigme;
$this->listeEnigme = $listeEnigme;
}
/**
* @return string
* @return int
*/
public function getIdPartie(): string
public function getIdPartie(): int
{
return $this->idPartie;
}
/**
* @param string $idPartie
* @param int $idPartie
*/
public function setIdPartie(string $idPartie): void
public function setIdPartie(int $idPartie): void
{
$this->idPartie = $idPartie;
}

@ -58,15 +58,23 @@ class UserModel
//require($rep . $vues['Queue']);
$this->addToQueue();
} catch (Exception $e) {
$error = "404";
$error = $e->getMessage();
require($rep . $vues['erreur']);
}
}
public function addToQueue(){
if ($this->partie_gateway->partieInQueueExists()) {
if($this->utilisateur_gateway->isAlreadyInqueue($_SESSION['utilisateur']))
{
return;
}
echo '1';
if (!$this->partie_gateway->partieInQueueExists()) {
echo '2';
$tabEnigme = $this->enigme_gateway->findMultiEnigma();
echo '3';
$idNewPartie = $this->partie_gateway->findPartieMaxId();
echo '4';
$partie=$this->partie_gateway->creerPartieMulti($idNewPartie,$tabEnigme);
}
else{
@ -74,6 +82,7 @@ class UserModel
$tabEnigme = $this->enigme_gateway->findEnigmaFromPartie($idPartieInQueue);
$partie = $this->partie_gateway->creerPartieMulti($idPartieInQueue, $tabEnigme);
}
echo '6';
$this->utilisateur_gateway->addToQueue($_SESSION['utilisateur'],$partie);
if ($this->utilisateur_gateway->queueFilled())
{

Binary file not shown.

@ -34,14 +34,14 @@ dateDebut date NOT NULL
);
CREATE TABLE Resoudre(
joueur varchar(50) REFERENCES Utilisateur(email),
utilisateur varchar(50) REFERENCES Utilisateur(email),
enigme int REFERENCES Enigme(id),
partie int REFERENCES Partie(id),
classement int CHECK (classement >0),
indexEnigme int CHECK (indexEnigme >0),
temps numeric CHECK (temps >0),
enMulti boolean,
PRIMARY KEY(joueur, enigme, partie)
PRIMARY KEY(utilisateur, enigme, partie)
);
CREATE TABLE Contenir(
@ -53,7 +53,7 @@ PRIMARY KEY(partie, enigme)
CREATE TABLE Participer(
partie int REFERENCES Partie(id),
joueur varchar(50) REFERENCES Joueur(email),
utilisateur varchar(50) REFERENCES Utilisateur(email),
etat int CHECK (etat IN (0,1,2)), -- etat 0 = enAttente etat 1 = enCours etat 2 = fini
PRIMARY KEY(partie, joueur)
PRIMARY KEY(partie, utilisateur)
);
Loading…
Cancel
Save