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 <List <PostagemViewModel> > ObterLinhaDoTempo() { var idUsuarioLogado = _logado.ObterUsuarioLogado(); var postagensDosAmigos = await _postagemRepository .ObterLinhaDoTempo(idUsuarioLogado) .ConfigureAwait(false); var postagensUsuario = await _postagemRepository .ObterPerfil(idUsuarioLogado) .ConfigureAwait(false); List <Postagem> listaTodasPostagens = new List <Postagem>(); listaTodasPostagens.AddRange(postagensDosAmigos); listaTodasPostagens.AddRange(postagensUsuario); List <PostagemViewModel> listaPostagens = new List <PostagemViewModel>(); foreach (Postagem postagem in listaTodasPostagens) { var usuarioId = await _postagemRepository .GetUsuarioIdByPostagemId(postagem.Id) .ConfigureAwait(false); var usuarioFotoNome = await _usuarioRepository .GetNomeFotoByIdUsuarioAsync(usuarioId) .ConfigureAwait(false); listaPostagens.Add(new PostagemViewModel() { Id = postagem.Id, NomeUsuario = usuarioFotoNome.Nome, FotoUsuario = usuarioFotoNome.FotoPerfil, TextoPost = postagem.Texto, FotoPost = postagem.FotoPost, DataPostagem = postagem.DataPostagem }); } List <PostagemViewModel> listaOrdenada = listaPostagens .OrderBy(o => o.DataPostagem) .ToList(); return(listaOrdenada); }
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"); } }