using BowlingLib.Model;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Business
{
///
/// Classe pour gerer le jeux
///
public class Manager
{
#region propriétés
public ReadOnlyCollection Parties { get; private set; }
private readonly List parties = new();
public ReadOnlyCollection Equipes { get; private set; }
private readonly List equipes = new();
public ReadOnlyCollection Joueurs { get; private set; }
private readonly List joueurs = new();
public IDataManager JoueurDataManager => joueurDataManager;
private readonly IDataManager joueurDataManager;
public IDataManager PartieDataManager => partieDataManager;
private readonly IDataManager partieDataManager;
public IDataManager EquipeDataManager => equipeDataManager;
private readonly IDataManager equipeDataManager;
#endregion
#region Constructeurs
public Manager(IDataManager joueurManager)
{
this.joueurDataManager = joueurManager;
Joueurs = new ReadOnlyCollection(joueurs);
}
public Manager(IDataManager partieDataManager)
{
this.partieDataManager = partieDataManager;
Parties = new ReadOnlyCollection(parties);
}
public Manager(IDataManager equipeDataManager)
{
this.equipeDataManager = equipeDataManager;
Equipes = new ReadOnlyCollection(equipes);
}
public Manager(IDataManager equipeDataManager, IDataManager partieDataManager, IDataManager joueurManager)
{
this.equipeDataManager = equipeDataManager;
Equipes = new ReadOnlyCollection(equipes);
this.partieDataManager = partieDataManager;
Parties = new ReadOnlyCollection(parties);
this.joueurDataManager = joueurManager;
Joueurs = new ReadOnlyCollection(joueurs);
}
#endregion
#region Methodes
///
/// Ajoute un joueur à la liste des joueurs
///
///
///
public Task AddJoueur(Joueur joueur)
{
if (joueurDataManager == null)
{
return Task.FromResult(false);
}
return joueurDataManager.Add(joueur);
}
///
/// Ajoute une partie à la liste des parties
///
///
///
public Task AddPartie(Partie partie)
{
if (partieDataManager == null)
{
return Task.FromResult( false);
}
return partieDataManager.Add(partie);
}
///
/// Ajoute une équipe à la liste des équipes
///
///
///
public async Task AddEquipe(Equipe equipe)
{
if (equipeDataManager == null)
{
return false;
}
return await equipeDataManager.Add(equipe);
}
///
/// Retourne la liste des joueurs
///
///
public async Task DeleteJoueur(Joueur joueur)
{
if (joueurDataManager == null)
{
return false;
}
return await JoueurDataManager.Delete(joueur);
}
///
/// Supprime une partie
///
///
public async Task DeletePartie(Partie partie)
{
if (partieDataManager == null)
{
return false;
}
return await partieDataManager.Delete(partie);
}
///
/// Supprime une équipe
///
///
public async Task DeleteEquipe(Equipe equipe)
{
if (equipeDataManager == null)
{
return false;
}
return await equipeDataManager.Delete(equipe);
}
///
/// Retourne la liste des joueurs
///
///
public async Task UpdateJoueur(Joueur joueur)
{
if (joueurDataManager == null)
{
return false;
}
return await JoueurDataManager.Update(joueur);
}
///
/// Met à jour une partie
///
///
public async Task UpdatePartie(Partie partie)
{
if (partieDataManager == null)
{
return false;
}
return await partieDataManager.Update(partie);
}
///
/// Met à jour une équipe
///
///
public async Task UpdateEquipe(Equipe equipe)
{
if (equipeDataManager == null)
{
return false;
}
return await equipeDataManager.Update(equipe);
}
///
/// Retourne la liste des joueurs
///
///
public async Task> GetAllJoueur()
{
return await JoueurDataManager.GetAll();
}
///
/// Retourne les dernières parties du joueur
///
///
public async Task> GetAllPartie()
{
return await partieDataManager.GetAll();
}
///
/// Retourne les Equipe en fonction d'une partie
///
///
public async Task> GetAllEquipe()
{
return await equipeDataManager.GetAll();
}
#endregion
}
}