/// <summary> /// Updates the blog post. /// </summary> /// <param name="request">The request.</param> /// <returns></returns> public BlogPost UpdateBlogPost(UpdateBlogPostRequest request) { ValidateRequest(request); if (request.ExpirationDate.HasValue && request.ExpirationDate < request.ActivationDate) { var message = string.Format("Expiration date must be greater that activation date."); Logger.Error(message); throw new CmsApiValidationException(message); } try { UnitOfWork.BeginTransaction(); var blog = Repository .AsQueryable<BlogPost>(b => b.Id == request.Id) .FirstOne(); blog.ActivationDate = request.ActivationDate; blog.ExpirationDate = request.ExpirationDate; Repository.Save(blog); UnitOfWork.Commit(); Events.OnBlogUpdated(blog); return blog; } catch (Exception inner) { var message = string.Format("Failed to update blog post {0}.", request.Id); Logger.Error(message, inner); throw new CmsApiException(message, inner); } }
/// <summary> /// Updates the blog post. /// </summary> /// <param name="request">The request.</param> /// <returns></returns> public BlogPost UpdateBlogPost(UpdateBlogPostRequest request) { ValidateRequest(request); if (request.LiveToDate.HasValue && request.LiveToDate < request.LiveFromDate) { var message = string.Format("Expiration date must be greater that activation date."); Logger.Error(message); throw new CmsApiValidationException(message); } try { UnitOfWork.BeginTransaction(); var blog = Repository .AsQueryable<BlogPost>(b => b.Id == request.Id) .FirstOne(); blog.Version = request.Version; blog.Title = request.Title; blog.Description = request.IntroText; // TODO: update only is content is published. // blog.ActivationDate = request.LiveFromDate; // blog.ExpirationDate = request.LiveToDate; blog.Image = request.ImageId.HasValue ? Repository.AsProxy<MediaImage>(request.ImageId.Value) : null; blog.Author = request.AuthorId.HasValue ? Repository.AsProxy<Author>(request.AuthorId.Value) : null; blog.Category = request.CategoryId.HasValue ? Repository.AsProxy<Category>(request.CategoryId.Value) : null; // TODO: should it be allowed to change blog content, url and status? Repository.Save(blog); IList<Tag> newTags = null; tagService.SavePageTags(blog, request.Tags, out newTags); UnitOfWork.Commit(); Events.OnBlogUpdated(blog); // Notify about new created tags. PagesApiContext.Events.OnTagCreated(newTags); return blog; } catch (Exception inner) { var message = string.Format("Failed to update blog post {0}.", request.Id); Logger.Error(message, inner); throw new CmsApiException(message, inner); } }