예제 #1
0
        public async Task <IActionResult> Add([FromBody] Periode periode)
        {
            if (!ModelState.IsValid)
            {
                ModelState.AddModelError("periode", "Ce format de periode est invalide");

                return(BadRequest(ModelState));
            }

            ModelPeriode modelPeriode = new ModelPeriode();

            modelPeriode.SetModelPeriode(periode, new Jour());

            foreach (var p in repository.List())
            {
                ModelPeriode model = new ModelPeriode();
                model.SetModelPeriode(p, new Jour());

                if (modelPeriode.OverLap(model))
                {
                    ModelState.AddModelError("periode", $"Cette periode chevauche la periode {model.Debut.Hour}h{model.Debut.Minute} à {model.Fin.Hour}h{model.Fin.Minute}");

                    return(BadRequest(ModelState));
                }
            }

            periode = repository.Save(periode);

            return(Ok(periode));
        }
예제 #2
0
        public IEnumerable <ModelPeriode> ModelPeriodes(IEnumerable <Time> times)
        {
            IEnumerable <ModelPeriode> modelPeriodes = new List <ModelPeriode>();

            foreach (var time in times)
            {
                ModelPeriode periode = new ModelPeriode();
                periode.SetModelPeriode(time.IdperiodeNavigation, time.IdjourNavigation);

                modelPeriodes.Append(periode);
            }

            return(modelPeriodes);
        }
예제 #3
0
        public void OverLap()
        {
            ModelPeriode modelCompare = new ModelPeriode();
            ModelPeriode model        = new ModelPeriode();

            modelCompare.Debut = new LocalTime(10, 30);
            modelCompare.Fin   = new LocalTime(12, 30);
            modelCompare.Jour  = DayOfWeek.Monday;

            model.Debut = new LocalTime(09, 30);
            model.Fin   = new LocalTime(12, 30);
            model.Jour  = DayOfWeek.Monday;


            Assert.True(model.OverLap(modelCompare));
        }
예제 #4
0
        public async Task <IActionResult> Add([FromBody] Time time, int semestre)
        {
            if (!ModelState.IsValid)
            {
                ModelState.AddModelError("time", "formulaire invalide");

                return(BadRequest(ModelState));
            }

            if (!periodeRepository.PeriodeExists(time.Idperiode))
            {
                ModelState.AddModelError("periode", "Cette periode n'existe pas");

                return(BadRequest(ModelState));
            }

            if (!jourRepository.JourExists(time.Idjour))
            {
                ModelState.AddModelError("jour", "Ce jour n'existe pas");

                return(BadRequest(ModelState));
            }

            if (!salleRepository.SalleExists(time.Idsalle))
            {
                ModelState.AddModelError("salle", "Cet salle n'existe pas");

                return(BadRequest(ModelState));
            }

            if (!programmeRepository.ProgrammeExists(time.Idprogramme))
            {
                ModelState.AddModelError("programme", "Cet ue n'existe pas");

                return(BadRequest(ModelState));
            }

            Periode periode = periodeRepository[time.Idperiode];
            Jour    jour    = jourRepository[time.Idjour];

            ModelPeriode modelPeriode = new ModelPeriode();

            modelPeriode.SetModelPeriode(periode, jour);

            Salle     salle      = salleRepository[time.Idsalle];
            Programme programme  = programmeRepository[time.Idprogramme];
            Compte    enseignant = enseignantRepository[programme.Enseignant];

            //verifion que la salle est libre

            foreach (var t in repository.TimeTableOfSalle(salle.Id, semestre))
            {
                Periode p = periodeRepository[t.Idperiode];
                Jour    j = jourRepository[t.Idjour];

                ModelPeriode model = new ModelPeriode();
                model.SetModelPeriode(p, j);

                if (modelPeriode.OverLap(model))
                {
                    ModelState.AddModelError("salle", $"La salle {salle.Nom} n'est pas libre le {j.Nom} de {model.Debut.Hour}h{model.Debut.Minute} à {model.Fin.Hour}h{model.Fin.Minute}.");
                    return(BadRequest(ModelState));
                }
            }

            //verifion si l'enseigiant es libre
            foreach (var t in repository.TimeTableOfEnseignant(enseignant.Matricule, semestre))
            {
                Periode p = periodeRepository[t.Idperiode];
                Jour    j = jourRepository[t.Idjour];

                ModelPeriode model = new ModelPeriode();
                model.SetModelPeriode(p, j);

                if (modelPeriode.OverLap(model))
                {
                    ModelState.AddModelError("enseignant", $"L'enseignant {enseignant.MatriculeNavigation.Nom} n'est pas libre le {j.Nom} de {model.Debut.Hour}h{model.Debut.Minute} à {model.Fin.Hour}h{model.Fin.Minute}.");
                    return(BadRequest(ModelState));
                }
            }

            //time = repository.Save(time);

            return(Ok(time));
        }