Ejemplo n.º 1
0
        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");
            }
        }