public async Task <ComentarioViewModel> InserirAsync(ComentarioInput comentarioInput) { var postagemIn = await _postagemRepository .ObterPostagemPorIdAsync(comentarioInput.PostagemId) .ConfigureAwait(false); if (postagemIn is null) { throw new ArgumentException("Postagem não encontrada."); } var comentario = new Comentario(comentarioInput.PostagemId, comentarioInput.UsuarioId, comentarioInput.Texto); comentario.IsValid(); var usuario = await _usuarioRespository .PegarId(comentario.UsuarioId) .ConfigureAwait(false); if (usuario is null) { throw new ArgumentException("Usuario não encontrado."); } var postagem = await _postagemRepository .ObterListaPostagemPorUsuarioIdAsync(comentario.UsuarioId) .ConfigureAwait(false); if (postagem is null) { throw new ArgumentException("Postagem não encontrada."); } var id = await _comentarioRepository .InserirAsync(comentario) .ConfigureAwait(false); return(new ComentarioViewModel() { IdComentario = id, IdPostagem = comentario.PostagemId, UsuarioId = comentario.UsuarioId, NomeUsuario = usuario.Nome, Comentario = comentario.Texto, Criacao = comentario.Criacao }); }
public async Task <IActionResult> Post([FromBody] ComentarioInput comentarioInput) { try { var comentario = await _comentarioAppService .InserirAsync(comentarioInput) .ConfigureAwait(false); return(Created("", comentario)); } catch (ArgumentException ex) { return(BadRequest(ex.Message)); } }
public async Task <IActionResult> ComentarPostagem([FromRoute] int idPostagem, [FromBody] ComentarioInput comentarioInput) { try { var user = await _comentarioAppService .InserirComentario(idPostagem, comentarioInput) .ConfigureAwait(false); return(Created("", user)); } catch (ArgumentException arg) { return(BadRequest(arg.Message)); } }
public async Task <Comentario> InserirComentario(int idPostagem, ComentarioInput input) { var postagens = await _postagemRepository .ObterPostagens() .ConfigureAwait(false); if (!postagens.Contains(idPostagem)) { throw new Exception("Não existe publicação com esse ID"); } var usuarioId = _logado.ObterUsuarioLogado(); var usuarioPostagemId = await _postagemRepository .GetUsuarioIdByPostagemId(idPostagem); var amigosId = await _amigosRepository .ObterListaDeAmigos(usuarioId) .ConfigureAwait(false); if (amigosId.Contains(usuarioPostagemId) || usuarioPostagemId == usuarioId) { var comentario = new Comentario(idPostagem, usuarioId, input.Texto); if (!comentario.EhValido()) { throw new ArgumentException("Você não pode inserir um comentário vazio"); } var id = await _comentarioRepository .InserirComentario(comentario) .ConfigureAwait(false); comentario.SetId(id); return(comentario); } else { throw new Exception("Você não pode comentar essa publicação, porque você não segue este usuário"); } }