private void Replace(ContentItem currentItem, ContentItem replacementItem) { UpdateValues(currentItem, replacementItem); itemRepository.SaveOrUpdate(currentItem); foreach (var removedItem in RemoveRemovedPartsRecursive(currentItem, replacementItem)) { itemRepository.Delete(removedItem); } foreach (var modifiedItem in UpdateModifiedPartsRecursive(currentItem, replacementItem)) { itemRepository.SaveOrUpdate(modifiedItem); } foreach (var addedItem in AddAddedPartsRecursive(currentItem, replacementItem)) { itemRepository.SaveOrUpdate(addedItem); } if (ItemReplacedVersion != null) { ItemReplacedVersion.Invoke(this, new ItemEventArgs(replacementItem)); } itemRepository.Flush(); }
private void Replace(ContentItem currentItem, ContentItem replacementItem) { UpdateValues(currentItem, replacementItem); itemRepository.SaveOrUpdate(currentItem); foreach (var removedItem in RemoveRemovedPartsRecursive(currentItem, replacementItem)) { itemRepository.Delete(removedItem); } var reorderedParts = ReorderReorderedPartRecursive(currentItem, replacementItem); foreach (var modifiedItem in UpdateModifiedPartsRecursive(currentItem, replacementItem)) { itemRepository.SaveOrUpdate(modifiedItem); } foreach (var addedItem in AddAddedPartsRecursive(currentItem, replacementItem)) { itemRepository.SaveOrUpdate(addedItem); } foreach (var reorderedPart in reorderedParts) { Utility.Insert(reorderedPart, reorderedPart.Parent, "SortOrder"); itemRepository.SaveOrUpdate(reorderedPart); } if (ItemReplacedVersion != null) { ItemReplacedVersion.Invoke(this, new ItemEventArgs(replacementItem)); } itemRepository.Flush(); }
private void DeleteRecursive(ContentItem itemToDelete) { using (logger.Indent()) { foreach (ContentItem child in itemToDelete.Children.ToList()) { DeleteRecursive(child); } } itemToDelete.AddTo(null); logger.InfoFormat("Deleting {0}", itemToDelete); repository.Delete(itemToDelete); }
public ContentVersion UpgradeVersion(ContentItem version) { using (var tx = itemRepository.BeginTransaction()) { var clone = version.CloneForVersioningRecursive(); clone.VersionOf = version.VersionOf.Value; foreach (var child in version.VersionOf.Children.FindParts()) { child.CloneForVersioningRecursive().AddTo(clone); } var newVersion = versionRepository.Save(clone); itemRepository.Delete(version); tx.Commit(); return(newVersion); } }
private void DeleteRecursive(ContentItem itemToDelete, ContentVersionRepository versionRepository) { using (logger.Indent()) { foreach (ContentItem child in itemToDelete.Children.ToList()) { DeleteRecursive(child, versionRepository); } } itemToDelete.AddTo(null); logger.InfoFormat("Deleting {0}", itemToDelete); //Delete item versions var itemVersions = versionRepository.GetVersions(itemToDelete).ToArray(); foreach (var version in itemVersions) { versionRepository.Repository.Delete(version); } //Delete item repository.Delete(itemToDelete); }
public BanicoMutation( IConfiguration configuration, ISectionRepository sectionRepository, ISectionItemRepository sectionItemRepository, IContentItemRepository contentItemRepository, IConfigRepository configRepository, IAccessService accessService ) { _configuration = configuration; _contentItemRepository = contentItemRepository; _configRepository = configRepository; _accessService = accessService; Name = "Mutation"; Field <SectionType>( "addOrUpdateSection", arguments: new QueryArguments( // <SectionInputType> new QueryArgument <NonNullGraphType <SectionInputType> > { Name = "section" } ), resolve: context => { var section = context.GetArgument <Section>("section"); this.StampItem(section).Wait(); var isSectionAdmin = _accessService.Allowed("admin/sections", "", false).Result; this.WriteDebugMessage("BanicoMutation: isSectionAdmin " + isSectionAdmin.ToString()); return(sectionRepository.AddOrUpdate(section, isSectionAdmin)); }); Field <SectionItemType>( "addOrUpdateSectionItem", arguments: new QueryArguments( // <SectionInputType> new QueryArgument <NonNullGraphType <SectionItemInputType> > { Name = "sectionItem" } ), resolve: context => { var sectionItem = context.GetArgument <SectionItem>("sectionItem"); this.StampItem(sectionItem).Wait(); var isSectionItemAdmin = _accessService.Allowed("admin/sectionItems", "", false).Result; return(sectionItemRepository.AddOrUpdate(sectionItem, isSectionItemAdmin)); }); Field <ContentItemType>( "addOrUpdateContentItem", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <ContentItemInputType> > { Name = "contentItem" } ), resolve: context => { var contentItem = context.GetArgument <ContentItem>("contentItem"); if (_accessService.IsEnabled(contentItem.Module).Result) { if (_accessService.Allowed(contentItem).Result) { if (!this.checkTenant(contentItem)) { throw new UnauthorizedAccessException("Update of content item is not allowed."); } this.StampItem(contentItem).Wait(); var userId = _accessService.GetUserId(); var isAdmin = _accessService.IsAdminOrSuperAdmin(); return(contentItemRepository.AddOrUpdate(contentItem, userId, isAdmin)); } else { var userId = _accessService.GetUserId(); throw new UnauthorizedAccessException("Add or update of content module / type " + contentItem.Module + " / " + contentItem.Type + " is not allowed for user " + userId + "."); } } else { throw new UnauthorizedAccessException("Content module " + contentItem.Module + " is not enabled."); } }); Field <ContentItemType>( "deleteContentItem", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <StringGraphType> > { Name = "id" } ), resolve: context => { var id = context.GetArgument <String>("id"); if (!this.checkTenant(id)) { throw new UnauthorizedAccessException("Deletion of content item is not allowed."); } var userId = _accessService.GetUserId(); var isAdmin = _accessService.IsAdminOrSuperAdmin(); return(contentItemRepository.Delete(id, userId, isAdmin)); }); Field <ConfigType>( "addOrUpdateConfig", arguments: new QueryArguments( new QueryArgument <NonNullGraphType <ConfigInputType> > { Name = "config" } ), resolve: context => { var config = context.GetArgument <Config>("config"); this.StampItem(config).Wait(); var isSuperAdmin = _accessService.IsSuperAdmin(); return(configRepository.AddOrUpdate(config, isSuperAdmin)); }); }
public override void Delete(ContentItem item) { repository.Delete(item); }