Exemple #1
0
        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
            });
        }
Exemple #2
0
        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));
            }
        }
Exemple #3
0
        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");
            }
        }