Quelues correction
continuous-integration/drone/push Build is passing Details

ServeurDeTest
johan 2 years ago
parent 646fc2c0aa
commit 68c79bb56e

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

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

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

@ -79,17 +79,25 @@ class UtilisateurGateway
} }
public function addToQueue(Utilisateur $utilisateur,Partie $partie){ 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( $this->con->executeQuery($query,array(
'idUtilisateur' => array($utilisateur->getEmail(),SQLITE3_TEXT), 'idUtilisateur' => array($utilisateur->getEmail(),SQLITE3_TEXT),
'idPartie' => array($partie->getIdPartie(), SQLITE3_INTEGER) 'idPartie' => array($partie->getIdPartie(), SQLITE3_INTEGER)
)); ));
} }
public function isAlreadyInqueue(Utilisateur $utilisateur){
$query="SELECT utilisateur FROM Participer WHERE utilisateur=:utilisateur";
$this->con->executeQuery($query, array(
'utilisateur' => array($utilisateur->getEmail())
)
);
}
public function queueFilled(){ public function queueFilled(){
$query = "SELECT count(*) FROM Participer WHERE etat=0"; $query = "SELECT count(*) FROM Participer WHERE etat=0";
$this->con->executeQuery($query); $this->con->executeQuery($query);
if ($this->con->getResults()[0]['count'] >= 4) if ($this->con->getResults()[0]['count(*)'] >= 4)
return True; return True;
else else
return False; return False;
@ -98,7 +106,7 @@ class UtilisateurGateway
/*public function resoudreEnigmeMulti(string $emailUtilisateur) /*public function resoudreEnigmeMulti(string $emailUtilisateur)
{ {
$query="SELECT c.partie FROM Contenir $query="SELECT c.partie FROM Contenir
WHERE c.joueur = :emailUtilisateur WHERE c.utilisateur = :emailUtilisateur
and c.enCours = TRUE"; and c.enCours = TRUE";
$this->con->executeQuery($query, array( $this->con->executeQuery($query, array(
':emailUtilisateur' => array($emailUtilisateur,SQLITE3_TEXT) ':emailUtilisateur' => array($emailUtilisateur,SQLITE3_TEXT)
@ -107,7 +115,7 @@ class UtilisateurGateway
$query="SELECT e.id, c2.indexEnigme FROM Resoudre r, Contenir c1,Contenir c2, Enigme e WHERE $query="SELECT e.id, c2.indexEnigme FROM Resoudre r, Contenir c1,Contenir c2, Enigme e WHERE
r.id = :idPartie r.id = :idPartie
AND r.joueur=:idJoueur AND r.utilisateur=:idutilisateur
AND r.partie=:idPartie AND r.partie=:idPartie
AND r.temps IS NOT NULL AND r.temps IS NOT NULL
AND c1.partie = r.partie AND c1.partie = r.partie
@ -136,19 +144,19 @@ class UtilisateurGateway
$classement=$results[0]["max"]+1; $classement=$results[0]["max"]+1;
$query="SELECT * FROM Resoudre $query="SELECT * FROM Resoudre
WHERE r.joueur=:joueur WHERE r.utilisateur=:utilisateur
AND r.enigme=:idEnigme AND r.enigme=:idEnigme
AND r.partie=:idPartie"; AND r.partie=:idPartie";
$this->con->executeQuery($query, array( $this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT), "utilisateur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER), "enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER))); "partie" => array($idPartie, SQLITE3_INTEGER)));
$results=$this->con->getResults(); $results=$this->con->getResults();
if(empty($results)) 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( $this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT), "utilisateur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER), "enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER), "partie" => array($idPartie, SQLITE3_INTEGER),
"classement" => array($classement, SQLITE3_INTEGER), "classement" => array($classement, SQLITE3_INTEGER),
@ -160,11 +168,11 @@ class UtilisateurGateway
{ {
$query="UPDATE Resoudre $query="UPDATE Resoudre
SET classement=:classement; SET classement=:classement;
WHERE joueur=:joueur WHERE utilisateur=:utilisateur
AND enigme=:idEnigme AND enigme=:idEnigme
AND partie=:idPartie"; AND partie=:idPartie";
$this->con->executeQuery($query, array( $this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT), "utilisateur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER), "enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER), "partie" => array($idPartie, SQLITE3_INTEGER),
"classement" => array($classement, SQLITE3_INTEGER))); "classement" => array($classement, SQLITE3_INTEGER)));
@ -174,7 +182,7 @@ class UtilisateurGateway
public function passerEnigmeMulti(string $emailUtilisateur){ public function passerEnigmeMulti(string $emailUtilisateur){
$query="SELECT p.partie FROM Participer $query="SELECT p.partie FROM Participer
WHERE p.joueur = :emailUtilisateur WHERE p.utilisateur = :emailUtilisateur
and p.enCours = TRUE"; and p.enCours = TRUE";
$this->con->executeQuery($query, array( $this->con->executeQuery($query, array(
':emailUtilisateur' => array($emailUtilisateur,SQLITE3_TEXT) ':emailUtilisateur' => array($emailUtilisateur,SQLITE3_TEXT)
@ -183,7 +191,7 @@ class UtilisateurGateway
$query="SELECT e.id, c2.indexEnigme FROM Resoudre r, Contenir c1,Contenir c2, Enigme e WHERE $query="SELECT e.id, c2.indexEnigme FROM Resoudre r, Contenir c1,Contenir c2, Enigme e WHERE
r.id = :idPartie r.id = :idPartie
AND r.joueur=:idJoueur AND r.utilisateur=:idUtilisateur
AND r.partie=:idPartie AND r.partie=:idPartie
AND r.temps IS NOT NULL AND r.temps IS NOT NULL
AND r.enigme=c1.enigme AND r.enigme=c1.enigme
@ -201,9 +209,9 @@ class UtilisateurGateway
$idEnigme=$results[0]["enigme"]; $idEnigme=$results[0]["enigme"];
$index=$results[0]["indexEnigme"]; $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( $this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT), "utilisateur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER), "enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER), "partie" => array($idPartie, SQLITE3_INTEGER),
"classement" => array(NULL, SQLITE3_NULL), "classement" => array(NULL, SQLITE3_NULL),
@ -214,7 +222,7 @@ class UtilisateurGateway
public function resoudreEnigmeSolo(string $emailUtilisateur) public function resoudreEnigmeSolo(string $emailUtilisateur)
{ {
$query="SELECT c.partie FROM Contenir $query="SELECT c.partie FROM Contenir
WHERE c.joueur = :emailUtilisateur WHERE c.utilisateur = :emailUtilisateur
and c.enCours = TRUE"; and c.enCours = TRUE";
$this->con->executeQuery($query, array( $this->con->executeQuery($query, array(
':emailUtilisateur' => array($emailUtilisateur,SQLITE3_TEXT) ':emailUtilisateur' => array($emailUtilisateur,SQLITE3_TEXT)
@ -223,7 +231,7 @@ class UtilisateurGateway
$query="SELECT e.id, c2.indexEnigme FROM Resoudre r, Contenir c1,Contenir c2, Enigme e WHERE $query="SELECT e.id, c2.indexEnigme FROM Resoudre r, Contenir c1,Contenir c2, Enigme e WHERE
r.id = :idPartie r.id = :idPartie
AND r.joueur=:idJoueur AND r.utilisateur=:idUtilisateur
AND r.partie=:idPartie AND r.partie=:idPartie
AND r.enigme = c1.enigme AND r.enigme = c1.enigme
AND c1.partie = r.partie AND c1.partie = r.partie
@ -253,19 +261,19 @@ class UtilisateurGateway
$classement=$results[0]["max"]+1; $classement=$results[0]["max"]+1;
$query="SELECT * FROM Resoudre $query="SELECT * FROM Resoudre
WHERE r.joueur=:joueur WHERE r.utilisateur=:utilisateur
AND r.enigme=:idEnigme AND r.enigme=:idEnigme
AND r.partie=:idPartie"; AND r.partie=:idPartie";
$this->con->executeQuery($query, array( $this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT), "utilisateur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER), "enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER))); "partie" => array($idPartie, SQLITE3_INTEGER)));
$results=$this->con->getResults(); $results=$this->con->getResults();
if(empty($results)) 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( $this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT), "utilisateur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER), "enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER), "partie" => array($idPartie, SQLITE3_INTEGER),
"classement" => array($classement, SQLITE3_INTEGER), "classement" => array($classement, SQLITE3_INTEGER),
@ -276,11 +284,11 @@ class UtilisateurGateway
{ {
$query="UPDATE Resoudre $query="UPDATE Resoudre
SET classement=:classement; SET classement=:classement;
WHERE joueur=:joueur WHERE utilisateur=:utilisateur
AND enigme=:idEnigme AND enigme=:idEnigme
AND partie=:idPartie"; AND partie=:idPartie";
$this->con->executeQuery($query, array( $this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT), "utilisateur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER), "enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER), "partie" => array($idPartie, SQLITE3_INTEGER),
"classement" => array($classement, SQLITE3_INTEGER))); "classement" => array($classement, SQLITE3_INTEGER)));

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

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

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

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

Binary file not shown.

@ -34,14 +34,14 @@ dateDebut date NOT NULL
); );
CREATE TABLE Resoudre( CREATE TABLE Resoudre(
joueur varchar(50) REFERENCES Utilisateur(email), utilisateur varchar(50) REFERENCES Utilisateur(email),
enigme int REFERENCES Enigme(id), enigme int REFERENCES Enigme(id),
partie int REFERENCES Partie(id), partie int REFERENCES Partie(id),
classement int CHECK (classement >0), classement int CHECK (classement >0),
indexEnigme int CHECK (indexEnigme >0), indexEnigme int CHECK (indexEnigme >0),
temps numeric CHECK (temps >0), temps numeric CHECK (temps >0),
enMulti boolean, enMulti boolean,
PRIMARY KEY(joueur, enigme, partie) PRIMARY KEY(utilisateur, enigme, partie)
); );
CREATE TABLE Contenir( CREATE TABLE Contenir(
@ -53,7 +53,7 @@ PRIMARY KEY(partie, enigme)
CREATE TABLE Participer( CREATE TABLE Participer(
partie int REFERENCES Partie(id), 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 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