using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using Model; using System.Threading.Tasks; using System.ComponentModel; using Newtonsoft.Json; namespace Model { public class Inscrit:INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public int Id { get; set; } public string Nom { get; set; } public string Prenom { get; set; } /// <summary> /// Représente l'adresse mail de l'inscrit. /// </summary> public string Mail { get => mail; set { if (value.Length == 0) { throw new InvalidMailException(value, "Longueur d'un mail doit être superieur a 0"); } if (!Regex.IsMatch(value, "(@)(.+)")) { throw new InvalidMailException(value, "Un mail doit contenir le symbole '@'"); } mail = value; } } private string mail; /// <summary> /// Représente le mot de passe de l'inscrit pour se connecter à son compte. /// </summary> public string Mdp { get => mdp; set { /*if (value.Length <= 8) { throw new InvalidPasswordException(value, "La longeur d'un mot de passe doit être obligatoirement superieure a 8"); } if (!Regex.IsMatch(value, "[A-Z]+")) { throw new InvalidPasswordException(value, "Le mot de passe doit contenir au moins une lettre majuscule"); } if (!Regex.IsMatch(value, "[0-9]+")) { throw new InvalidPasswordException(value, "Le mot de passe doit contenir au moins un chiffre"); }*/ mdp = value; } } private string mdp; void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); public double SoldeTotal { get; private set; } /// <summary> /// Type de monnaie pour laquel est le solde total. /// </summary> public Devises Dev { get; private set; } public IList<Banque> LesBanques { get => lesBanques; set { if(lesBanques!=value) { lesBanques = value; OnPropertyChanged(nameof(LesBanques)); } } } private IList<Banque> lesBanques; [JsonConstructor] public Inscrit(int id, string nom, string mail, string prenom, string mdp, double soldeTotal = 0) { Id = id; Nom = nom; Mail = mail; Prenom = prenom; Mdp = mdp; SoldeTotal = soldeTotal; lesBanques = new List<Banque>(); } public Inscrit(int id, string nom, string mail, string prenom, string mdp, double soldeTotal, List<Banque> lesbanques) : this(id, nom, mail, prenom, mdp, soldeTotal) { LesBanques = lesbanques; } public Inscrit(List<Banque> lesbanques) { LesBanques = lesbanques; } public void ajouterBanque(Banque banque) { LesBanques.Add(banque); } /// <summary> /// Permet de supprimer une banque de la liste LesBanques /// </summary> /// <param name="banque"> Objet de type banque correspondant à la banque qui doit être supprimé de la liste.</param> public void SupprimerBanque(Banque banque) { LesBanques.Remove(banque); } /// <summary> /// Permet de changer la devise utilisé pour le solde total /// </summary> /// <param name="devise">Correspond à la devise devant être utilisé.</param> public void ChoisirDevise(Devises devise) { Dev = devise; } public override string ToString() { return Id + " " + Nom + " " + Prenom + " " + Mail + " " + Mdp; } } }