예제 #1
0
        public async Task Deve_Buscar_Evento_E_Aulas_Do_Ano_Todo_Por_Tipo_Calendario_Dre_Ue()
        {
            List <DateTime> diasLetivos    = new List <DateTime>();
            List <DateTime> diasNaoLetivos = new List <DateTime>();

            FiltroEventosAulasCalendarioDto filtro = new FiltroEventosAulasCalendarioDto
            {
                DreId            = "1",
                UeId             = "2",
                TurmaId          = "1",
                TipoCalendarioId = 1
            };

            PeriodoEscolar periodoEscolar  = new PeriodoEscolar();
            PeriodoEscolar periodoEscolar2 = new PeriodoEscolar();
            PeriodoEscolar periodoEscolar3 = new PeriodoEscolar();
            PeriodoEscolar periodoEscolar4 = new PeriodoEscolar();

            AulaDto aula    = new AulaDto();
            AulaDto aula2   = new AulaDto();
            Evento  evento  = new Evento();
            Evento  evento2 = new Evento();

            NovoPerioEscolar(periodoEscolar, 1, new DateTime(2019, 02, 01), new DateTime(2019, 03, 30));
            NovoPerioEscolar(periodoEscolar2, 2, new DateTime(2019, 04, 01), new DateTime(2019, 06, 30));
            NovoPerioEscolar(periodoEscolar3, 3, new DateTime(2019, 07, 01), new DateTime(2019, 09, 30));
            NovoPerioEscolar(periodoEscolar4, 4, new DateTime(2019, 10, 01), new DateTime(2019, 11, 30));
            NovaAula(aula, new DateTime(2019, 11, 1));
            NovaAula(aula2, new DateTime(2019, 12, 1));
            NovoEvento(evento, "Teste 1", new DateTime(2019, 11, 21), new DateTime(2019, 12, 1));
            NovoEvento(evento2, "Teste 2", new DateTime(2019, 12, 1), new DateTime(2019, 12, 1));

            IEnumerable <PeriodoEscolar> periodos = new List <PeriodoEscolar> {
                periodoEscolar, periodoEscolar2, periodoEscolar3, periodoEscolar4
            };
            IEnumerable <AulaDto> aulas = new List <AulaDto> {
                aula, aula2
            };
            IEnumerable <Evento> eventos = new List <Evento> {
                evento, evento2
            };

            repositorioPeriodoEscolar.Setup(r => r.ObterPorTipoCalendario(It.IsAny <long>())).Returns(periodos);
            repositorioAula.Setup(r => r.ObterAulas(It.IsAny <long>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(Task.FromResult(aulas));
            repositorioEvento.Setup(r => r.ObterEventosPorTipoDeCalendarioDreUe(It.IsAny <long>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <bool>())).Returns(eventos);

            var dias = comandosDiasLetivos.BuscarDiasLetivos(1);
            var diasEventosNaoLetivos = comandosDiasLetivos.ObterDias(eventos, diasNaoLetivos, Dominio.EventoLetivo.Nao);
            var diasEventosLetivos    = comandosDiasLetivos.ObterDias(eventos, diasLetivos, Dominio.EventoLetivo.Sim);

            comandosDiasLetivosMock.Setup(r => r.BuscarDiasLetivos(It.IsAny <long>())).Returns(dias);
            comandosDiasLetivosMock.Setup(r => r.ObterDias(It.IsAny <IEnumerable <Evento> >(), It.IsAny <List <DateTime> >(), EventoLetivo.Nao)).Returns(diasEventosNaoLetivos);
            comandosDiasLetivosMock.Setup(r => r.ObterDias(It.IsAny <IEnumerable <Evento> >(), It.IsAny <List <DateTime> >(), EventoLetivo.Sim)).Returns(diasEventosLetivos);

            var eventosAulas = await consultasEventosAulasCalendario.ObterEventosAulasMensais(filtro);

            Assert.True(eventosAulas.ToList().Where(x => x.Mes == 11).Select(s => s.EventosAulas).FirstOrDefault() == 8);
        }
예제 #2
0
        public async Task <IEnumerable <EventosAulasCalendarioDto> > ObterEventosAulasMensais(FiltroEventosAulasCalendarioDto filtro)
        {
            List <DateTime> diasLetivos    = new List <DateTime>();
            List <DateTime> diasNaoLetivos = new List <DateTime>();
            List <DateTime> totalDias      = new List <DateTime>();

            if (!filtro.TodasTurmas && string.IsNullOrWhiteSpace(filtro.TurmaId))
            {
                throw new NegocioException("É necessario informar uma turma para pesquisa");
            }

            var usuario = await servicoUsuario.ObterUsuarioLogado();

            string rf = usuario.TemPerfilGestaoUes() ? string.Empty : usuario.CodigoRf;

            var diasPeriodoEscolares = comandosDiasLetivos.BuscarDiasLetivos(filtro.TipoCalendarioId);
            var diasAulas            = await repositorioAula.ObterAulas(filtro.TipoCalendarioId, filtro.TurmaId, filtro.UeId, rf);

            var eventos = repositorioEvento.ObterEventosPorTipoDeCalendarioDreUe(filtro.TipoCalendarioId, filtro.DreId, filtro.UeId, filtro.EhEventoSme);

            var diasEventosNaoLetivos = comandosDiasLetivos.ObterDias(eventos, diasNaoLetivos, EventoLetivo.Nao);
            var diasEventosLetivos    = comandosDiasLetivos.ObterDias(eventos, diasLetivos, EventoLetivo.Sim);
            var aulas = ObterDias(diasAulas);

            diasEventosNaoLetivos.RemoveAll(x => !diasPeriodoEscolares.Contains(x));
            aulas.RemoveAll(x => !diasPeriodoEscolares.Contains(x));

            totalDias.AddRange(aulas);
            totalDias.AddRange(diasEventosLetivos);
            totalDias.AddRange(diasEventosNaoLetivos);

            return(MapearParaDto(totalDias));
        }