예제 #1
0
        public async Task <bool> SalvarAsync(UsuarioGsa usuarioComparativo)
        {
            const string insertQuery = @"insert into public.usuarios_gsa
                                        (id, nome, email, data_inclusao, data_ultimo_login, eh_admin, organization_path, inserido_manualmente_google)
                                        values
                                        (@id, @nome, @email, @dataInclusao, @dataUltimoLogin, @EhAdmin, @OrganizationPath, @inseridoManualmenteGoogle)
                                        RETURNING id";

            var parametros = new
            {
                usuarioComparativo.Id,
                usuarioComparativo.Nome,
                usuarioComparativo.Email,
                usuarioComparativo.DataInclusao,
                usuarioComparativo.DataUltimoLogin,
                usuarioComparativo.EhAdmin,
                usuarioComparativo.OrganizationPath,
                usuarioComparativo.InseridoManualmenteGoogle
            };

            using var conn = ObterConexao();
            await conn.ExecuteAsync(insertQuery, parametros);

            return(true);
        }
예제 #2
0
        public async Task <bool> Executar(MensagemRabbit mensagemRabbit)
        {
            if (mensagemRabbit?.Mensagem is null)
            {
                throw new NegocioException("Não foi possível processaor o usuário GSA. A mensagem enviada é inválida.");
            }

            var usuarioGsaDto = JsonConvert.DeserializeObject <UsuarioGsaDto>(mensagemRabbit.Mensagem.ToString());

            try
            {
                if (usuarioGsaDto is null)
                {
                    throw new NegocioException("Não foi possível processaor o usuário GSA. A mensagem enviada é inválida.");
                }

                var existeUsuarioGsa = await mediator.Send(new ExisteUsuarioGsaPorIdQuery(usuarioGsaDto.Id));

                if (existeUsuarioGsa)
                {
                    usuarioGsaDto.MensagemErro = $"O usuario '{usuarioGsaDto.Id}' já existe na usuario_gsa.";
                    await mediator.Send(new PublicaFilaRabbitCommand(RotasRabbit.FilaGsaUsuarioIncluirErro, usuarioGsaDto));

                    await mediator.Send(new SalvarLogViaRabbitCommand($"{RotasRabbit.FilaGsaUsuarioIncluir} - {usuarioGsaDto.MensagemErro}", LogNivel.Critico, LogContexto.FormacaoCidade, mensagemRabbit.Mensagem.ToString()));
                }
                else
                {
                    var usuarioExiste = await mediator.Send(new ExisteUsuarioPorGoogleClassroomIdQuery(usuarioGsaDto.Id));

                    var usuarioGsa = new UsuarioGsa(usuarioGsaDto.Id, usuarioGsaDto.Email, usuarioGsaDto.Nome, usuarioGsaDto.DataUltimoLogin, usuarioGsaDto.EhAdmin, usuarioGsaDto.OrganizationPath, !usuarioExiste, usuarioGsaDto.DataInclusao);

                    var retorno = await mediator.Send(new IncluirUsuarioGsaCommand(usuarioGsa));

                    if (usuarioGsaDto.UltimoItemDaFila)
                    {
                        await IniciarValidacaoAsync();
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                usuarioGsaDto.MensagemErro = $"{ex.Message}";
                await mediator.Send(new PublicaFilaRabbitCommand(RotasRabbit.FilaGsaUsuarioIncluirErro, usuarioGsaDto));

                await mediator.Send(new SalvarLogViaRabbitCommand($"{RotasRabbit.FilaGsaUsuarioIncluir} - {ex.Message}", LogNivel.Critico, LogContexto.UsuarioGsa, mensagemRabbit.Mensagem.ToString()));

                return(false);
            }
        }
예제 #3
0
        public async Task <bool> Executar(MensagemRabbit mensagemRabbit)
        {
            var filtro = JsonConvert.DeserializeObject <AlunoCursoEol>(mensagemRabbit.Mensagem.ToString());

            try
            {
                var alunoCursoGoogle = new AlunoCursoGoogle();

                var aluno = await mediator.Send(new ObterUsuariosPorCodigosQuery(filtro.CodigoRF, (int)UsuarioTipo.Professor));

                if (aluno is null || !aluno.Any())
                {
                    var professorEol = new ProfessorEol(filtro.CodigoRF, filtro.NomePessoa, filtro.NomeSocial ?? string.Empty, filtro.OrganizationPath);

                    var professorGoogle = new ProfessorGoogle(filtro.CodigoRF, professorEol.Nome, professorEol.Email, filtro.OrganizationPath);
                    var indiceInserido  = await InserirProfessorGoogleAsync(professorGoogle);

                    if (indiceInserido > 0)
                    {
                        var usuarioGsa         = new UsuarioGsa(filtro.CodigoRF.ToString(), professorEol.Email, filtro.NomePessoa, null, false, filtro.OrganizationPath, false, DateTime.Now);
                        var usuarioGsaInserido = await mediator.Send(new IncluirUsuarioGsaCommand(usuarioGsa));

                        alunoCursoGoogle = new AlunoCursoGoogle(indiceInserido, filtro.CursoId);
                        await InserirAlunoCursoGoogleAsync(alunoCursoGoogle, professorEol.Email);
                    }
                    else
                    {
                        filtro.MensagemErro += $" Inserido: {indiceInserido}";
                        await mediator.Send(new PublicaFilaRabbitCommand(RotasRabbit.FilaGsaFormacaoCidadeTurmasTratarAlunoErro, filtro));
                    }
                }
                else
                {
                    var alunoFirst = aluno.FirstOrDefault();
                    alunoCursoGoogle = new AlunoCursoGoogle(alunoFirst.Indice, filtro.CursoId);
                    await InserirAlunoCursoGoogleAsync(alunoCursoGoogle, alunoFirst.Email);
                }
            }
예제 #4
0
 public IncluirUsuarioGsaCommand(UsuarioGsa usuarioGsa)
 {
     UsuarioGsa = usuarioGsa;
 }