public async Task <IActionResult> ObterEventosAulasNoDiaPorCalendario(long tipoCalendarioId, int mes, int dia,
                                                                              [FromQuery] FiltroAulasEventosCalendarioDto filtro, [FromServices] IMediator mediator, [FromServices] IServicoUsuario servicoUsuario)
        {
            var retorno = await ObterAulasEventosProfessorCalendarioPorMesDiaUseCase.Executar(mediator, filtro, tipoCalendarioId, mes, dia, filtro.AnoLetivo, servicoUsuario);

            retorno.EventosAulasMes = await ObterAulasEventosProfessorCalendarioPorMesUseCase.Executar(mediator, filtro, tipoCalendarioId, mes, servicoUsuario);

            return(Ok(retorno));
        }
示例#2
0
        public static async Task <EventosAulasNoDiaCalendarioDto> Executar(IMediator mediator, FiltroAulasEventosCalendarioDto filtroAulasEventosCalendarioDto, long tipoCalendarioId, int mes, int dia, int anoLetivo,
                                                                           IServicoUsuario servicoUsuario)
        {
            var dataConsulta = new DateTime(anoLetivo, mes, dia);

            var usuarioLogado = await mediator.Send(new ObterUsuarioLogadoQuery());

            if (usuarioLogado == null)
            {
                throw new NegocioException("Não foi possível localizar o Usuário logado.");
            }


            var eventosDaUeSME = await mediator.Send(new ObterEventosCalendarioProfessorPorMesDiaQuery()
            {
                UeCodigo         = filtroAulasEventosCalendarioDto.UeCodigo,
                DreCodigo        = filtroAulasEventosCalendarioDto.DreCodigo,
                TipoCalendarioId = tipoCalendarioId,
                DataConsulta     = dataConsulta
            });

            var aulasDoDia = await mediator.Send(new ObterAulasCalendarioProfessorPorMesDiaQuery()
            {
                UeCodigo         = filtroAulasEventosCalendarioDto.UeCodigo,
                DreCodigo        = filtroAulasEventosCalendarioDto.DreCodigo,
                TurmaCodigo      = filtroAulasEventosCalendarioDto.TurmaCodigo,
                TipoCalendarioId = tipoCalendarioId,
                DiaConsulta      = dataConsulta
            });

            var turma = await mediator.Send(new ObterTurmaPorCodigoQuery()
            {
                TurmaCodigo = filtroAulasEventosCalendarioDto.TurmaCodigo
            });


            var retorno = new EventosAulasNoDiaCalendarioDto();

            var podeCadastrarAulaEMensagem = await mediator.Send(new ObterPodeCadastrarAulaPorDataQuery()
            {
                UeCodigo         = filtroAulasEventosCalendarioDto.UeCodigo,
                DreCodigo        = filtroAulasEventosCalendarioDto.DreCodigo,
                TipoCalendarioId = tipoCalendarioId,
                DataAula         = dataConsulta,
                Turma            = turma
            });

            retorno.PodeCadastrarAula        = podeCadastrarAulaEMensagem.PodeCadastrar;
            retorno.MensagemPeriodoEncerrado = podeCadastrarAulaEMensagem.MensagemPeriodo;


            string[] componentesCurricularesDoProfessor = new string[0];
            if (usuarioLogado.EhProfessor())
            {
                //Transformar em query
                componentesCurricularesDoProfessor = await servicoUsuario.ObterComponentesCurricularesQuePodeVisualizarHoje(filtroAulasEventosCalendarioDto.TurmaCodigo, usuarioLogado);
            }

            IEnumerable <Aula> aulasParaVisualizar = usuarioLogado.ObterAulasQuePodeVisualizar(aulasDoDia, componentesCurricularesDoProfessor);


            IEnumerable <AtividadeAvaliativa> atividadesAvaliativas   = Enumerable.Empty <AtividadeAvaliativa>();
            IEnumerable <DisciplinaDto>       componentesCurriculares = Enumerable.Empty <DisciplinaDto>();

            if (aulasParaVisualizar.Any())
            {
                componentesCurriculares = await mediator.Send(new ObterComponentesCurricularesPorIdsQuery(aulasParaVisualizar.Select(a => long.Parse(a.DisciplinaId)).ToArray(), aulasParaVisualizar.Any(a => a.DisciplinaId.Length > 5)));

                atividadesAvaliativas = await mediator.Send(new ObterAtividadesAvaliativasCalendarioProfessorPorMesDiaQuery()
                {
                    UeCodigo       = filtroAulasEventosCalendarioDto.UeCodigo,
                    DreCodigo      = filtroAulasEventosCalendarioDto.DreCodigo,
                    TurmaCodigo    = filtroAulasEventosCalendarioDto.TurmaCodigo,
                    DataReferencia = dataConsulta
                });

                atividadesAvaliativas = usuarioLogado.ObterAtividadesAvaliativasQuePodeVisualizar(atividadesAvaliativas, componentesCurricularesDoProfessor);
            }

            retorno.EventosAulas = await mediator.Send(new ObterAulaEventoAvaliacaoCalendarioProfessorPorMesDiaQuery()
            {
                TurmaCodigo     = filtroAulasEventosCalendarioDto.TurmaCodigo,
                UsuarioCodigoRf = usuarioLogado.CodigoRf,
                Aulas           = aulasParaVisualizar,
                Avaliacoes      = atividadesAvaliativas,
                ComponentesCurricularesParaVisualizacao = componentesCurriculares,
                EventosDaUeSME = eventosDaUeSME
            });

            return(retorno);
        }
示例#3
0
        public static async Task <IEnumerable <EventoAulaDiaDto> > Executar(IMediator mediator, FiltroAulasEventosCalendarioDto filtroAulasEventosCalendarioDto, long tipoCalendarioId,
                                                                            int mes, IServicoUsuario servicoUsuario)
        {
            var eventosDaUeSME = await mediator.Send(new ObterEventosDaUeSMEPorMesQuery()
            {
                UeCodigo         = filtroAulasEventosCalendarioDto.UeCodigo,
                DreCodigo        = filtroAulasEventosCalendarioDto.DreCodigo,
                TipoCalendarioId = tipoCalendarioId,
                Mes = mes
            });

            var usuarioLogado = await mediator.Send(new ObterUsuarioLogadoQuery());

            if (usuarioLogado == null)
            {
                throw new NegocioException("Não foi possível localizar o Usuário logado.");
            }

            var aulas = await mediator.Send(new ObterAulasCalendarioProfessorPorMesQuery()
            {
                UeCodigo         = filtroAulasEventosCalendarioDto.UeCodigo,
                DreCodigo        = filtroAulasEventosCalendarioDto.DreCodigo,
                TipoCalendarioId = tipoCalendarioId,
                TurmaCodigo      = filtroAulasEventosCalendarioDto.TurmaCodigo,
                Mes = mes
            });

            string[] componentesCurricularesDoProfessor = new string[0];
            if (usuarioLogado.EhProfessor())
            {
                componentesCurricularesDoProfessor = await servicoUsuario.ObterComponentesCurricularesQuePodeVisualizarHoje(filtroAulasEventosCalendarioDto.TurmaCodigo, usuarioLogado);
            }

            IEnumerable <Aula> aulasParaVisualizar = usuarioLogado.ObterAulasQuePodeVisualizar(aulas, componentesCurricularesDoProfessor);

            var avaliacoes = await mediator.Send(new ObterAtividadesAvaliativasCalendarioProfessorPorMesQuery()
            {
                UeCodigo         = filtroAulasEventosCalendarioDto.UeCodigo,
                DreCodigo        = filtroAulasEventosCalendarioDto.DreCodigo,
                TipoCalendarioId = tipoCalendarioId,
                TurmaCodigo      = filtroAulasEventosCalendarioDto.TurmaCodigo,
                Mes       = mes,
                AnoLetivo = filtroAulasEventosCalendarioDto.AnoLetivo
            });

            avaliacoes = usuarioLogado.ObterAtividadesAvaliativasQuePodeVisualizar(avaliacoes, componentesCurricularesDoProfessor);

            return(await mediator.Send(new ObterAulaEventoAvaliacaoCalendarioProfessorPorMesQuery()
            {
                TurmaCodigo = filtroAulasEventosCalendarioDto.TurmaCodigo,
                Aulas = aulasParaVisualizar,
                EventosDaUeSME = eventosDaUeSME,
                Avaliacoes = avaliacoes,
                UsuarioCodigoRf = usuarioLogado.CodigoRf,
                Mes = mes,
                AnoLetivo = filtroAulasEventosCalendarioDto.AnoLetivo
            }));
        }
 public async Task <IActionResult> ObterEventosAulasMensaisPorCalendario(long tipoCalendarioId, int mes, [FromQuery] FiltroAulasEventosCalendarioDto filtro,
                                                                         [FromServices] IMediator mediator, [FromServices] IServicoUsuario servicoUsuario)
 {
     return(Ok(await ObterAulasEventosProfessorCalendarioPorMesUseCase.Executar(mediator, filtro, tipoCalendarioId, mes, servicoUsuario)));
 }