Exemple #1
0
        public void SaveOrUpdate(PageDto item)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item", "The post must be contains a valid instance");
            }

            Page page = this.Session.Load <Page>(item.Id)
                        ?? new Page
            {
                CreatedAt = DateTimeOffset.Now
            };

            if (string.IsNullOrEmpty(item.Author))
            {
                item.Author = Thread.CurrentPrincipal.Identity.Name;
            }

            item.MapPropertiesToInstance(page);

            if (string.IsNullOrEmpty(page.Excerpt))
            {
                page.Excerpt = AbstractHelper.GenerateAbstract(page.Content);
            }

            if (string.IsNullOrEmpty(page.Slug))
            {
                page.Slug = SlugHelper.GenerateSlug(page.Title, page.Id, this.GetPostBySlugInternal);
            }

            if (page.IsTransient)
            {
                ItemComments comments = new ItemComments
                {
                    Item = new ItemReference
                    {
                        Id              = page.Id,
                        Status          = page.Status,
                        ItemPublishedAt = page.PublishAt
                    }
                };

                this.Session.Store(comments);
                page.CommentsId = comments.Id;

                ItemTrackbacks trackbacks = new ItemTrackbacks
                {
                    Item = new ItemReference
                    {
                        Id              = page.Id,
                        Status          = page.Status,
                        ItemPublishedAt = page.PublishAt
                    }
                };

                this.Session.Store(trackbacks);
                page.TrackbacksId = trackbacks.Id;
            }

            this.Session.Store(page);

            UpdateDenormalizedItemIndex.UpdateIndexes(this.store, this.Session, page);

            item.Id = RavenIdHelper.Resolve(page.Id);
        }