public void TestValidar() { var dia1 = new Cronograma { DataCronograma = DateTime.Now.AddDays(-2), HorasCronograma = 9, DiaUtil = true, Feriado = false }; var dia2 = new Cronograma { DataCronograma = DateTime.Now.AddDays(-1), HorasCronograma = 8, DiaUtil = false, Feriado = true, DuracaoFeriado = 4 }; var dia3 = new Cronograma { DataCronograma = DateTime.Now.Date, HorasCronograma = 8, DiaUtil = true, Feriado = false }; var dia4 = new Cronograma { DataCronograma = DateTime.Now.AddDays(1), HorasCronograma = 9, DiaUtil = true, Feriado = false }; var cronogramaPacto = new CronogramaPacto() { CPFUsuario = "123123123123", DataInicial = DateTime.Now.AddDays(-2), DataInicioImpedimento = DateTime.Now.Date, HorasDiarias = 8, HorasTotais = 20, Cronogramas = new List <Cronograma> { dia1, dia2, dia3, dia4 } }; _cronogramaService.ValidarCronograma(cronogramaPacto, new List <Pacto>()); Assert.IsTrue(cronogramaPacto.ValidationResult.Erros.Any(e => e.Message == "Não é possível salvar o cronograma. Existem horas excedentes.")); Assert.IsTrue(cronogramaPacto.ValidationResult.Erros.Any(e => e.Message.StartsWith($"{ dia1.DataCronograma.ToString("dd/MM/yyyy")} - Quantidade de horas superior ao máximo de horas permitidas por dia "))); Assert.IsTrue(cronogramaPacto.ValidationResult.Erros.Any(e => e.Message == $"{ dia2.DataCronograma.ToString("dd/MM/yyyy")} - Quantidade de horas superior ao máximo de horas permitidas no feriado.")); }
public void ValidarCronograma(CronogramaPacto cronogramaPacto, List <Pacto> pactosConcorrentes, bool validarHorasADistribuir = true) { cronogramaPacto.ValidationResult = new CronogramaPactoValidation(validarHorasADistribuir).Validate(cronogramaPacto); cronogramaPacto.Cronogramas.ForEach(c => { var qtdHorasOcupadas = pactosConcorrentes.Select(p => p.Cronogramas.FirstOrDefault(cop => c.DataCronograma.Date == cop.DataCronograma.Date)).Sum(cop => cop == null ? 0 : cop.HorasCronograma); var cronogramaValidation = new CronogramaValidation(cronogramaPacto.HorasDiarias, c.DataCronograma, qtdHorasOcupadas); c.ValidationResult = cronogramaValidation.Validate(c); c.ValidationResult.Erros.ToList().ForEach(e => cronogramaPacto.ValidationResult.Add(e)); }); }