using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
namespace Model
{
///
/// Permet de faire le lien entre le modèle et la base de donnée..
///
public class Manager : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public IPersistanceManager Pers { get; private set; }
public Inscrit User
{
get
{
return user;
}
set
{
if (user != value)
{
user = value;
OnPropertyChanged(nameof(User));
}
}
}
private Inscrit user;
public Banque SelectedBanque
{
get => selectedBanque;
set
{
if (selectedBanque != value)
{
selectedBanque = value;
OnPropertyChanged(nameof(SelectedBanque));
}
}
}
private Banque selectedBanque;
public IList BanquesDisponibleInApp
{
get => banquesDisponibleInApp;
set
{
if (banquesDisponibleInApp != value)
{
banquesDisponibleInApp = value;
OnPropertyChanged(nameof(BanquesDisponibleInApp));
}
}
}
private IList banquesDisponibleInApp;
public Compte SelectedCompte
{
get => selectedCompte;
set
{
if(selectedCompte != value)
{
selectedCompte = value;
OnPropertyChanged(nameof(SelectedCompte));
}
}
}
private Compte selectedCompte;
private IList listeDesBanques = new List();
public ReadOnlyCollection AllBanque { get; private set; }
private List listeDesComptes = new List();
public ReadOnlyCollection AllCompte { get; private set; }
public Manager(IPersistanceManager persistance)
{
AllBanque = new ReadOnlyCollection(listeDesBanques);
AllCompte = new ReadOnlyCollection(listeDesComptes);
Pers = persistance;
}
public async void LoadCompte()
{
listeDesComptes.Clear();
if(SelectedBanque == null)
{
throw new ArgumentNullException("Vous n'avez pas de banque disponible");
}
try
{
IList comptes = await Pers.RecupererCompte(SelectedBanque, User);
listeDesComptes.AddRange(comptes);
}
catch(Exception exception)
{
Debug.WriteLine(exception.Message);
}
foreach (Compte compte in listeDesComptes)
{
try
{
compte.LesPla = await Pers.RecupererPlanification(compte);
compte.LesOpe = await Pers.RecupererOperation(compte);
compte.LesEch = await Pers.RecupererEcheance(compte);
}
catch(Exception exception)
{
Debug.WriteLine(exception.Message);
}
}
if (listeDesComptes.Count > 0)
{
selectedCompte = listeDesComptes.First();
}
}
public async void LoadBanque()
{
try
{
listeDesBanques = await Pers.RecupererBanques(User);
}catch(Exception exception)
{
Debug.WriteLine(exception.Message);
}
if(listeDesBanques.Count > 0)
{
SelectedBanque = listeDesBanques.First();
}
}
public async void LoadBanqueDispo()
{
try
{
BanquesDisponibleInApp = await Pers.RecupererBanquesDisponible();
}catch(Exception exception)
{
Debug.WriteLine(exception.Message);
}
}
void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
public bool CompareHash(string mdpBdd, string mdpSent)
{
return Hash.IsEqualHash(mdpBdd, mdpSent);
}
public void deconnexion()
{
User = null;
}
public async void LoadBanques()
{
User.LesBanques = await Pers.RecupererBanques(User);
BanquesDisponibleInApp = await Pers.RecupererBanquesDisponible();
}
public async Task getPassword(string email)
{
Inscrit inscrit = await Pers.RecupererInscrit(email);
return inscrit.Mdp;
}
public async void createUser(string mail)
{
User = await Pers.RecupererInscrit(mail);
}
}
}