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.
92 lines
3.1 KiB
92 lines
3.1 KiB
<?php
|
|
class UserModel
|
|
{
|
|
|
|
private EnigmeGateway $enigme_gateway;
|
|
private PartieGateway $partie_gateway;
|
|
private UtilisateurGateway $utilisateur_gateway;
|
|
private Nettoyage $nettoyage;
|
|
private Validation $validation;
|
|
|
|
function __construct()
|
|
{
|
|
try {
|
|
global $error, $view, $rep;
|
|
$this->enigme_gateway = new EnigmeGateway();
|
|
$this->partie_gateway = new PartieGateway();
|
|
$this->utilisateur_gateway = new UtilisateurGateway();
|
|
$this->nettoyage = new Nettoyage();
|
|
$this->validation = new Validation();
|
|
} catch (Exception $e) {
|
|
$error = $e->getMessage();
|
|
require($rep . $view['erreur']);
|
|
}
|
|
}
|
|
public function addToQueue()
|
|
{
|
|
echo '1';
|
|
var_dump($this->utilisateur_gateway->isAlreadyInQueue($_SESSION['utilisateur']));
|
|
if ($this->utilisateur_gateway->isAlreadyInqueue($_SESSION['utilisateur'])) {
|
|
var_dump($this->utilisateur_gateway->queueFilled());
|
|
if($this->utilisateur_gateway->queueFilled())
|
|
{
|
|
$_REQUEST['action']='launchGame';
|
|
var_dump($_REQUEST['action']);
|
|
}
|
|
return;
|
|
}
|
|
echo '2';
|
|
if (!$this->partie_gateway->partieInQueueExists()) {
|
|
echo '3';
|
|
$tabEnigme = $this->enigme_gateway->findMultiEnigma();
|
|
$idNewPartie = $this->partie_gateway->findPartieMaxId();
|
|
$partie = $this->partie_gateway->creerPartieMulti($idNewPartie, $tabEnigme);
|
|
} else {
|
|
echo '4';
|
|
$idPartieInQueue = $this->partie_gateway->findPartieInQueue();
|
|
echo '5';
|
|
$tabEnigme = $this->enigme_gateway->findEnigmaFromPartie($idPartieInQueue);
|
|
echo '6';
|
|
$partie = $this->partie_gateway->rejoindrePartieMulti($idPartieInQueue, $tabEnigme);
|
|
echo '7';
|
|
}
|
|
echo '8';
|
|
$this->utilisateur_gateway->addToQueue($_SESSION['utilisateur'], $partie);
|
|
$userGroup = (string)$partie->getIdPartie();
|
|
echo '<script>
|
|
socket.join($userGroup);
|
|
io.to($userGroup).emit("launchGame");
|
|
</script>';
|
|
}
|
|
|
|
public function findUserGroup() : int {
|
|
return $this->partie_gateway->findPartieInQueue();
|
|
}
|
|
|
|
public function launchGame()
|
|
{
|
|
$this->utilisateur_gateway->launchGame($_SESSION['utilisateur']);
|
|
}
|
|
|
|
public function logout()
|
|
{
|
|
session_unset();
|
|
session_destroy();
|
|
$_SESSION = array();
|
|
$_SESSION['role'] = 'visitor';
|
|
header('Location: index.php');
|
|
}
|
|
|
|
public function getEnigmeByOrdre(int $num) : Enigme
|
|
{
|
|
$tabEnigme = $this->enigme_gateway->findByOrdre($num);
|
|
if ($tabEnigme == null) {
|
|
$last = $this->enigme_gateway->findLastEnigmaByOrdre();
|
|
if ($last[0]->getOrdre() == ($num - 1)){
|
|
return new Enigme(1,"","","","","");
|
|
}
|
|
throw new Exception("Enigme non trouvée");
|
|
}
|
|
return $tabEnigme[0];
|
|
}
|
|
} |