<?php

/**
 * @brief Une partie de burger quizz
 */
class game
    {

    ///Login du joueur associé à la partie courante
    private $user_login;
    
    ///Identifiant de la partie
    private $id_game;
    
    ///Durée de la partie
    private $length;
    
    ///Tableau de réponse de l'utilisateur
    private $reponses_user;
    
    ///Date de la partie jouée
    private $date;

    /**
     * @brief Constructeur de game
     * @arg $id_game identifiant de la partie
     * @arg $user_login login du joueur ayant fait la partie
     * @arg $length durée de la partie
     * @arg $reponses_user tableau de réponses du joueur
     * @arg $date Date durant laquelle la partie a été jouée
     */
    public function __construct($id_game, $user_login = NULL, $length = NULL, $reponses_user = NULL, $date = NULL)
        {
        //On met en place les données dans la attributs spécifiques
        if ($user_login == NULL)
            {
            //Chargement automatique des données
            $this->autobuild($id_game);
            } else
            {
            $this->user_login = $user_login;
            $this->length = $length;
            $this->reponses_user = $reponses_user;
            $this->id_game = $id_game;
            $this->date = $date;
            }
        }
        
        private function autobuild($id)
            {
            //Inclusion des fichiers nécessaires
            require_once 'dao/game_dao.php';
            
            //Création d'un game DAO
            $dao = new game_dao();
            
            //Chargement des données
            $datas = $dao->select($id);
            
            //Mise en place des données
            $this->id_game = $id;
            $this->user_login = $datas["user_login"];
            $this->length = $datas["length"];
            $this->date = $datas["date"];
            }

    /*
     * @brief Retourne la durée de la partie
     * @return durée
     */
    public function getLength()
        {
        return $this->length;
        }

    /**
     * @brief Obtient le login de l'utilisateur ayant joué à cette partie
     * @return string
     */
    public function getUserLogin()
        {
        return $this->user_login;
        }

    /**
     * @brief Obtient les réponses de l'utilisateur associées à la partie
     * @return reponses[]
     */
    public function getReponses()
        {
        //Si il n'y a rien comme réponses, on les charge
        if ($this->reponses_user == NULL)
            {
            //Inclusion des fichiers nécessaire
            include_once './dao/reponse_user_dao.php';
            include_once './metier/reponse_user.php';

            //Initialisation du DAO
            $dao = new reponse_user_dao();

            //Chargement des données
            $data = $dao->select($this->id_game);

            //Mise en place d'une variable de stockage
            $tmp = array();
            $i = 0;

            //Encapsulation des données
            foreach ($data as $row)
                {
                $tmp[$i] = new reponse_user($row["game_id"], $row["question_id"], $row["reponse"]);
                $i++;
                }

            //On termine par sauvegarder les données
            $this->reponses_user = $tmp;
            }

        return $this->reponses_user;
        }

    /**
     * @brief Obtient l'identifiant de la partie
     * @return string
     */
    public function getGameId()
        {
        return $this->id_game;
        }

    /**
     * @brief Définit l'identfiant de la partie
     * @arg $id int
     */
    public function setGameId($id)
        {
        $this->id_game = $id;
        }

    /**
     * @brief Obtient quand la partie a été jouée
     */
    public function getDate()
        {
        return $this->date;
        }

    /**
     * @brief Enregistre une partie dans la base de données
     */
    public static function saveGame(&$data)
        {
        //Inclusion des fichier
        include_once './dao/game_dao.php';
        include_once './dao/reponse_user_dao.php';

        //Création d'un nouveau DAO
        $dao = new game_dao();

        //On enregistre la partie
        $dao->insert($data);

        //On récupère la dernière partie enregistrée
        $new_id = $dao->getLastId();

        //On met à jour l'objet passé en argument
        $data->setGameId($new_id[0]);

        //On enregistre les réponses
        $dao = new reponse_user_dao();

        $reps = $data->getReponses();

        foreach ($reps as $rep)
            {
            $rep->setGame($new_id[0]);
            $dao->insert($rep);
            }

        return true;
        }

    }

?>
