<?php

//Première étape, on vérifie si l'utilisateur est connecté
//On inclue les fichiers nécessaires
require_once './dao/bdd.php';
require_once './dao/dao.php';
require_once './dao/groupe_dao.php';
require_once './metier/user.php';
require_once './metier/groupe.php';

//on lance la vérification
checkstate();

function checkstate()
    {

    //On récupère l'utilisateur
    $user = $_SESSION["user"];

    //On vérifie qu'il y a quelqu'un de connecter
    if ($user == NULL)
        {
        include_once 'view/game/notconnected.php';
        return;
        }

    //A-t-on fini une partie ?
    if (isset($_POST["saveq0"]))
        {
        endGame();
        return;
        }

    //Doit-on charger les catégories ?
    if ($_POST["cat"] == NULL)
        {
        showCategories();
        return;
        }

    //Si on n'a rien, on doit afficher les questions
    showQuestion();
    }

/*
 * Affiche les catégories
 */

function showCategories()
    {
    //On charge les catégories
    include_once './view/game/categories.php';
    }

/*
 * Affiche les questions après sélection de la catégorie
 */

function showQuestion()
    {
    //On a choisi une catégorie, on doit sélectionner aléatoirement un groupe de question
    //On récupère le nomrbe de groupe de questions relatif à la catégorie sélectionnée
    //Initialisation de la DAO nécessaire
    $dao = new groupe_dao();

    //Récupération du nombre de groupe de question pour la catégorie sélectionnée
    $tmp = $dao->count($_POST["cat"]);
    $max = $tmp[0];

    //Mise en place de l'index
    $index = rand(0, $max - 1);

    //On récupère tous les groupes relatifs à la catégorie sélectionnée
    $data_groupes = $dao->selectByCat($_POST["cat"]);

    //On récupère l'identifiant du groupe aléatoirement choisi
    $id = $data_groupes[$index]["id"];

    //On charge le groupe
    $group = NULL;
    $group = new groupe($id);

    //On inclue la page principale
    include_once 'view/game/run.php';
    }

/*
 * On traite la fin de la partie
 */

function endGame()
    {
    //On inclue les fichiers nécessaires
    include_once './metier/reponse_user.php';
    include_once './metier/game.php';

    $reponses = array(); //Tableau contenant les futurs objets réponses
    $questions_id = explode("|", $_POST["questions_id"]); //Tableau des identifiants des questions
    $datas = array(); //Tableau des réponses de l'utilisateur
    //Parsage des réponses
    $max = count($questions_id) - 1;
    for ($i = 0; $i < $max; $i++)
        {
        $datas[$i] = $_POST["saveq$i"];
        }

    //Mise en place des objets réponses
    $max = count($datas);
    for ($i = 0; $i < $max; $i++)
        {
        $tmp = new reponse_user(NULL, $questions_id[$i], $datas[$i]);
        $reponses[$i] = $tmp;
        }

    //Création d'un nouvel objet game
    $game = new game(NULL, $_SESSION["user"]->getLogin(), $_POST["time"], $reponses, null);

    //Sauvegarde de la partie
    $result = game::saveGame($game);

    //Une fois que c'est terminée, on fait un redirection pour éviter les refreshs
    //et donc les doublons de sauvegarde
    if ($result)
        {
        //Si tout va bien, on affiche la page finale avec en argument l'id de la partie
        //pour afficher les statistiques
        header('Location: index.php?page=finish&game=' . $game->getGameId());
        } else
        {
        //Sinon, un message d'erreur
        header('Location: index.php?page=error');
        }
    }

?>