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

ServeurDeTest
nathan boileau 2 years ago
commit a4e349ccc9

@ -17,15 +17,16 @@ class PartieGateway
* @param array $listeJoueur
*/
public function creerPartie(array $listeJoueur){
$query = "SELECT * FROM Enigme";
public function creerPartieMulti(array $listeJoueur){
$query = "SELECT * FROM Enigme
WHERE points IS NOT NULL OR points != 0";
$this->con->executeQuery($query);
$results = $this->con->getResults();
$query= "SELECT max(p.id)
FROM PARTIE p;";
$this->con->executeQuery($query);
$max=$this->con->getResults()[0];
$partie=PartieFactory::createPartie($max,$results);
$max=$this->con->getResults()[0]["max"];
$partie=PartieFactory::createPartieMulti($max,$results);
$query= "INSERT INTO Partie VALUES (:idPartie,:idEnigme)";
$this->con->executeQuery($query, array(':idPartie' => array($partie->getIdPartie(), SQLITE3_INTEGER)));
foreach($partie->getListeEnigme() as $Enigme){
@ -42,6 +43,36 @@ class PartieGateway
}
}
public function creerPartieSolo(Utilisateur $utilisateur){
$query = "SELECT * FROM Enigme
WHERE points IS NULL OR points = 0";
$this->con->executeQuery($query);
$results = $this->con->getResults();
$query= "SELECT max(p.id)
FROM PARTIE p;";
$this->con->executeQuery($query);
$max=$this->con->getResults()[0]["max"];
$partie=PartieFactory::createPartieSolo($max,$results);
$query= "INSERT INTO Partie VALUES (:idPartie,:idEnigme)";
$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)));
}
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)));
}
$query= "INSERT INTO Participer VALUES (:idPartie, :idJoueur, TRUE)";
$this->con->executeQuery($query, array(
'idPartie' => array($partie->getIdPartie(), SQLITE3_INTEGER),
'idJoueur' => array($utilisateur->getEmail(), SQLITE3_INTEGER)));
}
public function delete(string $idPartie){
$query= "DELETE FROM Partie WHERE id = :idPartie";
$this->con->executeQuery($query, array(':idPartie' => array($idPartie, SQLITE3_INTEGER)));
@ -54,7 +85,7 @@ class PartieGateway
$query= "SELECT max(p.id)
FROM PARTIE p;";
$this->con->executeQuery($query);
$max=$this->con->getResults()[0];
$max=$this->con->getResults()[0]["max"];
$listePartieHistory=array();
foreach($results as $row)
{

@ -36,6 +36,9 @@ class UserController
case "goToEnigme":
$this->goToEnigme();
break;
case "goToQueue":
$this->goToQueue();
break;
}
} catch (PDOException $e)
{
@ -164,4 +167,14 @@ class UserController
require($rep.$vues['erreur']);
}
}
private function goToQueue() {
global $rep, $vues, $error;
try {
require ($rep.$vues['Queue']);
}catch (Exception $e){
$error = "404";
require($rep.$vues['erreur']);
}
}
}

@ -83,7 +83,7 @@ class UtilisateurGateway
return $estAdmin;
}
public function resoudreEnigmeMulti(string $emailUtilisateur)
/*public function resoudreEnigmeMulti(string $emailUtilisateur)
{
$query="SELECT c.partie FROM Contenir
WHERE c.joueur = :emailUtilisateur
@ -91,9 +91,9 @@ class UtilisateurGateway
$this->con->executeQuery($query, array(
':emailUtilisateur' => array($emailUtilisateur,SQLITE3_TEXT)
));
$idPartie=$this->con->getResults()[0];
$idPartie=$this->con->getResults()[0]["partie"];
$query="SELECT e.id 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
AND r.joueur=:idJoueur
AND r.partie=:idPartie
@ -104,35 +104,175 @@ class UtilisateurGateway
AND r.temps = (SELECT max(r.temps))";
$results=$this->con->getResults();
if(empty($results))
$query="SELECT enigme FROM Contenir WHERE
{
$query="SELECT c.enigme, c.indexEnigme FROM Contenir c WHERE
c.partie = :idPartie
AND c.indexEnigme = 0";
$results=$this->con->getResults();
$idEnigme=$results[0];
}
$idEnigme=$results[0]["enigme"];
$index=$results[0]["indexEnigme"];
$query="SELECT max(classement) FROM Enigme e,Partie p, Resoudre r
WHERE p.id=r.partie;
WHERE p.id=r.partie
AND e.id=r.enigme";
$this->con->executeQuery($query);
$results=$this->con->getResults();
if(empty($results))
$classement=1;
else
$classement=$results[0]+1;
$classement=$results[0]["max"]+1;
$query="SELECT * FROM Resoudre
WHERE r.joueur=:joueur
AND r.enigme=:idEnigme
AND r.partie=:idPartie";
$this->con->executeQuery($query, array(
"joueur" => 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)";
$this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER),
"classement" => array($classement, SQLITE3_INTEGER),
"index" => array($index, SQLITE3_INTEGER),
"temps" => array($temps, SQLITE3_FLOAT)));
return array($emailUtilisateur => array($points,$temps))
}
else
{
$query="UPDATE Resoudre
SET classement=:classement;
WHERE joueur=:joueur
AND enigme=:idEnigme
AND partie=:idPartie";
$this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER),
"classement" => array($classement, SQLITE3_INTEGER)));
return array();
}
}*/
public function passerEnigmeMulti(string $emailUtilisateur){
$query="SELECT p.partie FROM Participer
WHERE p.joueur = :emailUtilisateur
and p.enCours = TRUE";
$this->con->executeQuery($query, array(
':emailUtilisateur' => array($emailUtilisateur,SQLITE3_TEXT)
));
$idPartie=$this->con->getResults()[0]["partie"];
$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.partie=:idPartie
AND r.temps IS NOT NULL
AND r.enigme=c1.enigme
AND r.partie = c1.partie
AND r.partie = c2.partie
AND c2.index=c1.index + 1
AND e.id = c1.enigme
AND r.temps = (SELECT max(r.temps))";
$results=$this->con->getResults();
if(empty($results))
$query="SELECT c.enigme, c.indexEnigme FROM Contenir c WHERE
c.partie = :idPartie
AND c.indexEnigme = 0";
$results=$this->con->getResults();
$idEnigme=$results[0]["enigme"];
$index=$results[0]["indexEnigme"];
$query="INSERT INTO Resoudre VALUES (:joueur, :enigme,:partie,:classement,:index,:temps,TRUE)";
$this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_TEXT),
"partie" => array($idPartie, SQLITE3_TEXT),
"classement" => array($classement, SQLITE3_INTEGER),
"index" => array(, SQLITE3_INTEGER),
"enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER),
"classement" => array(NULL, SQLITE3_NULL),
"index" => array($index, SQLITE3_INTEGER),
"temps" => array($emailUtilisateur, SQLITE3_FLOAT)));
}
public function resoudreEnigmeSolo(string $emailUtilisateur, int $idEnigme, int $idPartie)
public function resoudreEnigmeSolo(string $emailUtilisateur)
{
$query="INSERT INTO Resoudre VALUES (:joueur, :enigme,:partie,NULL,:index,:temps,False)";
$query="SELECT c.partie FROM Contenir
WHERE c.joueur = :emailUtilisateur
and c.enCours = TRUE";
$this->con->executeQuery($query, array(
':emailUtilisateur' => array($emailUtilisateur,SQLITE3_TEXT)
));
$idPartie=$this->con->getResults()[0]["partie"];
$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.partie=:idPartie
AND r.enigme = c1.enigme
AND c1.partie = r.partie
AND c2.partie = r.partie
AND c2.index=c1.index + 1
AND e.id = c2.enigme
AND r.indexEnigme = (SELECT max(r.indexEnigme))";
$results=$this->con->getResults();
if(empty($results))
{
$query="SELECT c.enigme, c.indexEnigme FROM Contenir c WHERE
c.partie = :idPartie
AND c.indexEnigme = 0";
$results=$this->con->getResults();
}
$idEnigme=$results[0]["enigme"];
$index=$results[0]["indexEnigme"];
$query="SELECT max(classement) FROM Enigme e,Partie p, Resoudre r
WHERE p.id=r.partie
AND e.id=r.enigme";
$this->con->executeQuery($query);
$results=$this->con->getResults();
if(empty($results))
$classement=1;
else
$classement=$results[0]["max"]+1;
$query="SELECT * FROM Resoudre
WHERE r.joueur=:joueur
AND r.enigme=:idEnigme
AND r.partie=:idPartie";
$this->con->executeQuery($query, array(
"joueur" => 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)";
$this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER),
"classement" => array($classement, SQLITE3_INTEGER),
"index" => array($index, SQLITE3_INTEGER),
"temps" => array($emailUtilisateur, SQLITE3_FLOAT)));
}
else
{
$query="UPDATE Resoudre
SET classement=:classement;
WHERE joueur=:joueur
AND enigme=:idEnigme
AND partie=:idPartie";
$this->con->executeQuery($query, array(
"joueur" => array($emailUtilisateur, SQLITE3_TEXT),
"enigme" => array($idEnigme, SQLITE3_INTEGER),
"partie" => array($idPartie, SQLITE3_INTEGER),
"classement" => array($classement, SQLITE3_INTEGER)));
}
}
public function showAll() : void{

@ -2,7 +2,7 @@
include_once "EnigmeFactory.php";
include_once "../Model/Partie.php";
class PartieFactory{
public static function createPartie($idMax,$resultsEnigme) : Partie
public static function createPartieMulti($idMax,$resultsEnigme) : Partie
{
$tempsResolutionPartie=0;
$tabEnigme=array();
@ -11,16 +11,31 @@ class PartieFactory{
while($tempsResolutionPartie <= 30)
{
$randomNumber=$tabIndex[array_rand($tabIndex)];
$tabEnigme=EnigmeFactory::create($resultsEnigme[$randomNumber]);
$tabEnigme[]=EnigmeFactory::create($resultsEnigme[$randomNumber]);
$TempsResolutionPartie+=$resultsEnigme[$randomNumber]['tempsDeResolution'];
unset($tabIndex[$randomNumber]);
}
$partie=new Partie($idMax,$resultsEnigme);
$partie=new Partie($idMax+1,$tabEnigme);
return $partie;
}
public static function createPartieSolo($idMax,$resultsEnigme) : Partie
{
$tabEnigme=array();
foreach($resultsEnigme as $row)
{
$tabEnigme[]=EnigmeFactory::create($row);
}
$partie=new Partie($idMax+1,$tabEnigme);
return $partie;
}
public static function createPartieHistory($id,$resultsEnigme) : Partie
{
$partie=new Partie($id,$resultsEnigme);
foreach($resultsEnigme as $row)
{
$tabEnigme[]=EnigmeFactory::create($row);
}
$partie=new Partie($id,$tabEnigme);
return $partie;
}
}
Loading…
Cancel
Save