using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; using System.Runtime.CompilerServices; using Xunit; namespace Model { /// /// La classe User représente un utilisateur ayant pour identifiant son pseudo (publique), /// son nom et prénom en privé, pour une utilisation ultérieure et/ou pour identifier de manière /// plus simple l'utilisateur dans la base de donnée (car un pseudo n'est pas forcément explicite) /// [DataContract] public class User : INotifyPropertyChanged { public event PropertyChangedEventHandler? PropertyChanged; void OnPropertyChanged([CallerMemberName]string propertyName = null) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); [DataMember(Order = 3)] public string Pseudo { get => Pseudo; set { if (Pseudo == value) return; Pseudo = value; OnPropertyChanged(); } } [DataMember(Order = 1)] public string Nom { get => Nom; set { if (Nom == value) return; Nom = value; OnPropertyChanged(); } } [DataMember(Order = 2)] public string Prenom { get => Prenom; set { if (Prenom == value) return; Prenom = value; OnPropertyChanged(); } } [DataMember(Order = 4)] private string Mdp { get => Mdp; set { if (Mdp == value) return; Mdp = value; OnPropertyChanged(); } } [DataMember] public List? monstresDejaVu { get; private set; } public User(string pseudo, string nom, string prenom, string mdp, List? monstresVus = null) { if (string.IsNullOrWhiteSpace(pseudo) || string.IsNullOrWhiteSpace(nom) || string.IsNullOrWhiteSpace(prenom) || string.IsNullOrWhiteSpace(mdp)) { throw new ArgumentException("Un User doit avoir un pseudo, un nom, un prénom et un mot de passe au minimum !"); } //Essaye de convertir les paramètres du constructeur (excepté le mot de passe) en int, renvoie true si c'est possible bool isPseudoNumeric = int.TryParse(pseudo, out _); bool isNomNumeric = int.TryParse(nom, out _); bool isPrenomNumeric = int.TryParse(prenom, out _); //Si une des variables est convertissable en int, alors c'est une chaine de caractère uniquement composée de nombres if (isPseudoNumeric || isNomNumeric || isPrenomNumeric) { //Alors on renvoie une exception appelée "FormatException" throw new FormatException("Un User ne peux pas avoir de pseudo/nom/prénom composé uniquement de nombres !"); } Pseudo = pseudo; Nom = nom; Prenom = prenom; Mdp = mdp; monstresDejaVu = monstresVus; } /* public User() { Pseudo = null; Nom = null; Prenom = null; Mdp = null; monstresDejaVu = null; } */ public bool verifyPssw(string pssw) { if(pssw.Equals(Mdp)) { return true; } return false; } } }