using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
using System.Text;
namespace notre_bibliotheque
{
///
/// Le gestionaire de comptes permet de gerrer les comptes, il sert d'interface entre le model et l'application
///
public class GestionaireDeComptes : Gestionaire, INotifyPropertyChanged
{
public bool IsSomeoneConnected => !(ItemsComptes.ItemCourant == null);
// ItemsComptes contien, entre autre, la liste des comptes
public Items ItemsComptes { get; set;}
public GestionaireDeComptes()
{
ItemsComptes = new Items();
}
public GestionaireDeComptes(Items its)
{
ItemsComptes = its;
}
public event PropertyChangedEventHandler PropertyChanged;
///
/// Permet de verrifier si un nouveau compte est acceptable
///
/// Identrifiant du nouveau compte
/// Mot de passe du nouveau compte
/// Verrification du mot de passe
/// Autorise l'accès au mode administrateur
/// Si le nouveau compte est validé, il est retourné
public Compte VerfierCreationCompte(string id, string mdp1, string mdp2,bool admin)
{
foreach (Compte c in ItemsComptes.LesItems)
{
if (id == c.Identifiant)
{
throw new Exception("Ce nom d'utilisateur existe déjà");
}
}
if (mdp1 != mdp2)
{
throw new Exception("Les mots de passes sont différents");
}
Compte tmp = new Compte(id, mdp1, admin);
return tmp;
}
///
/// Permet de charger les comptes grace à la proprieté Persistance de Gestionaire
///
public void ChargerLesComptes()
{
ItemsComptes.LesItems.Clear();
var lesComptesChargés = Persistance?.ChargerLesDonnées()["Comptes"];
if (lesComptesChargés == null)
{
throw new Exception("PB : chargement imposible");
}
foreach (Compte it in lesComptesChargés)
{
ItemsComptes.Ajouter(it);
}
}
public void onPropertyChanged(string prop)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
}
}