Пример #1
0
        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."));
        }
Пример #2
0
        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));
            });
        }