<?php
/**
 * @brief Classe DAO relatif à la classe reponse_user
 */
class reponse_user_dao extends dao {
    
    /**
     * @brief Fonction gérant la récupération des réponses, de la table link_game_question
     * @arg $idgame identifiant de la partie (% pour tout)
     * @arg $idquest identifiant de la question (% pour tout)
     * @return tableau d'objet reponse_user ou un objet reponse_user
     */
    public function select($idgame, $idquest = NULL) {
        //Inclusion de l'objet reponse_user
        include_once 'metier/reponse_user.php';

        //Mise en place de la première condition
        $cond1 = "`game_id`='$idgame'";

        //Si on a mis un %, on charge toutes les partie => la condition devient TRUE
        if ($idgame == "%") {
            $cond1 = "TRUE";
        }

        //Mise en place de la seconde condition
        $cond2 = "`question_id`='$idquest'";

        //Si  on a mis un %, on charge toutes les questions => la condition devient TRUE
        if ($idquest == "%") {
            $cond2 = "TRUE";
        }

        //On met en place la requête   
        $query = "SELECT * FROM `link_game_question` WHERE $cond1 AND $cond2";

        //On récupère les données
        $result = $this->db->query($query);

        //Si on a pas de données, inutilise d'aller plus loin
        if (!$result) {
            return FALSE;
        }

        //On parse les résultats en fonction de chaque cas
        if ($idquest == "%") {
            //On demande toutes les questions du jeu spécifié
            $return = array();
            $i = 0;

            //On boucle pour chaque occurence
            foreach ($result as $row) {
                $return[$i] = new reponse_user($row["game_id"], $row["question_id"], $row["reponse"]);
                $i++;
            }
        } else {
            //On demande une seule partie
            $return = $result->fetch();
        }

        //On retourne les résultats
        return $return;
    }

    /**
     * @brief Insert un objet reponse_user dans la base de données
     * @arg $objet objet reponse_user à inserer
     */
    public function insert(&$objet) {
        //Récupération des données
        $game_id = $objet->getGame();
        $question_id = $objet->getQuestion();
        $reponse = $objet->getReponse();

        //Mise en place de la requête
        $query = "INSERT INTO `link_game_question` 
                    (`game_id`,`question_id`,`reponse`)
                    VALUES ('$game_id','$question_id','$reponse')";

        //Envoie de la requête
        try {
            $this->db->query($query);
            return TRUE;
        } catch (Exception $ex) {
            if (config::$debug) {
                echo $ex->getMessage();
            }

            return FALSE;
        }
    }

    /**
     * @brief Fonction obsolète mais nécessaire pour l'héritage de DAO
     * @note on ne peut pas mettre à jour les réponses de l'utilisateur
     */
    public function update(&$objet) {
        //On ne fait rien
    }

    /**
     * @brief Fonction obsolète mais nécessaire pour l'héritage de DAO
     * @note la réponse de l'utilisateur est automatiquement supprimée par la suppression de la partie elle-même, via un ON DELETE CASCADE
     */
    public function delete($idgame) {
        //One ne fait rien
    }


}

?>