Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 2
0
        /// <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);
            }
        }