<?php
require_once("mother_entity.php");
/**
 * Classe d'un objet Projet
 * @author Yass
 */

class Project extends Entity{

    private int     $_id;
    private string  $_title;
    private string  $_description;
    private string  $_thumbnail;
    private string  $_content;
    private string  $_creation_date;
    private string  $_status;
    private int     $_user;
    private int     $_category;
    private string  $_creatorname;
    private string  $_user_image;


    /**
     * Constructeur (logique mdrr)
     */
    public function __construct(){
        $this->_prefix = 'project_';
    }

    // Méthode Getter et Setter

    /**
     * Récuperation de l'id du Projet
     * @return int l'id du projet
     */
    public function getId():int{
        return $this->_id;
    }

    /**
     * Mise à jour de l'id du projet 
     * @param int le nouvelle id
     */
    public function setId($id){
        $this->_id = $id;
    }

    /**
     * Récuperation du titre
     * @return string tite du projet
     */
    public function getTitle(){
        return $this->_title;
    }

    /**
     * Mise à jour du titre
     * @param string le nouveau titre
     */
    public function setTitle($title){
        $this->_title = $title;
    }

    /**
     * Récuperation de la description
     * @return string description du projet
     */
    public function getDescription(){
        return $this->_description;
    }

    /**
     * Mise à jour de la description
     * @param string la nouvelle description
     */
    public function setDescription($description){
        $this->_description = $description;
    }


    /**
     * Récuperation de l'image
     * @return string chemin vers l'image
     */
    public function getThumbnail(){
        return $this->_thumbnail;
    }

    /**
     * Mise à jour de l'image
     * @param string chemin vers nouvelle image
     */
    public function setThumbnail($thumbnail){
        $this->_thumbnail = $thumbnail;
    }

    /**
     * Récuperation du contenue
     * @return string contenue du projet
     */
    public function getContent(){
        return $this->_content;
    }

    /**
     * Mise à jour du contenue
     * @param string le nouveau contenue
     */
    public function setContent($content){
        $this->_content = $content;
    }


    /**
     * Récupération de la date de création
     * @param  string lang de formatage de la date (par défaut = "fr_FR")
     * @return string date de création formatter
     */
    public function getCreation_date(string $strFormat = "fr_FR"){
        $objDate = new DateTime($this->_creation_date);

        $objDateFormatter = new IntlDateFormatter(
            $strFormat,
            IntlDateFormatter::LONG,
            IntlDateFormatter::NONE,
            
        );
        $strFormat = $objDateFormatter->format($objDate);
        return $strFormat;
    }

    /**
     * Mise à jour de la date de création
     * @param string la nouvelle date de création
     */
    public function setCreation_date($creation_date){
        $this->_creation_date = $creation_date;
    }

    /**
     * Récupération du statut
     * @return string statut
     */
    public function getStatus(){
        return $this->_status;
    }

    /**
     * Mise à jour du statut
     * @param string le nouveau statut
     */
    public function setStatus($status){
        $this->_status = $status;
    }

    /**
     * Récupération de l'utilisateur
     * @return int id de l'utilisateur
     */
    public function getUser_id(){
        return $this->_user;
    }

    /**
     * Mise à jour de l'utilisateur
     * @param int id de l'utilisateur
     */
    public function setUser_id($user){
        $this->_user = $user;
    }

    /**
     * Récupération de la catégorie
     * @return int id de la catégorie
     */
    public function getCategory(){
        return $this->_category;
    }

    /**
     * Mise à jour de la catégorie
     * @param int id de la catégorie
     */
    public function setCategory($category){
        $this->_category = $category;
    }

    /**
     * Récupération du nom du créateur
     * @return string nom du créateur
     */
    public function getCreatorName(){
        return $this->_creatorname;
    }

    /**
     * Mise à jour du nom du créateur
     * @param string le nom du créateur
     */
    public function setCreatorName($creatorname){
        $this->_creatorname = $creatorname;
    }
	
    /**
     * Récupération du chemin photo profil
     * @return string nom du chemin photo profil
     */
    public function getUser_image(){
        return $this->_user_image;
    }

    /**
     * Mise à jour du chemin photo profil
     * @param string chemin photo profil
     */
    public function setUser_image($user_image){
        $this->_user_image = $user_image;
    }


}