using System.ComponentModel.DataAnnotations;

namespace Webzine.Entity
{
    /// <summary>
    /// Classe représentant un commentaire laissé par un utilisateur sur un titre.
    /// Lien avec l'entité <see cref="Titre"/> : un titre peut avoir plusieurs commentaires, mais un commentaire n'a qu'un seul titre.
    /// </summary>
    public class Commentaire
    {
        /// <summary>
        /// Identifiant unique du commentaire.
        /// </summary>
        public int IdCommentaire { get; set; }

        /// <summary>
        /// Contenu du commentaire laissé par l'utilisateur. Doit être compris entre 10 et 1000 caractères et est obligatoire.
        /// </summary>
        [Required]
        [MinLength(10)]
        [MaxLength(1000)]
        [Display(Name = "Commentaire")]
        public string Contenu { get; set; }

        /// <summary>
        /// Nom de l'auteur du commentaire. Doit être compris entre 2 et 30 caractères et est obligatoire.
        /// </summary>
        [Required]
        [MinLength(2)]
        [MaxLength(30)]
        [Display(Name = "Nom")]
        public string Auteur { get; set; }

        /// <summary>
        /// Date de création du commentaire. Représente la date à laquelle le commentaire a été laissé par l'utilisateur. Doit être une date valide et est obligatoire.
        /// </summary>
        [Required]
        [Display(Name = "Date de création")]
        public DateTime DateCreation { get; set; }

        /// <summary>
        /// Identifiant du titre associé à ce commentaire. Clé étrangère vers l'entité <see cref="Titre"/>.
        /// </summary>
        public int IdTitre { get; set; }

        /// <summary>
        /// Référence au titre associé à ce commentaire. Permet d'accéder aux informations du titre à partir du commentaire.
        /// </summary>
        public Titre Titre { get; set; }
    }
}
