Beispiel #1
0
        public ActionResult <EffectieveDienst> GetEffectieveDienstById(string id)
        {
            EffectieveDienst i = _effectieveDienstRepository.GetBy(id);

            if (i == null)
            {
                return(NotFound("De effectieve dienst met opgegeven id kon niet worden gevonden."));
            }
            return(i);
        }
Beispiel #2
0
        public String ValidateOnderbrekingMetEffectieveDienst(EffectieveDienst d, Onderbreking o)
        {
            if (o.EffectieveStart > o.EffectiefEinde)
            {
                return("Het einde van de onderbreking die start op " + o.EffectieveStart + " van dienst \"" + d.Naam + "\" ligt voor de start.");
            }
            else if (d.Start > o.EffectieveStart)
            {
                return("De start van de onderbreking die start op " + o.EffectieveStart + " van dienst \"" + d.Naam + "\" ligt voor de start van de dienst!");
            }
            else if ((d.GerelateerdeDienst == null && d.Einde < o.EffectiefEinde) || (d.GerelateerdeDienst != null && d.GerelateerdeDienst.Einde < o.EffectiefEinde))
            {
                return("Het einde van de onderbreking die start op " + o.EffectieveStart + " van dienst \"" + d.Naam + "\" ligt na het einde van de dienst!");
            }

            return(null);
        }
Beispiel #3
0
 public void Delete(EffectieveDienst ed)
 {
     _effectieveDiensten.Remove(ed);
 }
Beispiel #4
0
 public void Add(EffectieveDienst ed)
 {
     _effectieveDiensten.Add(ed);
 }
Beispiel #5
0
 public void Update(EffectieveDienst dienst)
 {
     _effectieveDiensten.Update(dienst);
 }
Beispiel #6
0
        public ActionResult <IEnumerable <EffectieveDienst> > PostEffectieveDiensten(List <EffectieveDienstDTO> ed, string jaar, string week, string busChauffeurId)
        {
            string       request = null;
            BusChauffeur bc      = _busChauffeurRepository.GetBy(busChauffeurId);

            if (bc == null)
            {
                return(BadRequest("De buschauffeur met opgegeven id kon niet worden gevonden."));
            }
            string   req  = "";
            TimeSpan span = new TimeSpan(1, 0, 0, 0);

            ed.ForEach(d =>
            {
                if (d.Start > d.Einde)
                {
                    req = "De start van de dienst '" + d.Naam + "' valt voor het einde!";
                }
                if ((d.Einde - d.Start) > span)
                {
                    req = "De dienst '" + d.Naam + "' duurt te lang!";
                }
            });
            if (req != "")
            {
                return(BadRequest(req));
            }
            _effectieveDienstRepository.DeleteAllVan(bc, jaar, week).ToList();
            var effectieveDienstenToUpload = new List <EffectieveDienst>();

            ed.ForEach(dienst =>
            {
                EffectieveDienst hoofdDienst = new EffectieveDienst();
                hoofdDienst.BusChauffeur     = bc;
                hoofdDienst.TotaalAantalMinutenStationnement = dienst.TotaalAantalMinutenStationnement;
                hoofdDienst.Naam          = dienst.Naam;
                hoofdDienst.AndereMinuten = dienst.AndereMinuten;
                if (dienst.Start.DayOfWeek == dienst.Einde.DayOfWeek)
                {
                    hoofdDienst.Start = dienst.Start;
                    hoofdDienst.Einde = dienst.Einde;
                    effectieveDienstenToUpload.Add(hoofdDienst);
                }
                else
                {
                    EffectieveDienst gerelateerdeDienst = new EffectieveDienst();
                    hoofdDienst.Start        = dienst.Start;
                    hoofdDienst.Einde        = dienst.Start.AddHours(-dienst.Start.Hour).AddMinutes(-dienst.Start.Minute).AddDays(1); gerelateerdeDienst.BusChauffeur = bc;
                    gerelateerdeDienst.Naam  = dienst.Naam;
                    gerelateerdeDienst.Start = dienst.Einde.AddHours(-dienst.Einde.Hour).AddMinutes(-dienst.Einde.Minute);
                    gerelateerdeDienst.Einde = dienst.Einde;
                    _effectieveDienstRepository.Add(gerelateerdeDienst);
                    hoofdDienst.GerelateerdeDienst = gerelateerdeDienst;
                    _effectieveDienstRepository.Add(hoofdDienst);
                    _effectieveDienstRepository.SaveChanges();
                    gerelateerdeDienst.GerelateerdeDienst = hoofdDienst;
                    _effectieveDienstRepository.Update(gerelateerdeDienst);
                }
                dienst.Onderbrekingen.ForEach(onderbreking =>
                {
                    request = _effectieveDienstRepository.ValidateOnderbrekingMetEffectieveDienst(hoofdDienst, onderbreking);
                    if (request != null)
                    {
                        return;
                    }
                    var stass = _onderbrekingsRepository.GetBy(onderbreking.Id);
                    if (stass != null)
                    {
                        _onderbrekingsRepository.Delete(stass);
                    }
                    onderbreking.Id = null;
                    hoofdDienst.Onderbrekingen.Add(onderbreking);
                });
                if (request != null)
                {
                    return;
                }
                hoofdDienst.Onderbrekingen = dienst.Onderbrekingen;
            });
            if (request != null)
            {
                return(BadRequest(request));
            }
            _effectieveDienstRepository.AddRange(effectieveDienstenToUpload);
            _effectieveDienstRepository.SaveChanges();
            if (req != "")
            {
                return(BadRequest(req));
            }
            return(effectieveDienstenToUpload);
        }
Beispiel #7
0
        public ActionResult <IEnumerable <EffectieveDienst> > GetEffectievieDienstenNullZetDienstenNaarEffectieveDienstenOm(string jaar, string week, string busChauffeurId)
        {
            //eerste dag van week berekenen
            DateTime jan1          = new DateTime(Int32.Parse(jaar), 1, 1);
            int      daysOffset    = DayOfWeek.Thursday - jan1.DayOfWeek;
            DateTime firstThursday = jan1.AddDays(daysOffset);
            var      cal           = CultureInfo.CurrentCulture.Calendar;
            int      firstWeek     = cal.GetWeekOfYear(firstThursday, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
            var      weekNum       = Int32.Parse(week);

            if (firstWeek == 1)
            {
                weekNum -= 1;
            }
            var result           = firstThursday.AddDays(weekNum * 7);
            var eersteDagVanWeek = result.AddDays(-3);

            BusChauffeur bc = _busChauffeurRepository.GetBy(busChauffeurId);

            if (bc == null)
            {
                return(BadRequest("De buschauffeur met opgegeven id kon niet worden gevonden."));
            }
            List <EffectieveDienst> i = _effectieveDienstRepository.GetAllVan(bc, jaar, week).ToList();

            if (i.Count == 0)
            {
                bc.Diensten.ForEach(dienst =>
                {
                    if (dienst.StartDag == dienst.EindDag)
                    {
                        EffectieveDienst ed = new EffectieveDienst();
                        ed.BusChauffeur     = bc;
                        ed.Naam             = dienst.Naam;
                        ed.AndereMinuten    = 0;
                        dienst.Onderbrekingen.ForEach(ondTemplate =>
                        {
                            Onderbreking ondEffectief = new Onderbreking()
                            {
                                Id = null,
                                EffectieveStart = eersteDagVanWeek.AddDays(ondTemplate.StartDag.GetHashCode() == 0 ? 6 : ondTemplate.StartDag.GetHashCode() - 1).AddHours(ondTemplate.StartUur.Hour).AddMinutes(ondTemplate.StartUur.Minute),
                                EffectiefEinde  = eersteDagVanWeek.AddDays(ondTemplate.EindDag.GetHashCode() == 0 ? 6 : ondTemplate.EindDag.GetHashCode() - 1).AddHours(ondTemplate.EindUur.Hour).AddMinutes(ondTemplate.EindUur.Minute)
                            };
                            ed.Onderbrekingen.Add(ondEffectief);
                        });
                        ed.TotaalAantalMinutenStationnement = dienst.TotaalAantalMinutenStationnement;
                        ed.Start = eersteDagVanWeek.AddDays(dienst.StartDag.GetHashCode() == 0 ? 6 : dienst.StartDag.GetHashCode() - 1).AddHours(dienst.StartUur.Hour).AddMinutes(dienst.StartUur.Minute);
                        ed.Einde = eersteDagVanWeek.AddDays(dienst.EindDag.GetHashCode() == 0 ? 6 : dienst.EindDag.GetHashCode() - 1).AddHours(dienst.EindUur.Hour).AddMinutes(dienst.EindUur.Minute);
                        _effectieveDienstRepository.Add(ed);
                    }
                    else
                    {
                        EffectieveDienst edStart = new EffectieveDienst();
                        EffectieveDienst edEind  = new EffectieveDienst();
                        edStart.BusChauffeur     = bc;
                        edStart.Naam             = dienst.Naam;
                        edStart.AndereMinuten    = 0;
                        dienst.Onderbrekingen.ForEach(ondTemplate =>
                        {
                            Onderbreking ondEffectief = new Onderbreking()
                            {
                                Id = null,
                                EffectieveStart = eersteDagVanWeek.AddDays(ondTemplate.StartDag.GetHashCode() == 0 ? 6 : ondTemplate.StartDag.GetHashCode() - 1).AddHours(ondTemplate.StartUur.Hour).AddMinutes(ondTemplate.StartUur.Minute),
                                EffectiefEinde  = eersteDagVanWeek.AddDays(ondTemplate.EindDag.GetHashCode() == 0 ? 6 : ondTemplate.EindDag.GetHashCode() - 1).AddHours(ondTemplate.EindUur.Hour).AddMinutes(ondTemplate.EindUur.Minute)
                            };
                            edStart.Onderbrekingen.Add(ondEffectief);
                            edEind.Onderbrekingen.Add(ondEffectief);
                        });

                        edStart.TotaalAantalMinutenStationnement = dienst.TotaalAantalMinutenStationnement;
                        var startDag = dienst.StartDag.GetHashCode();
                        var eindDag  = dienst.EindDag.GetHashCode();
                        if (startDag == 0)
                        {
                            eindDag  = 7;
                            startDag = 6;
                        }
                        else if (startDag == 6)
                        {
                            eindDag  = 6;
                            startDag = startDag - 1;
                        }

                        else
                        {
                            startDag = startDag - 1;
                            eindDag  = eindDag - 1;
                        }
                        edStart.Start = eersteDagVanWeek.AddDays(startDag).AddHours(dienst.StartUur.Hour).AddMinutes(dienst.StartUur.Minute);
                        edStart.Einde = eersteDagVanWeek.AddDays(startDag).AddDays(1);

                        edEind.BusChauffeur = bc;
                        edEind.Naam         = dienst.Naam;

                        edEind.Start = eersteDagVanWeek.AddDays(eindDag);
                        edEind.Einde = eersteDagVanWeek.AddDays(eindDag).AddHours(dienst.EindUur.Hour).AddMinutes(dienst.EindUur.Minute);
                        _effectieveDienstRepository.Add(edEind);
                        edStart.GerelateerdeDienst = edEind;
                        _effectieveDienstRepository.Add(edStart);
                        _effectieveDienstRepository.SaveChanges();
                        edEind.GerelateerdeDienst = edStart;
                        _effectieveDienstRepository.Update(edEind);
                    }
                });
                _effectieveDienstRepository.SaveChanges();
                var uitvoer = _effectieveDienstRepository.GetAllVan(bc, jaar, week).ToList();
                return(uitvoer);
            }
            else
            {
                return(i);
            }
        }