private DashboardAdesaoDto ProcessaResponsavel(ResponsavelEOLDto responsavel, IEnumerable <Dominio.Entidades.Usuario> usuariosDoSistema, List <DashboardAdesaoUnificacaoDto> listaCpfsUnificados) { if (responsavel.CpfResponsavel == 0 || !listaCpfsUnificados.Any(a => a.CPF == responsavel.CpfResponsavel)) { var cpf = responsavel.CpfResponsavel.ToString("00000000000"); var cpfValido = ValidacaoCpf.Valida(cpf); var usuarios_primeiro_acesso_incompleto = 0; var usuarios_validos = 0; var usuarios_cpf_invalidos = 0; var usuarios_sem_app_instalado = 0; if (cpfValido) { var usuarioDoSistema = usuariosDoSistema.FirstOrDefault(a => a.Cpf == cpf); if (usuarioDoSistema == null) { usuarios_sem_app_instalado = 1; } else { usuarios_primeiro_acesso_incompleto = usuarioDoSistema.PrimeiroAcesso ? 1 : 0; usuarios_validos = !usuarioDoSistema.PrimeiroAcesso ? 1 : 0; } } else { usuarios_cpf_invalidos = 1; } var dashboard_adesao = new DashboardAdesaoDto { dre_codigo = responsavel.CodigoDre, dre_nome = responsavel.Dre, ue_codigo = responsavel.CodigoUe, ue_nome = responsavel.Ue, codigo_turma = responsavel.CodigoTurma, usuarios_primeiro_acesso_incompleto = usuarios_primeiro_acesso_incompleto, usuarios_validos = usuarios_validos, usuarios_cpf_invalidos = usuarios_cpf_invalidos, usuarios_sem_app_instalado = usuarios_sem_app_instalado }; listaDeCpfsUtilizados.Add(new DashboardAdesaoUnificacaoDto() { CPF = long.Parse(cpf), DreCodigo = responsavel.CodigoDre, PrimeiroAcessoIncompleto = usuarios_primeiro_acesso_incompleto, TurmaCodigo = responsavel.CodigoTurma, UeCodigo = responsavel.CodigoUe, UsuarioCpfInvalido = usuarios_cpf_invalidos, UsuarioSemAppInstalado = usuarios_sem_app_instalado, UsuarioValido = usuarios_validos }); return(dashboard_adesao); } return(null); }
private async Task TrataUes(string dreCodigo, List <ResponsavelEOLDto> responsaveis) { var listaDashBoardsParaIncluir = new List <DashboardAdesaoDto>(); var registrosParaTratar = listaDeCpfsUtilizados.Where(a => a.DreCodigo == dreCodigo).ToList(); var uesCodigosParaTratar = registrosParaTratar.Select(a => a.UeCodigo).Distinct().ToList(); foreach (var ueParaTratar in uesCodigosParaTratar) { try { var cpfValidosDaUe = registrosParaTratar.Where(a => a.UeCodigo == ueParaTratar && a.CPF != 0).ToList(); var cpfsUnicosDaUe = cpfValidosDaUe.Select(a => a.CPF).Distinct().ToList(); int cpfsInvalidos = 0, primeirosAcessos = 0, semAppInstalado = 0, validos = 0; cpfsUnicosDaUe.AsParallel() .WithDegreeOfParallelism(6) .ForAll(cpf => { var registroParaSomar = cpfValidosDaUe.FirstOrDefault(a => a.CPF == cpf); primeirosAcessos += registroParaSomar.PrimeiroAcessoIncompleto; semAppInstalado += registroParaSomar.UsuarioSemAppInstalado; validos += registroParaSomar.UsuarioValido; }); cpfsInvalidos = registrosParaTratar.Where(a => a.UeCodigo == ueParaTratar && a.CPF == 0).Count(); var registroParaTratarUe = responsaveis.FirstOrDefault(a => a.CodigoUe == ueParaTratar); var registroDashboardDaUe = new DashboardAdesaoDto() { codigo_turma = 0, dre_codigo = registroParaTratarUe.CodigoDre, dre_nome = registroParaTratarUe.Dre, ue_codigo = registroParaTratarUe.CodigoUe, ue_nome = registroParaTratarUe.Ue, usuarios_cpf_invalidos = cpfsInvalidos, usuarios_primeiro_acesso_incompleto = primeirosAcessos, usuarios_sem_app_instalado = semAppInstalado, usuarios_validos = validos }; listaDashBoardsParaIncluir.Add(registroDashboardDaUe); } catch (Exception ex) { SentrySdk.CaptureException(ex); } } await dashboardAdesaoRepositorio.IncluiOuAtualizaPorDreUeTurmaEmBatch(listaDashBoardsParaIncluir); }
private async Task TrataTurmas(IEnumerable <Dominio.Entidades.Usuario> usuariosDoSistema, List <ResponsavelEOLDto> responsaveisDreEOL) { var listaDashBoardsParaIncluir = new List <DashboardAdesaoDto>(); var listaTurmasParaTratar = responsaveisDreEOL.Select(a => a.CodigoTurma).Distinct(); try { //Turmas da Dre foreach (var turmaParaTratar in listaTurmasParaTratar) { var usuariosDaTurma = responsaveisDreEOL.Where(a => a.CodigoTurma == turmaParaTratar).ToList(); var listaTodosDaTurmaParaTratar = new List <DashboardAdesaoDto>(); var cpfsParaTratar = listaDeCpfsUtilizados.Where(a => a.TurmaCodigo == turmaParaTratar).ToList(); foreach (var usuarioDaTurma in usuariosDaTurma) { var dashBoardParaAdicionar = ProcessaResponsavel(usuarioDaTurma, usuariosDoSistema, cpfsParaTratar); if (dashBoardParaAdicionar != null) { listaTodosDaTurmaParaTratar.Add(dashBoardParaAdicionar); } } var registroParaObterDados = usuariosDaTurma.FirstOrDefault(); var registroDashBoardTurmaAgrupado = new DashboardAdesaoDto() { codigo_turma = turmaParaTratar, dre_codigo = registroParaObterDados.CodigoDre, dre_nome = registroParaObterDados.Dre, ue_codigo = registroParaObterDados.CodigoUe, ue_nome = registroParaObterDados.Ue, usuarios_cpf_invalidos = listaTodosDaTurmaParaTratar.Sum(a => a.usuarios_cpf_invalidos), usuarios_primeiro_acesso_incompleto = listaTodosDaTurmaParaTratar.Sum(a => a.usuarios_primeiro_acesso_incompleto), usuarios_sem_app_instalado = listaTodosDaTurmaParaTratar.Sum(a => a.usuarios_sem_app_instalado), usuarios_validos = listaTodosDaTurmaParaTratar.Sum(a => a.usuarios_validos) }; listaDashBoardsParaIncluir.Add(registroDashBoardTurmaAgrupado); } await dashboardAdesaoRepositorio.IncluiOuAtualizaPorDreUeTurmaEmBatch(listaDashBoardsParaIncluir); } catch (Exception ex) { SentrySdk.CaptureException(ex); } }
private async Task TrataSME() { try { var listaDashBoardsParaIncluir = new List <DashboardAdesaoDto>(); var cpfsUnicosDaSME = listaDeCpfsUtilizados.Where(a => a.CPF != 0).Select(a => a.CPF).ToList().Distinct(); int primeirosAcessos = 0, semAppInstalado = 0, validos = 0; cpfsUnicosDaSME.AsParallel() .WithDegreeOfParallelism(8) .ForAll(cpf => { var registroParaSomar = listaDeCpfsUtilizados.FirstOrDefault(a => a.CPF == cpf); primeirosAcessos += registroParaSomar.PrimeiroAcessoIncompleto; semAppInstalado += registroParaSomar.UsuarioSemAppInstalado; validos += registroParaSomar.UsuarioValido; }); var registroDashboardDaDre = new DashboardAdesaoDto() { codigo_turma = 0, dre_codigo = string.Empty, dre_nome = string.Empty, ue_codigo = string.Empty, ue_nome = string.Empty, usuarios_cpf_invalidos = cpfsInvalidosSME, usuarios_primeiro_acesso_incompleto = primeirosAcessos, usuarios_sem_app_instalado = semAppInstalado, usuarios_validos = validos }; listaDashBoardsParaIncluir.Add(registroDashboardDaDre); await dashboardAdesaoRepositorio.IncluiOuAtualizaPorDreUeTurmaEmBatch(listaDashBoardsParaIncluir); } catch (Exception ex) { SentrySdk.CaptureException(ex); } }