private void CalendarCtrlClasse_RemoveCreneauEvent(object sender, Creneau e)
        {
            try
            {
                CalendarCtrlClasse classe = sender as CalendarCtrlClasse;
                CalendrierCtrl.RemoveCtrlClasse(classe);
                CalendarManager.Instance.RemoveCreneau(e);

                if (e.Column != Enums.ColumnSpanType.Full)
                {
                    Creneau conflictCreneau = CalendarManager.Instance.ListCreneauChoosed.Single(x => x.ID == e.ConflitCreneauId);
                    conflictCreneau.Column           = Enums.ColumnSpanType.Full;
                    conflictCreneau.ConflitCreneauId = 0;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Problème lors de la suppression du créneau " +
                                (e.Classe != null ? e.Classe.Libelle : "") + "-" + e.Activite.Libelle + " : \n\n" + ex.Message);
            }
            finally
            {
                FillCalendar();
            }
        }
        // *************************************************************************************
        #region Calendar methods
        private void FillCalendar()
        {
            CalendrierCtrl.ClearCalendar();

            foreach (Creneau creneau in CalendarManager.Instance.ListCreneauChoosed)
            {
                if (DataManager.Instance.ActiviteChoosed != null &&
                    (creneau.Activite.Equal(DataManager.Instance.ActiviteChoosed) ||
                     creneau.Activite.Id.Equals(DataManager.Instance.ActiviteChoosed.Id_LinkedActivity)))
                {
                    CalendarCtrlClasse classe = CreateCalendarClasseCtrlByCreneau(creneau);

                    CalendrierCtrl.AddCtrlClass(classe);
                }

                if (DataManager.Instance.ClasseChoosed != null && creneau.Classe != null &&
                    creneau.Classe.Equal(DataManager.Instance.ClasseChoosed))
                {
                    CalendarCtrlClasse classe = CreateCalendarClasseCtrlByCreneau(creneau);

                    CalendrierCtrl.AddCtrlClass(classe);
                }

                if (DataManager.Instance.ClasseChoosed != null && creneau.ListClass_Custom != null &&
                    creneau.ListClass_Custom.Where(x => x.Id == DataManager.Instance.ClasseChoosed.Id).Count() > 0)
                {
                    CalendarCtrlClasse classe = CreateCalendarClasseCtrlByCreneau(creneau);

                    CalendrierCtrl.AddCtrlClass(classe);
                }
            }
        }
        private void ClasseCtrl_CreneauChoosed(object sender, Creneau e)
        {
            CalendarCtrlClasse classe = CreateCalendarClasseCtrlByCreneau(e);

            bool IsAdded = CalendarManager.Instance.AddCreneau(e, out int countConflictCreneau, out List <Creneau> conflitCreneaux);

            if (IsAdded)
            {
                CalendrierCtrl.AddCtrlClass(classe);
            }
            else if (!IsAdded && countConflictCreneau < MAXIMUM_CONFLIT_STACK)
            {
                string message = "Ce créneau est déjà pris !";
                foreach (Creneau c in conflitCreneaux)
                {
                    message += " \n\n" +
                               (c.Classe != null ? c.Classe.Libelle : "") + " | " + c.Activite.Libelle + "\n" +
                               c.StartHour.ToString("hh\\:mm") + " à " + c.EndHour.ToString("hh\\:mm");
                }
                message += "\n\n Voulez-vous le partagez ?";

                if (MessageBox.Show(message, "Attention", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.No)
                {
                    //No
                }
                else //Yes
                {
                    //On ajoute le creneau
                    CalendarManager.Instance.ListCreneauChoosed.Add(e);

                    //On sépare les creneaux
                    int nbConflit = 0;
                    for (int index = 0; index < conflitCreneaux.Count; index++)
                    {
                        conflitCreneaux[index].Column           = (Enums.ColumnSpanType)index;
                        conflitCreneaux[index].ConflitCreneauId = e.ID;
                        nbConflit++;
                    }

                    e.ConflitCreneauId = conflitCreneaux.First().ID;
                    e.Column           = (Enums.ColumnSpanType)nbConflit;

                    FillCalendar();
                }
            }
            else
            {
                string message2 = "Ce créneau est déjà pris !";
                foreach (Creneau c in conflitCreneaux)
                {
                    message2 += " \n\n" +
                                (c.Classe != null ? c.Classe.Libelle : "") + " | " + c.Activite.Libelle + "\n" +
                                c.StartHour.ToString("hh\\:mm") + " à " + c.EndHour.ToString("hh\\:mm");
                }
                MessageBox.Show(message2);
            }
        }