private IEnumerable <Page> QueryBySite(Site site) { return(CloudTableHelper.GetTableServiceContext().CreateQuery <PageEntity>(PageTable) .Where(it => it.PartitionKey == site.FullName && it.ParentPage == "") .ToArray() .Select(it => PageEntityHelper.ToPage(it))); }
private void MovePageRecursively(Models.Site site, string pageFullName, string newParent, TableServiceContext serviceContext) { var oldPage = Get(new Page(site, pageFullName)); var entity = PageEntityHelper.ToPageEntity(oldPage); if (!string.IsNullOrEmpty(newParent)) { var newPage = new Page(new Page(site, newParent), oldPage.Name); entity.FullName = newPage.FullName; entity.ParentPage = newPage.Parent.FullName; } else { entity.FullName = oldPage.Name; entity.ParentPage = ""; } foreach (var item in ChildPages(oldPage)) { MovePageRecursively(site, item.FullName, entity.FullName, serviceContext); } serviceContext.AddObject(PageTable, entity); var oldEntity = PageEntityHelper.ToPageEntity(oldPage); serviceContext.AttachTo(PageTable, oldEntity, "*"); serviceContext.DeleteObject(oldEntity); }
public IQueryable <Models.Page> ChildPages(Models.Page parentPage) { return(CloudTableHelper.GetTableServiceContext().CreateQuery <PageEntity>(PageTable) .Where(it => it.PartitionKey == parentPage.Site.FullName && it.ParentPage == parentPage.FullName) .ToArray() .Select(it => PageEntityHelper.ToPage(it)) .AsQueryable()); }
public Models.Page Get(Models.Page dummy) { var entity = CloudTableHelper.GetTableServiceContext().CreateQuery <PageEntity>(PageTable) .Where(it => it.PartitionKey == dummy.Site.FullName && it.RowKey == dummy.FullName) .FirstOrDefault(); return(PageEntityHelper.ToPage(entity)); }
private IQueryable <Page> AllPagesNested(Site site) { return(CloudTableHelper.GetTableServiceContext().CreateQuery <PageEntity>(PageTable) .Where(it => it.SiteName == site.FullName) .ToArray() .Select(it => PageEntityHelper.ToPage(it)) .AsQueryable()); }
public Models.Page GetDefaultPage(Models.Site site) { var entity = CloudTableHelper.GetTableServiceContext().CreateQuery <PageEntity>(PageTable) .Where(it => it.PartitionKey == site.FullName) .Where(it => it.IsDefault == true) .FirstOrDefault(); return(PageEntityHelper.ToPage(entity)); }
public void RemoveDraft(Models.Page page) { var serviceContext = CloudTableHelper.GetTableServiceContext(); var entity = serviceContext.CreateQuery <PageEntity>(PageDraftTable) .Where(it => it.PartitionKey == page.Site.FullName && it.RowKey == page.FullName) .Select(it => PageEntityHelper.ToPage(it)).FirstOrDefault(); if (entity != null) { serviceContext.DeleteObject(entity); serviceContext.SaveChangesWithRetries(); } }
public void SaveAsDraft(Models.Page page) { var entity = PageEntityHelper.ToPageEntity(page); var serviceContext = CloudTableHelper.GetTableServiceContext(); if (GetDraft(page) != null) { serviceContext.AttachTo(PageDraftTable, entity); serviceContext.UpdateObject(entity); } else { serviceContext.AddObject(PageDraftTable, entity); } serviceContext.SaveChangesWithRetries(); }
private void InsertOrUpdate(Models.Page @new, Models.Page old) { @new.OnSaving(); var entity = PageEntityHelper.ToPageEntity(@new); var serviceContext = CloudTableHelper.GetTableServiceContext(); if (Get(old) == null) { serviceContext.AddObject(PageTable, entity); } else { serviceContext.AttachTo(PageTable, entity, "*"); serviceContext.UpdateObject(entity); } serviceContext.SaveChangesWithRetries(); }
public Models.Page Copy(Models.Site site, string sourcePageFullName, string newPageFullName) { var page = Get(new Page(site, sourcePageFullName)); var newPage = new Page(site, newPageFullName); var entity = PageEntityHelper.ToPageEntity(page); entity.FullName = newPageFullName; if (newPage.Parent != null) { entity.ParentPage = newPage.Parent.FullName; } var serviceContext = CloudTableHelper.GetTableServiceContext(); serviceContext.AddObject(PageTable, entity); serviceContext.SaveChangesWithRetries(); return(PageEntityHelper.ToPage(entity)); }
private void LocalizeWithChildPages(TableServiceContext serviceContext, Page page, Site targetSite) { var entity = CloudTableHelper.GetTableServiceContext().CreateQuery <PageEntity>(PageTable) .Where(it => it.PartitionKey == targetSite.FullName && it.RowKey == page.FullName) .FirstOrDefault(); if (entity == null) { page = Get(page); entity = PageEntityHelper.ToPageEntity(page); entity.SiteName = targetSite.FullName; serviceContext.AddObject(PageTable, entity); foreach (var item in ChildPages(page)) { LocalizeWithChildPages(serviceContext, item, targetSite); } } }