public async Task <string> Curtir(int postagemId) { var postagens = await _postagemRepository .ObterPostagens() .ConfigureAwait(false); if (!postagens.Contains(postagemId)) { throw new ArgumentException("Não existe publicação com esse ID"); } var usuarioId = _logado.ObterUsuarioLogado(); var curtida = await _curtidasRepository .GetByUsuarioIdAndPostagemIdAsync(usuarioId, postagemId) .ConfigureAwait(false); var usuarioPostagemId = await _postagemRepository .GetUsuarioIdByPostagemId(postagemId); var amigosId = await _amigosRepository .ObterListaDeAmigos(usuarioId) .ConfigureAwait(false); if (amigosId.Contains(usuarioPostagemId) || usuarioPostagemId == usuarioId) { if (curtida != null) { var descurtiu = await _curtidasRepository .Descurtir(curtida.Id) .ConfigureAwait(false); var resultado = ("Você descurtiu a postagem de número " + postagemId); return(resultado); } else { var novaCurtida = new Curtidas(usuarioId, postagemId); var curtiu = await _curtidasRepository .Curtir(novaCurtida) .ConfigureAwait(false); var resultado = ("Você curtiu a postagem de número " + postagemId); return(resultado); } } else { throw new Exception("Você não pode curtir essa publicação, porque você não segue este usuário"); } }
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"); } }