public bool Valideer(int leeftijd, IInrichtingProvider inrichting, IEnumerable <Dienst> diensten, IATWLog log) { log.StartATWRegel(NAME); int?maximaleArbeidstijd = inrichting.GetWaarde <int>("MaximaleArbeidstijd", leeftijd); if (!maximaleArbeidstijd.HasValue) { throw new InvalidOperationException("Geen waarde ingericht voor instelling 'MaximaleArbeidsTijd"); } bool result = true; var dienstenPerDag = diensten.GroupBy(dienst => dienst.DagVanDeWeek); foreach (var dag in dienstenPerDag) { var duur = TimeSpan.FromSeconds(dag.Sum(dienst => dienst.Duur.TotalSeconds)); if (duur.TotalHours > maximaleArbeidstijd) { result = false; break; } } log.EndATWRegel(NAME); return(result); }
public bool Valideer(int leeftijd, IInrichtingProvider inrichting, IEnumerable <Dienst> diensten, IATWLog log) { log.StartATWRegel(NAME); bool valid = false; var verplichteRustperiode = inrichting.GetWaarde <(TimeSpan begintTijd, TimeSpan eindTijd)>("NietWerkbareTijden", leeftijd); if (verplichteRustperiode.HasValue) { valid = !diensten.Any(dienst => dienst.Eindtijd >= verplichteRustperiode.Value.begintTijd || dienst.StartTijd >= verplichteRustperiode.Value.eindTijd); } else { valid = true; } log.EndATWRegel(NAME); return(valid); }