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 }); }