<?php

namespace Models;

use Bases\Model;

class Utilisateur extends Model
{
    protected $table = "utilisateurs";

    /**
     * retourne un utilisateur selon le nom 
     *
     * @param string $nom
     * @return object|false 
     */
    public function parNom($nom)
    {
        // Créer la requête 
        $sql = "SELECT *
                FROM $this->table
                WHERE nom = :nom";

        // Préparer la requête 
        $requete = $this->pdo()->prepare($sql);

        // Exécuter la requête (associer valeur à placeholder)
        $requete->execute([
            ":nom" => $nom
        ]);

        return $requete->fetch();
    }

    /**
     * Ajouter un nouvel utilisateur
     *
     * @param string $nom
     * @param string $courriel
     * @param string $mot_de_passe
     * @return bool
     */
    public function ajouter($nom, $courriel, $mot_de_passe)
    {
        // Créer la requête
        $sql = "INSERT INTO $this->table (nom, courriel, mot_de_passe)
                VALUES (:nom, :courriel, :mot_de_passe)";

        // Préparer la requête
        $requete = $this->pdo()->prepare($sql);

        // Exécuter la requête (associer valeur à placeholder)
        return $requete->execute([
            ":nom" => $nom,
            ":courriel" => $courriel,
            ":mot_de_passe" => $mot_de_passe,
        ]);
    }

    /**
     * Met à jour un compte existant selon l'id
     *
     * @param int $id
     * @param string $nom
     * @param string $courriel
     * @return array|false    
     */
    public function modifier($id, $nom, $courriel)
    {
        // Créer la requête
        $sql = "UPDATE $this->table SET nom=:nom, courriel=:courriel WHERE id=:id";

        // Préparer la requête
        $requete = $this->pdo()->prepare($sql);

        // Exécuter la requête (associer valeur à placeholder)
        return $requete->execute([
            ":id" => $id,
            ":nom" => $nom,
            ":courriel" => $courriel,
        ]);
    }

    /**
     * Supprime un compte 
     *
     * @param int $id
     * @return bool
     */
    public function supprimer($id)
    {
        // Créer la requête
        $sql = "DELETE FROM $this->table WHERE id=:id";

        // Préparer la requête
        $requete = $this->pdo()->prepare($sql);

        // Exécuter la requête (associer valeur à placeholder
        return $requete->execute([
            ":id" => $id
        ]);
    }

    /**
     * Retourne tout les utilisateurs
     *
     * @return array|false 
     */
    public function toutUtilisateurs()
    {
        // Créer la requête
        $sql = "SELECT * FROM $this->table";

        // Préparer la requête
        $requete = $this->pdo()->prepare($sql);

        // Exécuter la requête
        $requete->execute();
        return $requete->fetchAll();
    }
}
