Пример #1
0
        public async Task <IEnumerable <DadosLeituraComunicadosResultado> > Handle(ObterDadosLeituraComunicadosQuery request, CancellationToken cancellationToken)
        {
            var dadosLeituraComunicados = await dadosLeituraRepositorio.ObterDadosLeituraComunicados(request.CodigoDre, request.CodigoUe, request.NotificaoId, request.Modalidade);

            if (dadosLeituraComunicados == null || !dadosLeituraComunicados.Any())
            {
                throw new Exception("Não foram encontrados dados de leitura de comunicados");
            }

            var retornoDadosLeituraComunicadosResultado = new List <DadosLeituraComunicadosResultado>();
            var dadosLeituraComunicadosResultado        = new DadosLeituraComunicadosResultado();

            if (request.ModoVisualizacao == ModoVisualizacao.Responsavel)
            {
                await ObterTotaisDeLeituraPorResponsavel(request, dadosLeituraComunicados, dadosLeituraComunicadosResultado);
            }

            if (request.ModoVisualizacao == ModoVisualizacao.Aluno)
            {
                await ObterTotaisDeLeituraPorAluno(request, dadosLeituraComunicados, dadosLeituraComunicadosResultado);
            }

            retornoDadosLeituraComunicadosResultado.Add(dadosLeituraComunicadosResultado);
            return(retornoDadosLeituraComunicadosResultado);
        }
Пример #2
0
        private async Task ObterTotaisDeLeituraPorResponsavel(ObterDadosLeituraComunicadosQuery request, IEnumerable <DadosConsolidacaoNotificacaoResultado> dadosLeituraComunicados, DadosLeituraComunicadosResultado dadosLeituraComunicadosResultado)
        {
            var codigoDre = long.Parse(dadosLeituraComunicados.FirstOrDefault().DreCodigo == "" ? "0" : dadosLeituraComunicados.FirstOrDefault().DreCodigo);
            var totalNotificacoesLeituraPorResponsavel = await usuarioNotificacaoLeituraRepositorio.ObterTotalNotificacoesLeituraPorResponsavel(request.NotificaoId, codigoDre);

            if (dadosLeituraComunicados.Count() == 1)
            {
                dadosLeituraComunicadosResultado.ReceberamENaoVisualizaram = (dadosLeituraComunicados.FirstOrDefault().QuantidadeResponsaveisComApp - totalNotificacoesLeituraPorResponsavel);
                dadosLeituraComunicadosResultado.NaoReceberamComunicado    = dadosLeituraComunicados.FirstOrDefault().QuantidadeResponsaveisSemApp;
                dadosLeituraComunicadosResultado.VisualizaramComunicado    = totalNotificacoesLeituraPorResponsavel;
            }

            if (dadosLeituraComunicados.Count() > 1)
            {
                dadosLeituraComunicadosResultado.ReceberamENaoVisualizaram = (dadosLeituraComunicados.Select(x => x.QuantidadeResponsaveisComApp).Sum() - totalNotificacoesLeituraPorResponsavel);
                dadosLeituraComunicadosResultado.NaoReceberamComunicado    = dadosLeituraComunicados.Select(x => x.QuantidadeResponsaveisSemApp).Sum();
                dadosLeituraComunicadosResultado.VisualizaramComunicado    = totalNotificacoesLeituraPorResponsavel;
            }
        }