<?php
/**
 *
 */
class Adherent
{
    private string $login;
    private string $mdp;
    private string $nomAdherent;
    private string $prenomAdherent;
    private string $email;
    private DateTime $dateAdhesion;
    private int $numCategorie;
    /**
     * @param string $login
     * @param string $mdp
     * @param string $nomAdherent
     * @param string $prenomAdherent
     * @param string $email
     * @param DateTime $dateAdhesion
     * @param int $numCategorie
     */
    public function __construct(string $login, string $mdp, string $nomAdherent, string $prenomAdherent, string $email, DateTime $dateAdhesion, int $numCategorie)
    {
        $this->login = $login;
        $this->mdp = $mdp;
        $this->nomAdherent = $nomAdherent;
        $this->prenomAdherent = $prenomAdherent;
        $this->email = $email;
        $this->dateAdhesion = $dateAdhesion;
        $this->numCategorie = $numCategorie;
    }
    public function __set($property, $value){
        echo "test";
        if($property === "dateAdhesion"){
            $this->dateAdhesion = new DateTime($value);
        }else{
            $this->$property = $value;
        }
    }
    public static function getAllAdherents(): array
    {
        // écriture de la requête
        $requete = "SELECT * FROM Adherent;";
        // envoi de la requête et stockage de la réponse
        $resultat = Database::pdo()->query($requete);
        // traitement de la réponse
        $resultat->setFetchmode(PDO::FETCH_ASSOC);
        $resultat = $resultat->fetchAll();
        $tableau = array();
        foreach ($resultat as $row){
            $tableau[] = new Adherent($row['login'],
                $row['mdp'],
                $row['nomAdherent'],
                $row['prenomAdherent'],
                $row['email'],
                new DateTime($row['dateAdhesion']),
                $row['numCategorie']);
        }
        return $tableau;
    }
    /**
     * @return string
     */
    public function getLogin(): string
    {
        return $this->login;
    }
    /**
     * @param string $login
     */
    public function setLogin(string $login): void
    {
        $this->login = $login;
    }
    /**
     * @return string
     */
    public function getMdp(): string
    {
        return $this->mdp;
    }
    /**
     * @param string $mdp
     */
    public function setMdp(string $mdp): void
    {
        $this->mdp = $mdp;
    }
    /**
     * @return string
     */
    public function getNomAdherent(): string
    {
        return $this->nomAdherent;
    }
    /**
     * @param string $nomAdherent
     */
    public function setNomAdherent(string $nomAdherent): void
    {
        $this->nomAdherent = $nomAdherent;
    }
    /**
     * @return string
     */
    public function getPrenomAdherent(): string
    {
        return $this->prenomAdherent;
    }
    /**
     * @param string $prenomAdherent
     */
    public function setPrenomAdherent(string $prenomAdherent): void
    {
        $this->prenomAdherent = $prenomAdherent;
    }
    /**
     * @return string
     */
    public function getEmail(): string
    {
        return $this->email;
    }
    /**
     * @param string $email
     */
    public function setEmail(string $email): void
    {
        $this->email = $email;
    }
    /**
     * @return DateTime
     */
    public function getDateAdhesion(): DateTime
    {
        return $this->dateAdhesion;
    }
    /**
     * @param DateTime $dateAdhesion
     */
    public function setDateAdhesion(DateTime $dateAdhesion): void
    {
        $this->dateAdhesion = $dateAdhesion;
    }
    /**
     * @return int
     */
    public function getNumCategorie(): int
    {
        return $this->numCategorie;
    }
    /**
     * @param int $numCategorie
     */
    public function setNumCategorie(int $numCategorie): void
    {
        $this->numCategorie = $numCategorie;
    }
    /**
     * @return void
     */
    public function afficher(){
        echo "<p>" . $this->prenomAdherent . " " . $this->nomAdherent . " a rejoint le "
            .$this->dateAdhesion->format('Y-m-d H:i:s');
    }
}