<?php

namespace Models;

use Bases\Model;

class Utilisateur extends Model
{

    protected $table = "utilisateurs";

    /**
     * Retourne tous les utilisateurs
     *
     * @return array|false
     */
    public function toutUtilisateurs()
    {
        $sql = "SELECT $this->table.*
                FROM $this->table ";

        $requete = $this->pdo()->prepare($sql);

        $requete->execute();

        return $requete->fetchAll();
    }

    /**
     * Retourne un compte en fonction de son id
     *
     * @param int $id
     * @return object|false
     */
    public function utilisateurParId($id)
    {

        $sql = "SELECT $this->table.*
                FROM $this->table
                WHERE $this->table.id = :id";

        $requete = $this->pdo()->prepare($sql);

        $requete->execute([
           ":id" => $id, 
        ]);

        return $requete->fetch();
    }

    /**
     * Insère un nouvelle utilisateur
     *
     * @param string $nom
     * @param string $courriel
     * @param string $mdp
     * 
     * @return void
     */
    public function inserer(string $nom, string $courriel, string $mdp)
    {
        $sql = "INSERT INTO $this->table (nom, courriel, mdp)
                VALUES (:nom, :courriel, :mdp)";

        $requete = $this->pdo()->prepare($sql);

        return $requete->execute([
            ":nom" => $nom,
            ":courriel" => $courriel,
            ":mdp" => $mdp,
        ]);
    }

    public function modifier( int $id, string $nom, string $courriel, string $mdp)
    {
        $sql = "UPDATE $this->table 
                SET nom = :nom,
                    courriel = :courriel,
                     mdp = :mdp
                WHERE $this->table.id = $id";

        $requete = $this->pdo()->prepare($sql);

        return $requete->execute([
            ":nom" => $nom,
            ":courriel" => $courriel,
            ":mdp" => $mdp,
        ]);
    }

    /**
     * Retourne un utilisateur selon un courriel
     *
     * @param string $courriel
     * @return object|false
     */
    public function parCourriel($courriel)
    {

        // Créer la requête
        $sql = "SELECT * 
                FROM $this->table
                WHERE courriel = :courriel";

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

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

        return $requete->fetch();
    }

    /**
     * Supprime un utilisateur
     *
     * @param int $id
     * @return bool
     */
    function supprimer($id)
    {

        $sql = "DELETE FROM $this->table 
                WHERE id = :id";

        $requete = $this->pdo()->prepare($sql);

        return $requete->execute([
            ":id" => $id
        ]);
    }
}
