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); }
public RemoverUsuarioCursoGsaCommand(UsuarioCursoGsa usuarioCursoGsa) { UsuarioCursoGsa = usuarioCursoGsa; }
public IncluirUsuarioCursoGsaCommand(UsuarioCursoGsa usuarioCursoGsa) { UsuarioCursoGsa = usuarioCursoGsa; }