using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using MangaMap.Stub;
namespace MangaMap.Model
{
///
/// Classe responsable de la gestion globale de l'application de gestion de listes d'anime.
///
public class Manager : System.ComponentModel.INotifyPropertyChanged
{
///
/// Obtient ou définit le gestionnaire de persistance utilisé pour charger et sauvegarder les données.
///
public IPersistanceManager Persistance { get; set; }
///
/// Obtient la liste des administrateurs de l'application.
///
public List Admins { get; private set; }
///
/// Obtient la liste des utilisateurs de l'application.
///
public List Utilisateurs { get; private set; }
private ObservableCollection oeuvres;
///
/// Obtient ou définit la collection observable des oeuvres de l'application.
///
public ObservableCollection Oeuvres
{
get
{
return oeuvres;
}
set
{
oeuvres = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler? PropertyChanged;
void OnPropertyChanged([CallerMemberName] string propertyName = null)
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
///
/// Obtient ou définit l'utilisateur actuellement connecté à l'application.
///
public Utilisateur UtilisateurActuel { get; set; }
///
/// Obtient ou définit une valeur indiquant si l'utilisateur actuel est un administrateur.
///
public bool isAdmin { get; set; }
///
/// Initialise une nouvelle instance de la classe Manager avec un gestionnaire de persistance spécifié.
///
/// Le gestionnaire de persistance à utiliser.
public Manager(IPersistanceManager Pers)
{
Admins = new List();
Utilisateurs = new List();
Oeuvres = new ObservableCollection();
UtilisateurActuel = new Utilisateur();
isAdmin = false;
Persistance = Pers;
}
///
/// Initialise une nouvelle instance par défaut de la classe Manager.
///
public Manager()
{
Admins = new List();
Utilisateurs = new List();
Oeuvres = new ObservableCollection();
UtilisateurActuel = new Utilisateur();
isAdmin = false;
}
/*public Utilisateur charger()
{
var donnees = Persistance.chargeDonne();
foreach (var item in donnees.Item1)
{
Oeuvres.Add(item);
}
Utilisateurs.AddRange(donnees.Item2);
// récupérer le premier utilisateur de la liste Utilisateurs :
Utilisateur utilisateurActuel = Utilisateurs.FirstOrDefault();
return utilisateurActuel; // Renvoyez l'utilisateur actuel
}*/
///
/// Charge les données de l'application à partir du gestionnaire de persistance.
///
public void charger()
{
var donne = Persistance.chargeDonne();
foreach (var item in donne.Item1)
{
Oeuvres.Add(item);
}
Utilisateurs.AddRange(donne.Item2);
}
///
/// Sauvegarde les données de l'application en utilisant le gestionnaire de persistance.
///
public void sauvegarder()
{
Persistance.sauvegarder(Oeuvres, Utilisateurs);
}
}
}