Ejemplo n.º 1
0
        private async Task <AdesaoAEDreDto> TrataDre(string dreCodigoParaTratar, IEnumerable <AdesaoAEQueryConsolidadoRetornoDto> listaConsolida)
        {
            var uesCodigos = listaConsolida.Where(a => !string.IsNullOrEmpty(a.UeCodigo.Trim()))
                             .Select(a => a.UeCodigo.ToString()).Distinct().ToArray();


            var Ues = await mediator.Send(new ObterUePorCodigosQuery(uesCodigos));

            var registroDreParaTratar = listaConsolida.FirstOrDefault(a => a.DreCodigo == dreCodigoParaTratar && string.IsNullOrEmpty(a.UeCodigo.Trim()));

            if (registroDreParaTratar == null)
            {
                throw new NegocioException($"Não foi possível obter o registro consolidado da Dre {dreCodigoParaTratar}.");
            }


            var dreValoresParaAdicionar = new AdesaoAEValoresDto()
            {
                Nome                     = registroDreParaTratar.DreNome,
                NaoRealizaram            = registroDreParaTratar.SemAppInstalado,
                PrimeiroAcessoIncompleto = registroDreParaTratar.PrimeiroAcessoIncompleto,
                SemCpfOuCpfInvalido      = registroDreParaTratar.CpfsInvalidos,
                Validos                  = registroDreParaTratar.Validos
            };

            var registroDre = new AdesaoAEDreDto()
            {
                Valores = dreValoresParaAdicionar
            };

            //Tratar as Ues \\ 

            foreach (var ueParaTratar in listaConsolida.Where(a => !string.IsNullOrEmpty(a.UeCodigo) && a.TurmaCodigo == 0))
            {
                var ue = Ues.FirstOrDefault(a => a.Codigo == ueParaTratar.UeCodigo);

                if (ue != null)
                {
                    var ueParaAdicionar = new AdesaoAEValoresDto()
                    {
                        Nome                     = ue.NomeComTipoEscola,
                        NaoRealizaram            = ueParaTratar.SemAppInstalado,
                        PrimeiroAcessoIncompleto = ueParaTratar.PrimeiroAcessoIncompleto,
                        SemCpfOuCpfInvalido      = ueParaTratar.CpfsInvalidos,
                        Validos                  = ueParaTratar.Validos
                    };

                    registroDre.Ues.Add(ueParaAdicionar);
                }
            }

            registroDre.Ues = registroDre
                              .Ues
                              .OrderBy(a => a.Nome).ToList();
            return(registroDre);
        }
Ejemplo n.º 2
0
        private async Task TrataSME(ObterListaRelatorioAdessaoAEQuery request, AdesaoAERetornoDto retorno)
        {
            retorno.MostraSME = true;

            var registroSme = request.ListaConsolida.FirstOrDefault(a => string.IsNullOrEmpty(a.DreCodigo.Trim()));

            if (registroSme == null)
            {
                throw new NegocioException("Não foi possível obter o registro consolidado da SME.");
            }

            var valoresSme = new AdesaoAEValoresDto()
            {
                NaoRealizaram            = registroSme.SemAppInstalado,
                Nome                     = "SME",
                PrimeiroAcessoIncompleto = registroSme.PrimeiroAcessoIncompleto,
                SemCpfOuCpfInvalido      = registroSme.CpfsInvalidos,
                Validos                  = registroSme.Validos
            };

            var registroSMEParaInserir = new AdesaoAESmeDto()
            {
                Valores = valoresSme
            };

            retorno.SME = registroSMEParaInserir;

            var dresCodigosParaTratar = request.ListaConsolida
                                        .Where(a => string.IsNullOrEmpty(a.UeCodigo.Trim()) && !string.IsNullOrEmpty(a.DreCodigo.Trim()))
                                        .Select(a => a.DreCodigo)
                                        .Distinct();

            foreach (var dreCodigosParaTratar in dresCodigosParaTratar)
            {
                var dreParaAdicionar = await TrataDre(dreCodigosParaTratar, request.ListaConsolida.Where(a => a.DreCodigo == dreCodigosParaTratar).ToList());

                retorno.SME.Dres.Add(dreParaAdicionar);
            }
        }
Ejemplo n.º 3
0
        private async Task TrataUe(ObterListaRelatorioAdessaoAEQuery request, AdesaoAERetornoDto retorno)
        {
            retorno.MostraUe = true;

            var registroUeParaTratar = request.ListaConsolida.FirstOrDefault(a => a.TurmaCodigo == 0 && !string.IsNullOrEmpty(a.UeCodigo));

            var nomeDaUe = await mediator.Send(new ObterUePorCodigoQuery(request.RelatorioFiltros.UeCodigo));

            var valoresDaUe = new AdesaoAEValoresDto()
            {
                NaoRealizaram            = registroUeParaTratar.SemAppInstalado,
                SemCpfOuCpfInvalido      = registroUeParaTratar.CpfsInvalidos,
                PrimeiroAcessoIncompleto = registroUeParaTratar.PrimeiroAcessoIncompleto,
                Validos = registroUeParaTratar.Validos,
                Nome    = nomeDaUe?.NomeComTipoEscola
            };

            var UeParaAdicionar = new AdesaoAeUeRetornoDto()
            {
                Valores = valoresDaUe
            };

            var turmasCodigos = request.ListaConsolida.Select(a => a.TurmaCodigo.ToString()).Distinct().ToArray();

            var turmasEModalidades = await mediator.Send(new ObterTurmasEModalidadesPorCodigoTurmasQuery(turmasCodigos));

            var turmasAgrupadasPorModalidade = turmasEModalidades
                                               .GroupBy(a => a.Modalidade)
                                               .ToList();

            var devePreencherModalidade = turmasAgrupadasPorModalidade.Count > 1;

            foreach (var turmaAgrupadasPorModalidade in turmasAgrupadasPorModalidade)
            {
                var valoresDaMolidade = new AdesaoAEValoresDto();

                var codigosTurmasDaModalidade = turmaAgrupadasPorModalidade.Select(a => long.Parse(a.Codigo)).Distinct();


                var turmasEValoresDaModalidade = request.ListaConsolida
                                                 .Where(a => codigosTurmasDaModalidade.Contains(a.TurmaCodigo))
                                                 .ToList();

                if (devePreencherModalidade)
                {
                    valoresDaMolidade.NaoRealizaram            = turmasEValoresDaModalidade.Sum(a => a.SemAppInstalado);
                    valoresDaMolidade.Nome                     = turmaAgrupadasPorModalidade.Key.Name();
                    valoresDaMolidade.PrimeiroAcessoIncompleto = turmasEValoresDaModalidade.Sum(a => a.PrimeiroAcessoIncompleto);
                    valoresDaMolidade.SemCpfOuCpfInvalido      = turmasEValoresDaModalidade.Sum(a => a.CpfsInvalidos);
                    valoresDaMolidade.Validos                  = turmasEValoresDaModalidade.Sum(a => a.Validos);
                }

                var modalidadeParaAdicionar = new AdesaoAEModalidadeDto()
                {
                    Valores = valoresDaMolidade
                };

                var alunosResponsaveisParaTratar = await mediator.Send(new ObterAlunosResponsaveisPorTurmasCodigoRelatorioAdesaoQuery(codigosTurmasDaModalidade.ToArray()));

                var cpfsDosResponsaveis = alunosResponsaveisParaTratar.Select(a => a.ResponsavelCpf).Distinct().ToArray();

                var usuariosDoApp = await mediator.Send(new ObterUsuariosAePorCpfsQuery(cpfsDosResponsaveis));

                foreach (var turma in turmaAgrupadasPorModalidade)
                {
                    var turmaParaTratar          = turmasEValoresDaModalidade.FirstOrDefault(a => a.TurmaCodigo == long.Parse(turma.Codigo));
                    var valoresDaTurmaParaTratar = new AdesaoAEValoresDto();

                    valoresDaTurmaParaTratar.NaoRealizaram            = turmaParaTratar.SemAppInstalado;
                    valoresDaTurmaParaTratar.Nome                     = $"{turmaAgrupadasPorModalidade.Key.ShortName()}-{turma.Nome}";
                    valoresDaTurmaParaTratar.PrimeiroAcessoIncompleto = turmaParaTratar.PrimeiroAcessoIncompleto;
                    valoresDaTurmaParaTratar.SemCpfOuCpfInvalido      = turmaParaTratar.CpfsInvalidos;
                    valoresDaTurmaParaTratar.Validos                  = turmaParaTratar.Validos;

                    var turmaParaAdicionar = new AdesaoAETurmaDto()
                    {
                        Valores = valoresDaTurmaParaTratar
                    };

                    switch (request.RelatorioFiltros.OpcaoListaUsuarios)
                    {
                    case FiltroRelatorioAEAdesaoEnum.ListarUsuariosNao:
                        UeParaAdicionar.MostraColunaSituacao = false;
                        break;

                    case FiltroRelatorioAEAdesaoEnum.ListarUsuariosValidos:
                        UeParaAdicionar.MostraColunaSituacao = false;
                        TrataListarCpfValidos(alunosResponsaveisParaTratar, usuariosDoApp, turma, turmaParaAdicionar);
                        break;

                    case FiltroRelatorioAEAdesaoEnum.ListarUsuariosCPFIrregular:
                        TrataListarCpfIrregular(alunosResponsaveisParaTratar, usuariosDoApp, turma, turmaParaAdicionar);
                        UeParaAdicionar.MostraColunaSituacao = false;
                        break;

                    case FiltroRelatorioAEAdesaoEnum.ListarUsuariosCPFTodos:
                        UeParaAdicionar.MostraColunaSituacao = true;
                        TrataListarTodosCpf(alunosResponsaveisParaTratar, usuariosDoApp, turma, turmaParaAdicionar);
                        break;

                    default:
                        break;
                    }
                    modalidadeParaAdicionar.Turmas.Add(turmaParaAdicionar);
                }
                modalidadeParaAdicionar.Turmas = modalidadeParaAdicionar.Turmas.OrderBy(a => a.Valores.Nome).ToList();

                UeParaAdicionar.Modalidades.Add(modalidadeParaAdicionar);
            }

            UeParaAdicionar.Modalidades = UeParaAdicionar.Modalidades.OrderBy(a => a.Valores.Nome).ToList();


            retorno.UE = UeParaAdicionar;
        }