public void EditPlanning(int cmId, int newVakcode, string newDatum, string newStartMoment, double newDuratie, int newLokaalid, string newLessenlijst, ApplicationUser user)
        {
            CourseMoment oldMoment = db.CourseMoment.Find(cmId);

            if (oldMoment == null)
            {
                throw new Exception("Er is geen overeenkomend moment gevonden in de databank.");
            }

            if (oldMoment.RoomId != newLokaalid)
            {
                oldMoment.RoomId = db.Room.Find(newLokaalid).Id;
                db.SaveChanges();
            }

            double _duratie = Convert.ToDouble(newDuratie);

            DateTime datum      = DateTime.ParseExact(newDatum, "yyyy-MM-dd", CultureInfo.InvariantCulture);
            DateTime tijd       = new DateTime(1800, 1, 1, int.Parse(newStartMoment.Split(":")[0]), int.Parse(newStartMoment.Split(":")[1]), 0);
            DateTime eindmoment = tijd.AddHours(_duratie);

            if (oldMoment.Schedule.Datum != datum || oldMoment.Schedule.Startmoment != tijd || oldMoment.Schedule.Eindmoment != eindmoment)
            {
                // Deze lijn moet nog vervangen worden zodat er niet altijd een nieuwe reeds bestaande schedule wordt aangemaakt: Schedule schedule = db.Schedule.Find(datum, tijd,eindmoment);

                Schedule schedule = new Schedule {
                    Datum = datum, Startmoment = tijd, Eindmoment = eindmoment
                };

                db.Schedule.Add(schedule);
                db.SaveChanges();

                oldMoment.ScheduleId = schedule.Id;
                db.SaveChanges();
            }

            if (oldMoment.CourseId != newVakcode)
            {
                oldMoment.CourseId = db.Course.Find(newVakcode).Id;
                db.SaveChanges();
            }

            oldMoment.LessenLijst = newLessenlijst;

            oldMoment.ApplicationUserId = user.Id;
            db.SaveChanges();
        }
        public int AddCm()
        {
            Course course = new Course {
                Vakcode = "MGP01A", Titel = "front end", Studiepunten = 6
            };

            ctxDb.Course.Add(course);

            Room room = new Room {
                Gebouw = "A", Verdiep = 0, Nummer = "01", Type = "Lokaal", Capaciteit = 20
            };

            ctxDb.Room.Add(room);

            Schedule schedule = new Schedule {
                Datum = new DateTime(DateTime.Now.Year, DateTime.Now.Month, (DateTime.Now.Day + 1)), Startmoment = new DateTime(1800, 01, 10, 11, 0, 0), Eindmoment = new DateTime(1800, 01, 01, 13, 0, 0)
            };

            ctxDb.Schedule.Add(schedule);

            ApplicationUser user = new ApplicationUser {
                UserName = "******", Email = "*****@*****.**", GeboorteDatum = new DateTime(1998, 09, 21), Naam = "Claes", VoorNaam = "Thomas", EmailConfirmed = true
            };

            ctxDb.Users.Add(user);

            ctxDb.SaveChanges();

            int    courseId   = ctxDb.Course.Where(c => c.Vakcode == "MGP01A").FirstOrDefault().Id;
            int    roomId     = ctxDb.Room.Where(r => r.Gebouw == "A" & r.Verdiep == 0 & r.Nummer == "01").FirstOrDefault().Id;
            int    scheduleId = ctxDb.Schedule.Where(s => s.Datum == new DateTime(DateTime.Now.Year, DateTime.Now.Month, (DateTime.Now.Day + 1))).FirstOrDefault().Id;
            string userId     = ctxDb.Users.Where(u => u.UserName == "r0664186").FirstOrDefault().Id;

            CourseMoment cm = new CourseMoment {
                CourseId = courseId, RoomId = roomId, ScheduleId = scheduleId, ApplicationUserId = userId, LessenLijst = "Dit is een lesmoment om mee te testen"
            };

            ctxDb.CourseMoment.Add(cm);
            ctxDb.SaveChanges();

            return(ctxDb.CourseMoment.Where(cm => cm.ScheduleId == scheduleId && cm.RoomId == roomId).FirstOrDefault().Id);
        }
        public void AddPlanning(ApplicationUser user, DateTime datum, DateTime tijd, double _duratie, int lokaalId, int vakid, string?lessenlijst, bool?checkbox, int lokaal2Id)
        {
            DateTime eindmoment = tijd.AddHours(_duratie);

            if (DubbeleBoeking(datum, tijd, eindmoment, lokaalId))
            {
                throw new Exception("Dit lokaal wordt reeds gebruikt in een anders lesmoment op dit tijdstip.");
            }

            //hier code schrijven zodat er niet altijd een nieuwe schedule wordt aangemaakt
            Schedule schedule = new Schedule {
                Datum = datum, Startmoment = tijd, Eindmoment = eindmoment
            };

            db.Schedule.Add(schedule);
            db.SaveChanges();

            CourseMoment moment = new CourseMoment {
                CourseId = vakid, ScheduleId = schedule.Id, RoomId = lokaalId, ApplicationUserId = user.Id, LessenLijst = lessenlijst
            };

            db.CourseMoment.Add(moment);
            db.SaveChanges();

            if (checkbox != null && checkbox == true)
            {
                if (DubbeleBoeking(datum, tijd, eindmoment, lokaal2Id))
                {
                    throw new Exception("Het lokaal voor de tweede les wordt reeds gebruikt in een anders lesmoment op dit tijdstip. Lesmoment 1 werd wel ingepland.");
                }

                CourseMoment moment2 = new CourseMoment {
                    CourseId = vakid, ScheduleId = schedule.Id, RoomId = lokaal2Id, ApplicationUserId = user.Id, LessenLijst = lessenlijst
                };

                //hier code schrijven zodat er geen tweede dezelfde coursemoment aangemaakt kan worden

                db.CourseMoment.Add(moment2);
                db.SaveChanges();
            }
        }
        public void DeletePlanning(int cmId)
        {
            CourseMoment moment = db.CourseMoment.Find(cmId);

            if (moment == null)
            {
                throw new Exception("Er is geen overeenkomend moment gevonden.");
            }

            db.CourseMoment.Remove(moment);

            var cmuL = db.CourseMomentUsers.Where(e => e.CoursMomentId == moment.Id);

            if (cmuL.Any())
            {
                foreach (var cmu in cmuL)
                {
                    db.CourseMomentUsers.Remove(cmu);
                }
            }
            db.SaveChanges();
        }