Esempio n. 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
            });
        }