using System.ComponentModel; using System.Runtime.CompilerServices; using System.Runtime.Serialization; namespace Model { /// /// Représente un commentaire. /// [DataContract] public class Review : INotifyPropertyChanged { [DataMember] /// /// Obtient ou définit la note du commentaire. /// public double Rate { get => rate; private set { if (value < 0 || value > 5) rate = 0; else rate = value; NotifyPropertyChanged(); } } private double rate; [DataMember] /// /// Obtient ou définit le texte du commentaire. /// public string? Text { get => text; private set { if (string.IsNullOrWhiteSpace(value)) text = "Default"; else text = value; NotifyPropertyChanged(); } } private string? text; /// /// Événement déclenché lorsque les propriétés de l'objet changent. /// public event PropertyChangedEventHandler? PropertyChanged; private void NotifyPropertyChanged([CallerMemberName] string propertyName = "") => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); [DataMember] /// /// Obtient ou définit le nom de l'auteur du commentaire. /// public string AuthorName { get; set; } /// /// Initialise une nouvelle instance de la classe avec le nom de l'auteur, la note et le texte du commentaire. /// /// Le nom de l'auteur du commentaire. /// La note du commentaire. /// Le texte du commentaire. public Review(string username, double rate, string text) { AuthorName = username; Rate = rate; Text = text; } /// /// Retourne une représentation sous forme de chaîne de l'objet courant. /// /// La représentation sous forme de chaîne de l'objet courant. public override string ToString() { return $"{AuthorName} : {Rate} : {Text}"; } /// /// Modifie le texte du commentaire. /// /// Le nouveau texte du commentaire. public void EditReview(string text) { if (!string.IsNullOrWhiteSpace(text)) Text = text + " (Modifié)"; } /// /// Modifie la note du commentaire. /// /// La nouvelle valeur de la note. public void EditRate(double newval) { if (newval >= 0 && newval <= 5) Rate = newval; } } }