public bool DeleteSeance(int id)
 {
     try
     {
         if (db.seances.Find(id) != null)
         {
             ManagerProgrammation managerProgs = new ManagerProgrammation();
             List <programmation> progs        = managerProgs.GetAllprogramtionFromSeance(id);
             for (int i = 0; i < progs.Count; i++)
             {
                 managerProgs.DeleteProgrammation(progs[i].id);
             }
             seance seance = db.seances.Find(id);
             db.seances.Remove(seance);
             db.SaveChanges();
             return(true);
         }
         else
         {
             throw new InvalidItemException("seance");
         }
     }
     catch (Exception e)
     {
         throw e;
     }
 }
        public bool RecurranceSeances(int id, string recurrance, int nbrRecurrance, string[] days, ref List <int> ids)
        {
            ManagerProgrammation managerProg;
            Dictionary <seance, List <seance> > confictingSeance = new Dictionary <seance, List <seance> >();

            try
            {
                ids.Add(id);
                managerProg = new ManagerProgrammation();
                seance               seance       = db.seances.Find(id);
                List <seance>        seancesToAdd = new List <seance>();
                List <programmation> progs        = managerProg.GetAllprogramtionFromSeance(id);
                for (int i = 0; i < nbrRecurrance; i++)
                {
                    switch (recurrance)
                    {
                    case "Yearly":
                        seancesToAdd.Add(new seance()
                        {
                            date_debut   = seance.date_debut.AddYears(i + 1),
                            date_fin     = seance.date_fin.AddYears(i + 1),
                            salle_id     = seance.salle_id,
                            titre_seance = seance.titre_seance
                        });
                        break;

                    case "Monthly":
                        seancesToAdd.Add(new seance()
                        {
                            date_debut   = seance.date_debut.AddMonths(i + 1),
                            date_fin     = seance.date_fin.AddMonths(i + 1),
                            salle_id     = seance.salle_id,
                            titre_seance = seance.titre_seance
                        });
                        break;

                    case "Daily":
                        seancesToAdd.Add(new seance()
                        {
                            date_debut   = seance.date_debut.AddDays(i + 1),
                            date_fin     = seance.date_fin.AddDays(i + 1),
                            salle_id     = seance.salle_id,
                            titre_seance = seance.titre_seance
                        });
                        break;

                    case "Weekly":
                        DateTime  date             = seance.date_debut;
                        DayOfWeek day              = DayOfWeek.Monday;
                        int       daysToNextMonday = ((int)day - (int)date.DayOfWeek + 7) % 7;

                        List <DateTime> daysToRepeat = new List <DateTime>();

                        for (int j = 0; j < days.Length; j++)
                        {
                            seancesToAdd.Add(new seance()
                            {
                                date_debut   = seance.date_debut.AddDays(daysToNextMonday + (i * 7) + DaystoAdd(days[j])),
                                date_fin     = seance.date_fin.AddDays(daysToNextMonday + (i * 7) + DaystoAdd(days[j])),
                                salle_id     = seance.salle_id,
                                titre_seance = seance.titre_seance
                            });
                        }
                        break;

                    default:
                        break;
                    }
                }

                if (seancesToAdd.Count > 0)
                {
                    progs = managerProg.GetAllprogramtionFromSeance(id);
                }

                confictingSeance = PostManySeance(seancesToAdd, progs, ref ids);

                string conflictingString = RecuranceError(confictingSeance);

                if (conflictingString.Length > 0)
                {
                    throw new Exception(conflictingString);
                }

                return(true);
            }
            catch (Exception e)
            {
                throw e;
            }
        }