/// <summary>
 /// Fabrique le IMatch de la presentationLayer
 /// </summary>
 /// <param name="match">Match de la businessLayer</param>
 /// <returns>Le match pour la présentation layer</returns>
 public static IMatch FabriquerMatch(QuidditchBusinessLayer.IMatch match)
 {
     return new Match(match.Identifiant, match.DateDuMatch, FabriqueArbitre.FabriquerArbitre(match.ArbitreDuMatch),
         FabriqueStade.FabriquerStade(match.StadeDuMatch), FabriqueEquipe.FabriquerEquipe(match.EquipeDomicile), 
         FabriqueEquipe.FabriquerEquipe(match.EquipeVisiteur),
         match.ScoreEquipeDomicile, match.ScoreEquipeVisiteur);
 }
 /// <summary>
 /// Fabrique l'IEquipe de la QuidditchPresentationLayerWPF
 /// </summary>
 /// <param name="equipe">Equipe de la businessLayer</param>
 /// <returns>Le equipe pour la présentation layer</returns>
 public static IEquipe FabriquerEquipe(QuidditchBusinessLayer.IEquipe equipe)
 {
     IList<IJoueur> joueurs = new List<IJoueur>();
     equipe.Joueurs.ToList().ForEach(joueur => {
         joueurs.Add(FabriqueJoueur.FabriquerJoueur(joueur));
     });
     return new Equipe(equipe.Identifiant, equipe.Nom, equipe.Pays, joueurs);
 }
        /// <summary>
        /// Permet de créer un QuidditchWebServices.IMatch à partir d'un QuidditchBusinessLayer.IMatch
        /// </summary>
        /// <param name="match">QuidditchBusinessLayer.IMatch permettant de fabriquer l'objet demandé</param>
        /// <returns>QuidditchWebServices créé</returns>
	    public static QuidditchWebServices.IMatch FabriquerMatch(QuidditchBusinessLayer.IMatch match)
	    {
            List<string> reservations = new List<string>();
            match.ReservationsPourLeMatch.ToList().ForEach(reservation =>
            {
                reservations.Add(reservation.ToString());
            });
            return new Match(match.Identifiant, match.DateDuMatch, match.ArbitreDuMatch.Prenom + " " + match.ArbitreDuMatch.Nom,
                match.StadeDuMatch.Nom, reservations, 
                match.EquipeDomicile.Nom, 
                match.EquipeVisiteur.Nom,
                match.ScoreEquipeDomicile, match.ScoreEquipeVisiteur);
    	}
 /// <summary>
 /// Convertie un poste de la business en un poste de la DataAccessLayerBaseDeDonnees
 /// </summary>
 /// <param name="businessPoste">Poste de la business layer</param>
 /// <returns>Poste de la DalBaseDeDonness</returns>
 public static QuidditchDataAccessLayerBaseDeDonnees.Poste ConvertToDalDatabasePoste(QuidditchBusinessLayer.Poste businessPoste)
 {
     if (businessPoste.ToString() == Poste.Attrapeur.ToString())
     {
         return QuidditchDataAccessLayerBaseDeDonnees.Poste.Attrapeur;
     }
     else if (businessPoste.ToString() == Poste.Batteur.ToString())
     {
         return QuidditchDataAccessLayerBaseDeDonnees.Poste.Batteur;
     }
     else if (businessPoste.ToString() == Poste.Gardien.ToString())
     {
         return QuidditchDataAccessLayerBaseDeDonnees.Poste.Gardien;
     }
     else if (businessPoste.ToString() == Poste.Poursuiveur.ToString())
     {
         return QuidditchDataAccessLayerBaseDeDonnees.Poste.Poursuiveur;
     }
     else
     {
         return QuidditchDataAccessLayerBaseDeDonnees.Poste.None;
     }
 }
 /// <summary>
 /// Convertie un poste de la business en un poste de la présentationLayerWPF
 /// </summary>
 /// <param name="businessPoste">Poste de la business layer</param>
 /// <returns>Poste de la présentation wpf layer</returns>
 public static QuidditchPresentationLayerWPF.Poste ConvertToPresentationPoste(QuidditchBusinessLayer.Poste businessPoste)
 {
     if (businessPoste.ToString() == Poste.Attrapeur.ToString())
     {
         return Poste.Attrapeur;
     }
     else if (businessPoste.ToString() == Poste.Batteur.ToString())
     {
         return Poste.Batteur;
     }
     else if (businessPoste.ToString() == Poste.Gardien.ToString())
     {
         return Poste.Gardien;
     }
     else if (businessPoste.ToString() == Poste.Poursuiveur.ToString())
     {
         return Poste.Poursuiveur;
     }
     else 
     {
         return Poste.None;
     }
 }
 /// <summary>
 /// Converti la référence sur l'enum Poste 
 /// </summary>
 /// <param name="businessPoste">Poste de la BusinessLayer</param>
 /// <returns>Poste de la QuidditchWebServices</returns>
 public static QuidditchWebServices.Poste Convert(QuidditchBusinessLayer.Poste businessPoste)
 {
     if (businessPoste.ToString() == Poste.Attrapeur.ToString())
     {
         return Poste.Attrapeur;
     }
     else if (businessPoste.ToString() == Poste.Batteur.ToString())
     {
         return Poste.Batteur;
     }
     else if (businessPoste.ToString() == Poste.Gardien.ToString())
     {
         return Poste.Gardien;
     }
     else if (businessPoste.ToString() == Poste.Poursuiveur.ToString())
     {
         return Poste.Poursuiveur;
     }
     else 
     {
         return Poste.None;
     }
 }
 /// <summary>
 /// Fabrique le IStade de la QuidditchPresentationLayerWPF
 /// </summary>
 /// <param name="stade">Stade de la businessLayer</param>
 /// <returns>Le stade pour la présentation layer</returns>
 public static IStade FabriquerStade(QuidditchBusinessLayer.IStade stade)
 {
     return new Stade(stade.Identifiant, stade.Nom, stade.Adresse, stade.NombreDePlace, stade.Commission);
 }
        /// <summary>
        /// Constructeur par copie d'une Entite
        /// </summary>
        /// <param name="entiteToCopy">L'entité à copier</param>
        public EntiteBusiness(QuidditchBusinessLayer.IEntite entiteToCopy)
            :this(entiteToCopy.Identifiant)
        {

        }
 /// <summary>
 /// Fabrique le IArbitre de la QuidditchPresentationLayerWPF
 /// </summary>
 /// <param name="arbitre">Arbitre de la QuidditchBusinessLayer</param>
 /// <returns>L'arbitre pour la QuidditchPresentationLayerWPF</returns>
 public static IArbitre FabriquerArbitre(QuidditchBusinessLayer.IArbitre arbitre)
 {
     return new Arbitre(arbitre.Identifiant, arbitre.Prenom, arbitre.Nom, arbitre.DateDeNaissance,
          arbitre.NumeroAssuranceVie);
 }
 /// <summary>
 /// Fabrique le IReservation de la QuidditchWebServices
 /// </summary>
 /// <param name="reservation">Reservation de la QuidditchBusinessLayer</param>
 /// <returns>Le reservation pour la QuidditchWebServices</returns>
 public static IReservation FabriquerReservation(QuidditchBusinessLayer.IReservation reservation)
 {
     return new Reservation(reservation.Identifiant, reservation.Prix, reservation.Place);
 }
 /// <summary>
 /// Constructeur par copie d'une Equipe
 /// </summary>
 /// <param name="equipeToCopy">Instance de l'équipe à copier</param>
 public EquipeBusiness(QuidditchBusinessLayer.IEquipe equipeToCopy)
     :this(equipeToCopy.Identifiant, equipeToCopy.Nom, equipeToCopy.Pays ,equipeToCopy.Joueurs)
 {
 
 }
 /// <summary>
 /// Constructeur d'un match acceptant 9 arguments
 /// </summary>
 /// <param name="identifiant">Identifiant du match</param>
 /// <param name="dateDuMatch">Date du match</param>
 /// <param name="arbitreDuMatch">Arbitre du match</param>
 /// <param name="stadeDuMatch">Stade du match</param>
 /// <param name="equipeDomicile">Equipe domicile</param>
 /// <param name="equipeVisiteur">Equipe visiteur</param>
 /// <param name="scoreDomicile">Score de l'équipe à domicile</param>
 /// <param name="scoreVisiteur">Score de l'équipe visiteur</param>
 public MatchBusiness(int identifiant, DateTime dateDuMatch, QuidditchBusinessLayer.IArbitre arbitreDuMatch,
     QuidditchBusinessLayer.IStade stadeDuMatch, 
     QuidditchBusinessLayer.IEquipe equipeDomicile, QuidditchBusinessLayer.IEquipe equipeVisiteur, 
     int scoreDomicile, int scoreVisiteur )
     : base(identifiant)
 {
     DateDuMatch = dateDuMatch;
     ArbitreDuMatch = arbitreDuMatch;
     StadeDuMatch = stadeDuMatch;
     EquipeDomicile = equipeDomicile;
     EquipeVisiteur = equipeVisiteur;
     ScoreEquipeDomicile = scoreDomicile;
     ScoreEquipeVisiteur = scoreVisiteur;
 }
        /// <summary>
        /// Constructeur par copie d'une réservation
        /// </summary>
        /// <param name="reservationToCopy">Instance de Réservation à copier</param>
        public ReservationBusiness(QuidditchBusinessLayer.IReservation reservationToCopy)
            : this(reservationToCopy.Identifiant, reservationToCopy.Prix, reservationToCopy.Place)
        {

        }
        /// <summary>
        /// Constructeur par copie d'un joueur
        /// </summary>
        /// <param name="joueurToCopy">L'instance de joueur à copier</param>
        public JoueurBusiness(QuidditchBusinessLayer.IJoueur joueurToCopy)
            : this(joueurToCopy.Identifiant, joueurToCopy.Prenom, joueurToCopy.Nom, 
                joueurToCopy.DateDeNaissance, joueurToCopy.Capitaine, joueurToCopy.Poste, 
                joueurToCopy.NombreDeSelection)
        {

        }
 /// <summary>
 /// Constructeur d'un joueur acceptant 6 arguments
 /// </summary>
 /// <param name="identifiant">Identifiant du joueur</param>
 /// <param name="prenom">Prénom du joueur</param>
 /// <param name="nom">Nom du joueur</param>
 /// <param name="dateDeNaissance">Date de naissance du joueur</param>
 /// <param name="isCapitaine">Si le joueur est capitaine</param>
 /// <param name="poste">Poste du joueur</param>
 /// <param name="scoreCoupe">Score du joueur durant la coupe</param>
 /// <param name="nombreDeSelection">Nombre de sélection du joueur</param>
 public JoueurBusiness(int identifiant, string prenom, string nom, DateTime dateDeNaissance, bool isCapitaine, 
     QuidditchBusinessLayer.Poste poste, int nombreDeSelection)
     : base(identifiant, prenom, nom, dateDeNaissance)
 {
     Capitaine = isCapitaine;
     Poste = poste;
     NombreDeSelection = nombreDeSelection;
 }
        /// <summary>
        /// Constructeur par copie d'une instance de Personne
        /// </summary>
        /// <param name="personneToCopy">Instance de la classe personne à copier</param>
        public PersonneBusiness(QuidditchBusinessLayer.IPersonne personneToCopy)
            :this(personneToCopy.Identifiant, personneToCopy.Prenom, personneToCopy.Nom, 
                personneToCopy.DateDeNaissance)
        {

        }
 /// <summary>
 /// Fabrique le IJoueur de la QuidditchPresentationLayerWPF
 /// </summary>
 /// <param name="joueur">Joueur de la businessLayer</param>
 /// <returns>Le joueur pour la présentation layer</returns>
 public static IJoueur FabriquerJoueur(QuidditchBusinessLayer.IJoueur joueur)
 {
     return new Joueur(joueur.Identifiant, joueur.Prenom, joueur.Nom, joueur.DateDeNaissance, joueur.Capitaine,
         ConverterPoste.ConvertToPresentationPoste(joueur.Poste), joueur.NombreDeSelection);
 }
        /// <summary>
        /// Constructeur d'un Match par copie
        /// </summary>
        /// <param name="matchToCopy">L'instance de Match à copier</param>
        public MatchBusiness(QuidditchBusinessLayer.IMatch matchToCopy)
            : this(matchToCopy.Identifiant, matchToCopy.DateDuMatch, matchToCopy.ArbitreDuMatch,
            matchToCopy.StadeDuMatch, matchToCopy.EquipeDomicile,
            matchToCopy.EquipeVisiteur, matchToCopy.ScoreEquipeDomicile, matchToCopy.ScoreEquipeVisiteur)
        {

        }
        /// <summary>
        /// Constructeur par copie d'une Stade
        /// </summary>
        /// <param name="stadeToCopy">Stade à copier</param>
        public StadeBusiness(QuidditchBusinessLayer.IStade stadeToCopy)
            : this(stadeToCopy.Identifiant, stadeToCopy.Nom, stadeToCopy.Adresse, stadeToCopy.NombreDePlace, stadeToCopy.Commission)
        {

        }