public async Task <ActionResult> Save(PostEditorViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                await _postsServicio.UpdatePost(viewModel.ToPostEditorDto());
            }

            return(Content(string.Empty));
        }
        public async Task <ActionResult> Edit(PostEditorViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            var updatePostResult = await _postsServicio.UpdatePost(viewModel.ToPostEditorDto());

            if (updatePostResult.IsFailure)
            {
                ModelState.AddModelError("*", updatePostResult.Error);
            }

            return(RedirectToAction("Index"));
        }
        public async Task <ActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var post = await _postsServicio.GetPostById(id.Value);

            if (post == null)
            {
                return(HttpNotFound());
            }

            var viewModel = new PostEditorViewModel(post);

            return(View(viewModel));
        }
        private PostEditorViewModel GeneratePostEditorViewModel(int threadID, EditorType editorType, Post post = null)
        {
            if (editorType == EditorType.Edit && post == null)
                throw new InvalidOperationException("postID is required to generate an edit PostViewModel");

            var model = new PostEditorViewModel();

            if (editorType == EditorType.Edit)
            {
                model.Message = post.Text;
                model.ShowSignature = post.UseSignature;
                model.PostID = post.PostID;
                model.SubscribeToThread = _threadServices.IsSubscribed(threadID, _currentUser.UserID);
                model.Attachments = _fileServices.GetPostAttachments(post.PostID);
            }

            return model;
        }
        public async Task <ActionResult> Create(string boton, PostEditorViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }

            var createPostResult = await _postsServicio.CreatePost(viewModel.ToPostEditorDto());

            if (createPostResult.IsFailure)
            {
                ModelState.AddModelError("*", createPostResult.Error);
            }

            if (boton.ToLower().Contains(@"exit"))
            {
                return(RedirectToAction("Index"));
            }

            return(RedirectToAction("Edit", new { viewModel.Id }));
        }
        public ActionResult Create()
        {
            var viewModel = new PostEditorViewModel(Post.CreateNewDefaultPost("blog autor name"));

            return(View(viewModel));
        }