/// <summary>
        /// Constructeur.
        /// </summary>
        /// <param name="tm">Tournoi concerné</param>
        public TournoiDetailsModel(TournoiModel tm)
        {
            m_tournoi = tm;

            m_quartFinales = m_tournoi.Matchs.Where(m => m.PhaseTournoi == EPhaseTournoiModel.QuartFinale).ToList();
            m_demiFinales = m_tournoi.Matchs.Where(m => m.PhaseTournoi == EPhaseTournoiModel.DemiFinale).ToList();
            if (m_demiFinales.Count <= 0)
                m_demiFinales = null;
            m_finale = m_tournoi.Matchs.Where(m => m.PhaseTournoi == EPhaseTournoiModel.Finale).SingleOrDefault();
        }
        public BetModel(TournoiModel tournoi)
        {
            IDTournoi = tournoi.ID;
            List<JediModel> tmp = new List<JediModel>();

            // Liste des jedis concourrants
            foreach (MatchModel m in tournoi.Matchs)
            {
                tmp.Add(m.Jedi1);
                tmp.Add(m.Jedi2);
            }

            // Unique occurrence de chacun d'eux
            m_availableJedis = tmp.DistinctBy(j => j.ID).ToList();
        }
        /// <summary>
        /// Constructeur.
        /// </summary>
        /// <param name="tournoi">Tournoi à éditer.</param>
        /// <param name="mModels">Liste des matchs disponibles.</param>
        public TournoiEditModel(TournoiModel tournoi, List<MatchModel> mModels)
            : base(mModels)
        {
            m_tournoi = tournoi;

            Nom = m_tournoi.Nom;

            // Affecte les sélections
            List<MatchModel> quartFinale = m_tournoi.Matchs.Where(m => m.PhaseTournoi == EPhaseTournoiModel.QuartFinale).ToList();
            if (quartFinale.Count >= 4)
            {
                SelectedMatch1 = quartFinale[0];
                SelectedMatch2 = quartFinale[1];
                SelectedMatch3 = quartFinale[2];
                SelectedMatch4 = quartFinale[3];
            }
        }
        public PreparedBetTournoiModel(TournoiModel tournoi, string username, int mise, int idBetJedi)
            : base(tournoi)
        {
            JediWebServiceClient webService = new JediWebServiceClient();
            CustomUserManager manager = new CustomUserManager(webService);

            // L'utilisateur gagne son pari
            if (m_matchs[6].IdVainqueur == idBetJedi)
            {
                manager.UpdateUserPointsByAmount(username, 2 * mise);   // Double sa mise
            }
            // L'utilisateur perd son pari
            else
            {
                manager.UpdateUserPointsByAmount(username, -mise);
            }

            webService.Close();
        }
        /// <summary>
        /// Constructeur.
        /// </summary>
        /// <param name="tournoi">Tournoi à traiter.</param>
        public PreparedTournoiModel(TournoiModel tournoi)
        {
            m_tournoi = tournoi;
            m_matchs = new List<MatchModel>();

            JediWebServiceClient webService = new JediWebServiceClient();
            int winnerID = -1;

            // Ajoute et calcul les 4 premiers matchs (Quart de finale)
            m_matchs.AddRange(m_tournoi.Matchs.Where(m => m.PhaseTournoi == EPhaseTournoiModel.QuartFinale));
            foreach (MatchModel m in m_matchs)
            {
                winnerID = webService.ComputeMatchResult(MatchAdapter.fromMatchModel(m)); ;
                m.IdVainqueur = winnerID;
            }

            // Calcul des 2 matchs (Demi finale)
            for (int i = 0 ; i < 2; i++)
            {
                MatchModel mm = AffectMatchMainData(m_matchs[2 * i], m_matchs[2 * i + 1], null);
                mm.PhaseTournoi = EPhaseTournoiModel.DemiFinale;
                // Fait jouer le match
                winnerID = webService.ComputeMatchResult(MatchAdapter.fromMatchModel(mm)); ;
                mm.IdVainqueur = winnerID;

                m_matchs.Add(mm);
            }

            // Calcul du dernier match (Finale)
            MatchModel mFinale = AffectMatchMainData(m_matchs[4], m_matchs[5], null);
            mFinale.PhaseTournoi = EPhaseTournoiModel.Finale;
            // Fait jouer le match
            winnerID = webService.ComputeMatchResult(MatchAdapter.fromMatchModel(mFinale)); ;
            mFinale.IdVainqueur = winnerID;

            m_matchs.Add(mFinale);
        }