public async Task <bool> Executar(MensagemRabbit mensagemRabbit)
        {
            try
            {
                var errosParaTratar = await mediator.Send(new ObterAlunoCursoRemovidoErroQuery());

                if (errosParaTratar != null && errosParaTratar.Any())
                {
                    foreach (var erroParaTratar in errosParaTratar)
                    {
                        try
                        {
                            var dto = new CursoUsuarioRemoverDto
                            {
                                CursoUsuarioId = erroParaTratar.CursoUsuarioId,
                                TipoUsuario    = erroParaTratar.UsuarioTipo.Equals(1) ? (int)UsuarioTipo.Aluno : (int)UsuarioTipo.Professor,
                                TipoGsa        = erroParaTratar.UsuarioTipo.Equals(1) ? (int)UsuarioCursoGsaTipo.Estudante : (int)UsuarioCursoGsaTipo.Professor,
                                UsuarioId      = erroParaTratar.UsuarioId,
                                CursoId        = erroParaTratar.CursoId,
                                UsuarioGsaId   = erroParaTratar.UsuarioIdGsa,
                            };

                            await mediator.Send(new PublicaFilaRabbitCommand(RotasRabbit.FilaGsaCursoUsuarioRemovidoSync, dto));

                            await ExcluirCursoErroAsync(erroParaTratar);
                        }
                        catch (Exception ex)
                        {
                            SentrySdk.CaptureException(ex);
                        }
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                SentrySdk.CaptureException(ex);
            }

            return(false);
        }
Пример #2
0
        public async Task <bool> Executar(MensagemRabbit mensagemRabbit)
        {
            var dto = mensagemRabbit.ObterObjetoMensagem <FiltroTurmaRemoverCursoUsuarioDto>();

            var professoresASeremRemovidos = await mediator.Send(new ObterProfessoresParaRemoverCursoQuery(dto.TurmaId.ToString(), dto.DatasProfessor.DataInicio, dto.DatasProfessor.DataFim));

            foreach (var professorASerRemovido in professoresASeremRemovidos)
            {
                var professorCurso = await ObterInformacoesDoProfessorECurso(professorASerRemovido);

                if (professorCurso.professor == null)
                {
                    continue;
                }

                var cursoUsuarioRemover = new CursoUsuarioRemoverDto
                {
                    CursoUsuarioId = professorCurso.cursoUsuarioId,
                    CursoId        = professorCurso.curso.CursoId,
                    TipoUsuario    = (int)UsuarioTipo.Professor,
                    TipoGsa        = (int)UsuarioCursoGsaTipo.Professor,
                    UsuarioId      = professorCurso.professor.Indice,
                    UsuarioGsaId   = professorCurso.professor.GoogleClassRoomId,
                };

                if (ProfessorASerRemovidoEhResponsavelPeloCurso(professorCurso.professor, professorCurso.curso))
                {
                    var funcionariosDoCurso = await mediator.Send(new ObterFuncionariosPorCursoQuery(professorCurso.curso.CursoId));

                    var novoResponsavel = DefinaNovoResponsavelPeloCurso(funcionariosDoCurso, professorCurso.professor);

                    var donoDoCursoAlterado = await mediator.Send(new AtribuirDonoCursoCommand(professorCurso.curso.TurmaId, professorCurso.curso.ComponenteCurricularId, novoResponsavel.GoogleClassroomId, novoResponsavel.Email));
                }

                await mediator.Send(new PublicaFilaRabbitCommand(RotasRabbit.FilaGsaCursoUsuarioRemovidoSync, cursoUsuarioRemover));
            }

            return(true);
        }
Пример #3
0
        public async Task <bool> Executar(MensagemRabbit mensagemRabbit)
        {
            var dto = mensagemRabbit.ObterObjetoMensagem <FiltroTurmaRemoverCursoUsuarioDto>();

            var parametrosCargaInicialDto = await mediator.Send(new ObterParametrosCargaIncialPorAnoQuery(DateTime.Today.Year));

            var alunosCodigosInativosEOL = await mediator.Send(new ObterAlunosCodigosInativosPorAnoLetivoETurmaQuery(DateTime.Today.Year, dto.TurmaId, dto.DatasAluno.DataInicio, dto.DatasAluno.DataFim, parametrosCargaInicialDto));

            if (alunosCodigosInativosEOL != null && alunosCodigosInativosEOL.Any())
            {
                var cursosUsuarios = await mediator.Send(new ObterAlunosCodigosComRegistroEmCursosQuery(alunosCodigosInativosEOL, dto.TurmaId));

                if (cursosUsuarios != null && cursosUsuarios.Any())
                {
                    foreach (var cursoUsuario in cursosUsuarios)
                    {
                        var cursoUsuarioRemover = new CursoUsuarioRemoverDto()
                        {
                            CursoUsuarioId = cursoUsuario.CursoUsuarioId,
                            CursoId        = cursoUsuario.CursoId,
                            UsuarioId      = cursoUsuario.UsuarioId,
                            UsuarioGsaId   = cursoUsuario.UsuarioGsaId,
                            TipoUsuario    = (int)UsuarioTipo.Aluno,
                            TipoGsa        = (int)UsuarioCursoGsaTipo.Estudante,
                        };

                        await mediator.Send(new PublicaFilaRabbitCommand(RotasRabbit.FilaGsaCursoUsuarioRemovidoSync, cursoUsuarioRemover));
                    }
                }
                else
                {
                    SentrySdk.CaptureMessage($"Não foi possível localizar a relação de cursos x estudantes na base do GSA! TurmaId: {dto.TurmaId} e {String.Join(", ", alunosCodigosInativosEOL)}");
                }
            }

            return(true);
        }
 private async Task InserirMensagemErroIntegracaoAsync(CursoUsuarioRemoverDto filtro, string mensagem)
 => await mediator.Send(new IncluirCursoUsuarioRemocaoErroCommand(new CursoUsuarioRemovidoGsaErro(filtro.UsuarioId, filtro.CursoId, mensagem)));
        public async Task <bool> Executar(MensagemRabbit mensagemRabbit)
        {
            var dto = mensagemRabbit.ObterObjetoMensagem <FiltroTurmaRemoverCursoUsuarioDto>();

            try
            {
                var parametrosCargaInicialDto = await mediator.Send(new ObterParametrosCargaIncialPorAnoQuery(DateTime.Today.Year));

                var funcionariosASeremRemovidos = await mediator.Send(
                    new ObterFuncionariosParaRemoverCursoQuery(dto.TurmaId.ToString(), dto.DatasFuncionario.DataInicio, dto.DatasFuncionario.DataFim, parametrosCargaInicialDto));

                foreach (var funcionarioASeremRemovido in funcionariosASeremRemovidos)
                {
                    var funcionarioECurso = await ObterFuncionarioECurso(funcionarioASeremRemovido);

                    if (funcionarioECurso.funcionarioCurso is null || funcionarioECurso.curso is null)
                    {
                        continue;
                    }

                    var cursoFuncionarioRemover = new CursoUsuarioRemoverDto
                    {
                        CursoUsuarioId = funcionarioECurso.funcionarioCurso.CursoUsuarioId,
                        CursoId        = funcionarioECurso.curso.Id,
                        TipoUsuario    = (int)UsuarioTipo.Funcionario,
                        TipoGsa        = (int)UsuarioCursoGsaTipo.Funcionario,
                        UsuarioId      = funcionarioECurso.funcionarioCurso.UsuarioId,
                        UsuarioGsaId   = funcionarioECurso.funcionarioCurso.UsuarioGsaId.ToString(),
                    };

                    if (FuncionarioEResponsavelPeloCurso(funcionarioECurso.funcionarioCurso.Email,
                                                         funcionarioECurso.curso.Email))
                    {
                        var funcionariosDoCurso =
                            await mediator.Send(new ObterFuncionariosPorCursoQuery(funcionarioECurso.curso.Id));

                        var novoResponsavel =
                            DefinaNovoResponsavelPeloCurso(funcionariosDoCurso, funcionarioECurso.funcionarioCurso);

                        var donoDoCursoAlterado = await mediator.Send(new AtribuirDonoCursoCommand(
                                                                          funcionarioECurso.curso.TurmaId, funcionarioECurso.curso.ComponenteCurricularId,
                                                                          novoResponsavel.GoogleClassroomId, novoResponsavel.Email));

                        if (!donoDoCursoAlterado)
                        {
                            await mediator.Send(new PublicaFilaRabbitCommand(
                                                    RotasRabbit.FilaGsaCursoUsuarioRemovidoFuncionarioTratarErro,
                                                    dto));

                            continue;
                        }
                    }

                    await mediator.Send(new PublicaFilaRabbitCommand(RotasRabbit.FilaGsaCursoUsuarioRemovidoSync,
                                                                     cursoFuncionarioRemover));
                }
            }
            catch (Exception exception)
            {
                SentrySdk.CaptureException(exception);
                await mediator.Send(new PublicaFilaRabbitCommand(
                                        RotasRabbit.FilaGsaCursoUsuarioRemovidoFuncionarioTratarErro,
                                        dto));
            }


            return(true);
        }