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); }
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); }
public void Delete(EffectieveDienst ed) { _effectieveDiensten.Remove(ed); }
public void Add(EffectieveDienst ed) { _effectieveDiensten.Add(ed); }
public void Update(EffectieveDienst dienst) { _effectieveDiensten.Update(dienst); }
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); }
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); } }