using Newtonsoft.Json; using System.ComponentModel; namespace Model { public class Compte : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public string Identifiant { get; set; } public string Nom { get; set; } public double Solde { get; set; } public DateTime DerniereModification { get; set; } public IList LesOpe { get => lesOpe; set { if (lesOpe != value) { lesOpe = value; OnPropertyChanged(nameof(LesOpe)); } } } private IList lesOpe = new List(); public IList LesPla { get; set; } = new List(); public IList LesEch { get; set; } = new List(); [JsonConstructor] public Compte(string id, string nom) { Identifiant = id; Nom = nom; Solde = 0; DerniereModification = DateTime.Now; } public Compte(string id,string nom, double solde) : base() { Nom = nom; Solde = solde; } public Compte(string id, string nom, double solde, List lesOpe) { Identifiant = id; Nom = nom; Solde = solde; DerniereModification = DateTime.Now; LesOpe = lesOpe; } public Compte(string id, string nom, double solde, List lesOpe, List lesPla) { Identifiant = id; Nom = nom; Solde = solde; DerniereModification = DateTime.Now; LesPla = lesPla; LesOpe = lesOpe; } public Compte(string id, string nom, double solde, List lesOpe, List lesPla, List lesEch) { Identifiant = id; Nom = nom; Solde = solde; DerniereModification = DateTime.Now; LesPla = lesPla; LesOpe = lesOpe; LesEch = lesEch; } /// /// Permet de modifier le solde présent sur le compte. /// /// Nouvelle quantité d'argent présent sur le compte. public void modifierSolde(double s) { Solde = s; } void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); public void ajouterOperation(Operation o) { if (o == null) throw new NullReferenceException(); LesOpe.Add(o); } public void cacherOperation(Operation o) { throw new NotImplementedException(); } /// /// Permet de supprimer une operation de la liste LesOpe /// /// Objet de type operation devant être supprimé de la liste public void supprimerOperation(Operation o) { LesOpe.Remove(o); } /// /// Sert à ajouter une echenance à la liste LesEch /// /// Objet de type échéance à ajouter à la liste /// Déclenchée quand l'opération placé en paramètre est nulle. public void ajoutEcheance(Echeance e) { if (e == null) throw new NullReferenceException(); LesEch.Add(e); } /// /// Permet de supprimer une echeance de la liste LesEch /// /// Objet de type echeance devant être supprimé de la liste public void supprimerEcheance(Echeance e) { LesEch.Remove(e); } /// /// Sert à ajouter une planification à la liste LesPla /// /// Objet de type planification à ajouter à la liste /// Déclenchée quand l'opération placé en paramètre est nulle. public void ajoutPlanification(Planification p) { if (p == null) throw new NullReferenceException(); LesPla.Add(p); } /// /// Permet de supprimer une planification de la liste LesPla /// /// Objet de type planification devant être supprimé de la liste public void supprimerPlanification(Planification p) { LesPla.Remove(p); } /// /// Permet de rédéfinir la méthode Equals en comparant le type des 2 objets. /// /// L'objet dont on souhaite savoir s'il est de type compte public override bool Equals(object obj) { if (obj == null || GetType() != obj.GetType()) { return false; } else { Compte objCompte = (Compte) obj; if(objCompte.Identifiant == Identifiant && objCompte.DerniereModification == DerniereModification) return true; } return base.Equals(obj); } public override int GetHashCode() { return base.GetHashCode(); } public override string ToString() { return Identifiant + " " + Nom + " " + Solde + " " + DerniereModification; } } }