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); }
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); } }
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; }