public async Task <bool> Executar(MensagemRabbit mensagemRabbit)
        {
            if (mensagemRabbit?.Mensagem is null)
            {
                throw new NegocioException("Não foi possível processar o curso do usuário GSA. A mensagem enviada é inválida.");
            }

            var usuarioCursoGsaDto = JsonConvert.DeserializeObject <UsuarioCursoGsaDto>(mensagemRabbit.Mensagem.ToString());

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

            var usuarioCursoExiste = await mediator.Send(new ExisteCursoDoUsuarioGsaPorUsuarioIdCursoIdQuery(usuarioCursoGsaDto.UsuarioId, usuarioCursoGsaDto.CursoId.ToString()));

            if (usuarioCursoExiste)
            {
                return(true);
            }

            var usuarioCursoTipo = Enum.Parse <UsuarioCursoGsaTipo>(usuarioCursoGsaDto.UsuarioCursoTipo.ToString());
            var usuarioGsa       = new UsuarioCursoGsa(usuarioCursoGsaDto.UsuarioId, usuarioCursoGsaDto.CursoId.ToString(), usuarioCursoTipo);

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

            return(retorno);
        }
        public async Task <bool> RemoverAsync(UsuarioCursoGsa usuarioCursoGsa)
        {
            const string query = @"DELETE FROM cursos_usuarios_gsa where curso_id = @cursoId and usuario_id = @usuarioId";

            var parametros = new
            {
                cursoId   = usuarioCursoGsa.CursoId,
                usuarioId = usuarioCursoGsa.UsuarioId
            };

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

            return(true);
        }
        public async Task <bool> Executar(MensagemRabbit mensagemRabbit)
        {
            if (mensagemRabbit?.Mensagem is null)
            {
                throw new NegocioException("Não foi possível gerar a carga de dados para a remoção de cursos do usuário GSA.");
            }

            var filtro = mensagemRabbit?.ObterObjetoMensagem <CursoUsuarioRemoverDto>();

            if (filtro is null)
            {
                throw new NegocioException("A mensagem enviada é inválida.");
            }

            try
            {
                // Incluir UsuarioRemovido
                var tipoUsuario = (UsuarioTipo)filtro.TipoUsuario;
                await mediator.Send(new IncluirCursoUsuarioRemovidoCommand(filtro.UsuarioId, filtro.CursoId, tipoUsuario));

                // Usuario Curso GSA
                var tipoGsa                 = (UsuarioCursoGsaTipo)filtro.TipoGsa;
                var usuarioCursoGsa         = new UsuarioCursoGsa(filtro.UsuarioGsaId, filtro.CursoId.ToString(), tipoGsa);
                var usuarioCursoGsaRemovido = await mediator.Send(new RemoverUsuarioCursoGsaCommand(usuarioCursoGsa));

                // Usuario Curso
                var usuarioCurso = await mediator.Send(new RemoverCursoUsuarioCommand(filtro.CursoUsuarioId));

                // Google API
                var usuarioCursoGoogle         = new UsuarioCursoGoogleDto(filtro.CursoId, filtro.UsuarioGsaId, filtro.TipoGsa);
                var usuarioCursoGoogleRemovido = await mediator.Send(new RemoverUsuarioCursoGoogleCommand(usuarioCursoGoogle));

                if (usuarioCursoGoogleRemovido == false)
                {
                    throw new NegocioException("Não foi possível remover a associação de Curso x Usuário no Google API");
                }
            }
            catch (Exception ex)
            {
                SentrySdk.CaptureException(ex);
                await InserirMensagemErroIntegracaoAsync(filtro, ex.Message);
            }
            return(true);
        }
        public async Task <bool> SalvarAsync(UsuarioCursoGsa usuarioCursoGsa)
        {
            const string insertQuery = @"insert into public.cursos_usuarios_gsa
                                        (usuario_id, curso_id, usuario_curso_tipo)
                                        values
                                        (@usuarioId, @cursoId, @usuarioCursoTipo)";

            var parametros = new
            {
                usuarioCursoGsa.UsuarioId,
                usuarioCursoGsa.CursoId,
                usuarioCursoGsa.UsuarioCursoTipo
            };

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

            return(true);
        }
コード例 #5
0
 public RemoverUsuarioCursoGsaCommand(UsuarioCursoGsa usuarioCursoGsa)
 {
     UsuarioCursoGsa = usuarioCursoGsa;
 }
 public IncluirUsuarioCursoGsaCommand(UsuarioCursoGsa usuarioCursoGsa)
 {
     UsuarioCursoGsa = usuarioCursoGsa;
 }