Ejemplo n.º 1
0
        private ConsolidacaoNotificacaoDto ConsolidaNotificacoes(ConsolidacaoNotificacaoDto consolidacao, IEnumerable <ResponsavelAlunoEOLDto> alunosComunicado)
        {
            var comApp = alunosComunicado
                         .Where(aluno => aluno.TemAppInstalado)
                         .ToArray();

            var responsaveisTotal = alunosComunicado
                                    .Select(aluno => aluno.CpfResponsavel)
                                    .Distinct()
                                    .Count();

            var responsaveisComApp = comApp
                                     .Select(aluno => aluno.CpfResponsavel)
                                     .Distinct()
                                     .Count();

            var alunosTotal = alunosComunicado
                              .Count();

            var alunosComApp = comApp
                               .Count();

            consolidacao.QuantidadeAlunosComApp       = alunosComApp;
            consolidacao.QuantidadeAlunosSemApp       = alunosTotal - alunosComApp;
            consolidacao.QuantidadeResponsaveisComApp = responsaveisComApp;
            consolidacao.QuantidadeResponsaveisSemApp = responsaveisTotal - responsaveisComApp;

            return(consolidacao);
        }
Ejemplo n.º 2
0
        public async Task ExcluirConsolidacaoNotificacao(ConsolidacaoNotificacaoDto consolidacaoNotificacao)
        {
            const string sqlDelete =
                @"
                    DELETE FROM 
	                    consolidacao_notificacao 
                    WHERE 
	                    notificacao_id=@NotificacaoId 
                    AND dre_codigo=@DreCodigo
                    AND ue_codigo=@UeCodigo
                    and modalidade_codigo=@ModalidadeCodigo
                    and turma_codigo=@TurmaCodigo
                    AND ano_letivo=@AnoLetivo
                ";

            using var conn = CriaConexao();

            try
            {
                conn.Open();
                await conn.ExecuteAsync(sqlDelete, consolidacaoNotificacao);

                conn.Close();
            }
            catch (Exception ex)
            {
                SentrySdk.CaptureException(ex);
            }
        }
Ejemplo n.º 3
0
        private IEnumerable <ConsolidacaoNotificacaoDto> ConsolidarComunicado(long comunicadoId, short AnoLetivo, IEnumerable <ResponsavelAlunoEOLDto> usuariosAlunos, bool temUe)
        {
            var alunosComunicado =
                usuariosAlunos
                .AsParallel();

            var smeConsolidado = new ConsolidacaoNotificacaoDto[] {
                ConsolidaNotificacoes(
                    new ConsolidacaoNotificacaoDto {
                    NotificacaoId    = comunicadoId,
                    AnoLetivo        = AnoLetivo,
                    DreCodigo        = "",
                    UeCodigo         = "",
                    ModalidadeCodigo = 0,
                    TurmaCodigo      = 0,
                    Turma            = ""
                },
                    alunosComunicado
                    )
            };

            var dreConsolidado =
                alunosComunicado
                .GroupBy(
                    responsavelChave => responsavelChave.CodigoDre,
                    responsavelValor => responsavelValor,
                    (chave, alunosDre) => ConsolidaNotificacoes(
                        new ConsolidacaoNotificacaoDto
            {
                NotificacaoId    = comunicadoId,
                AnoLetivo        = AnoLetivo,
                DreCodigo        = alunosDre.First().CodigoDre,
                UeCodigo         = "",
                ModalidadeCodigo = 0,
                TurmaCodigo      = 0,
                Turma            = ""
            },
                        alunosDre
                        )
                    );

            var ueConsolidado =
                alunosComunicado
                .GroupBy(
                    responsavelChave => responsavelChave.CodigoUe,
                    responsavelValor => responsavelValor,
                    (chave, alunosUe) => ConsolidaNotificacoes(
                        new ConsolidacaoNotificacaoDto
            {
                NotificacaoId    = comunicadoId,
                AnoLetivo        = AnoLetivo,
                DreCodigo        = alunosUe.First().CodigoDre,
                UeCodigo         = alunosUe.First().CodigoUe,
                ModalidadeCodigo = 0,
                TurmaCodigo      = 0,
                Turma            = ""
            },
                        alunosUe
                        )
                    );

            var tudoConsolidado =
                smeConsolidado
                .Union(dreConsolidado)
                .Union(ueConsolidado);

            if (temUe)
            {
                var modalidadeConsolidado =
                    alunosComunicado
                    .GroupBy(
                        responsavelChave => new { responsavelChave.CodigoUe, responsavelChave.CodigoModalidadeTurma },
                        responsavelValor => responsavelValor,
                        (chave, alunosModalidade) => ConsolidaNotificacoes(
                            new ConsolidacaoNotificacaoDto
                {
                    NotificacaoId    = comunicadoId,
                    AnoLetivo        = AnoLetivo,
                    DreCodigo        = alunosModalidade.First().CodigoDre,
                    UeCodigo         = alunosModalidade.First().CodigoUe,
                    ModalidadeCodigo = alunosModalidade.First().CodigoModalidadeTurma,
                    TurmaCodigo      = 0,
                    Turma            = ""
                },
                            alunosModalidade
                            )
                        );

                var turmaConsolidado =
                    alunosComunicado
                    .GroupBy(
                        responsavelChave => new { responsavelChave.CodigoUe, responsavelChave.CodigoModalidadeTurma, responsavelChave.CodigoTurma },
                        responsavelValor => responsavelValor,
                        (chave, alunosTurma) => ConsolidaNotificacoes(
                            new ConsolidacaoNotificacaoDto
                {
                    NotificacaoId    = comunicadoId,
                    AnoLetivo        = AnoLetivo,
                    DreCodigo        = alunosTurma.First().CodigoDre,
                    UeCodigo         = alunosTurma.First().CodigoUe,
                    ModalidadeCodigo = alunosTurma.First().CodigoModalidadeTurma,
                    TurmaCodigo      = alunosTurma.First().CodigoTurma,
                    Turma            = alunosTurma.First().Turma
                },
                            alunosTurma
                            )
                        );

                tudoConsolidado =
                    tudoConsolidado
                    .Union(modalidadeConsolidado)
                    .Union(turmaConsolidado);
            }

            return
                (tudoConsolidado.ToArray());
        }
Ejemplo n.º 4
0
        public async Task SalvarConsolidacaoNotificacao(ConsolidacaoNotificacaoDto consolidacaoNotificacao)
        {
            const string sqlDelete =
                @"
                    DELETE FROM 
	                    consolidacao_notificacao 
                    WHERE 
	                    notificacao_id=@NotificacaoId 
                    AND dre_codigo=@DreCodigo
                    AND ue_codigo=@UeCodigo
                    and modalidade_codigo=@ModalidadeCodigo
                    and turma_codigo=@TurmaCodigo
                    AND ano_letivo=@AnoLetivo
                ";

            const string sqlUpdate =
                @"
                update consolidacao_notificacao
                set
	                quantidade_alunos_sem_app = @QuantidadeAlunosSemApp,
	                quantidade_responsaveis_sem_app = @QuantidadeResponsaveisSemApp,
	                quantidade_alunos_com_app = @QuantidadeAlunosComApp,
	                quantidade_responsaveis_com_app = @QuantidadeResponsaveisComApp 
                where 
	                notificacao_id=@NotificacaoId 
                and dre_codigo=@DreCodigo
                and ue_codigo=@UeCodigo
                and modalidade_codigo=@ModalidadeCodigo
                and turma_codigo=@TurmaCodigo
                and ano_letivo=@AnoLetivo
                ";

            const string sqlInsert =
                @"
                insert into consolidacao_notificacao 
                (
                    ano_letivo,
	                notificacao_id,
	                dre_codigo,
	                ue_codigo,
                    modalidade_codigo,
                    turma_codigo,
                    turma,
	                quantidade_responsaveis_sem_app,
	                quantidade_alunos_sem_app,
	                quantidade_responsaveis_com_app,
	                quantidade_alunos_com_app
                ) values (
                    @AnoLetivo,
	                @NotificacaoId,
	                @DreCodigo,
	                @UeCodigo,
                    @ModalidadeCodigo,
                    @TurmaCodigo,
                    @Turma,
	                @QuantidadeResponsaveisSemApp,
	                @QuantidadeAlunosSemApp,
	                @QuantidadeResponsaveisComApp,
	                @QuantidadeAlunosComApp
                )
                ";

            using var conn = CriaConexao();

            try
            {
                conn.Open();
                var alterado = (await conn.ExecuteAsync(sqlUpdate, consolidacaoNotificacao));
                if (alterado == 0)
                {
                    await conn.ExecuteAsync(sqlInsert, consolidacaoNotificacao);
                }
                else if (alterado > 1)
                {
                    await conn.ExecuteAsync(sqlDelete, consolidacaoNotificacao);

                    await conn.ExecuteAsync(sqlInsert, consolidacaoNotificacao);
                }
                conn.Close();
            }
            catch (Exception ex)
            {
                SentrySdk.CaptureException(ex);
            }
        }