private void DeleteFolders(IEnumerable <object> folderIds) { foreach (var folderId in folderIds) { CancellationToken.ThrowIfCancellationRequested(); var folder = FolderDao.GetFolder(folderId); object canCalculate = null; if (folder == null) { Error = FilesCommonResource.ErrorMassage_FolderNotFound; } else if (folder.FolderType != FolderType.DEFAULT && folder.FolderType != FolderType.BUNCH) { Error = FilesCommonResource.ErrorMassage_SecurityException_DeleteFolder; } else if (!_ignoreException && !FilesSecurity.CanDelete(folder)) { canCalculate = FolderDao.CanCalculateSubitems(folderId) ? null : folderId; Error = FilesCommonResource.ErrorMassage_SecurityException_DeleteFolder; } else { canCalculate = FolderDao.CanCalculateSubitems(folderId) ? null : folderId; FileMarker.RemoveMarkAsNewForAll(folder); if (folder.ProviderEntry && folder.ID.Equals(folder.RootFolderId)) { if (ProviderDao != null) { ProviderDao.RemoveProviderInfo(folder.ProviderId); FilesMessageService.Send(folder, _headers, MessageAction.ThirdPartyDeleted, folder.ID.ToString(), folder.ProviderKey); } ProcessedFolder(folderId); } else { var immediately = _immediately || !FolderDao.UseTrashForRemove(folder); if (immediately && FolderDao.UseRecursiveOperation(folder.ID, null)) { DeleteFiles(FileDao.GetFiles(folder.ID)); DeleteFolders(FolderDao.GetFolders(folder.ID).Select(f => f.ID).ToList()); if (FolderDao.IsEmpty(folder.ID)) { FolderDao.DeleteFolder(folder.ID); FilesMessageService.Send(folder, _headers, MessageAction.FolderDeleted, folder.Title); ProcessedFolder(folderId); } } else { var files = FileDao.GetFiles(folder.ID, new OrderBy(SortedByType.AZ, true), FilterType.FilesOnly, false, Guid.Empty, string.Empty, false, true); string tmpError; if (!_ignoreException && WithError(files, true, out tmpError)) { Error = tmpError; } else { if (immediately) { FolderDao.DeleteFolder(folder.ID); FilesMessageService.Send(folder, _headers, MessageAction.FolderDeleted, folder.Title); } else { FolderDao.MoveFolder(folder.ID, _trashId, CancellationToken); FilesMessageService.Send(folder, _headers, MessageAction.FolderMovedToTrash, folder.Title); } ProcessedFolder(folderId); } } } } ProgressStep(canCalculate); } }
private void DeleteFolders(List <object> folderIds) { foreach (var folderId in folderIds) { CancellationToken.ThrowIfCancellationRequested(); var folder = FolderDao.GetFolder(folderId); if (folder == null) { Error = FilesCommonResource.ErrorMassage_FolderNotFound; } else if (!ignoreException && !FilesSecurity.CanDelete(folder)) { Error = FilesCommonResource.ErrorMassage_SecurityException_DeleteFolder; } else { FileMarker.RemoveMarkAsNewForAll(folder); if (FolderDao.UseTrashForRemove(folder)) { var files = FileDao.GetFiles(folder.ID, true); if (!ignoreException && files.Exists(FileTracker.IsEditing)) { Error = FilesCommonResource.ErrorMassage_SecurityException_DeleteEditingFolder; } else { FolderDao.MoveFolder(folder.ID, trashId); FilesMessageService.Send(folder, headers, MessageAction.FolderMovedToTrash, folder.Title); ProcessedFolder(folderId); } } else { if (FolderDao.UseRecursiveOperation(folder.ID, null)) { DeleteFiles(FileDao.GetFiles(folder.ID, false)); DeleteFolders(FolderDao.GetFolders(folder.ID).Select(f => f.ID).ToList()); if (FolderDao.GetItemsCount(folder.ID, true) == 0) { FolderDao.DeleteFolder(folder.ID); ProcessedFolder(folderId); } } else { if (folder.ProviderEntry && folder.ID.Equals(folder.RootFolderId)) { ProviderDao.RemoveProviderInfo(folder.ProviderId); } else { FolderDao.DeleteFolder(folder.ID); } ProcessedFolder(folderId); } } } ProgressStep(); } }
private void DeleteFolders(List <object> folderIds) { foreach (var folderId in folderIds) { CancellationToken.ThrowIfCancellationRequested(); var folder = FolderDao.GetFolder(folderId); object canCalculate = null; if (folder == null) { Error = FilesCommonResource.ErrorMassage_FolderNotFound; } else if (folder.FolderType != FolderType.DEFAULT && folder.FolderType != FolderType.BUNCH) { Error = FilesCommonResource.ErrorMassage_SecurityException_DeleteFolder; } else if (!ignoreException && !FilesSecurity.CanDelete(folder)) { canCalculate = FolderDao.CanCalculateSubitems(folderId) ? null : folderId; Error = FilesCommonResource.ErrorMassage_SecurityException_DeleteFolder; } else { canCalculate = FolderDao.CanCalculateSubitems(folderId) ? null : folderId; FileMarker.RemoveMarkAsNewForAll(folder); if (folder.ProviderEntry && folder.ID.Equals(folder.RootFolderId)) { if (ProviderDao != null) { ProviderDao.RemoveProviderInfo(folder.ProviderId); FilesMessageService.Send(folder, headers, MessageAction.ThirdPartyDeleted, folder.ID.ToString(), folder.ProviderKey); } ProcessedFolder(folderId); } else { if (FolderDao.UseTrashForRemove(folder)) { var files = FileDao.GetFiles(folder.ID); if (!ignoreException && files.Exists(FileTracker.IsEditing)) { Error = FilesCommonResource.ErrorMassage_SecurityException_DeleteEditingFolder; } else { FolderDao.MoveFolder(folder.ID, trashId); FilesMessageService.Send(folder, headers, MessageAction.FolderMovedToTrash, folder.Title); ProcessedFolder(folderId); } } else { if (FolderDao.UseRecursiveOperation(folder.ID, null)) { DeleteFiles(FileDao.GetFiles(folder.ID)); DeleteFolders(FolderDao.GetFolders(folder.ID).Select(f => f.ID).ToList()); if (FolderDao.IsEmpty(folder.ID)) { FolderDao.DeleteFolder(folder.ID); ProcessedFolder(folderId); } } else { FolderDao.DeleteFolder(folder.ID); ProcessedFolder(folderId); } } } } ProgressStep(canCalculate); } }
private void DeleteFolders(List <object> folderIds) { if (folderIds.Count == 0) { return; } foreach (var folderId in folderIds) { if (Canceled) { return; } var folder = FolderDao.GetFolder(folderId); if (folder == null) { Error = FilesCommonResource.ErrorMassage_FolderNotFound; } else if (!FilesSecurity.CanDelete(folder)) { Error = FilesCommonResource.ErrorMassage_SecurityException_DeleteFolder; } else { if (FolderDao.UseTrashForRemove(folder)) { var files = FolderDao.GetFiles(folder.ID, true); if (files.Exists(fid => (File.GetFileStatus(fid, FileStatus.None) & FileStatus.IsEditing) == FileStatus.IsEditing)) { Error = FilesCommonResource.ErrorMassage_SecurityException_DeleteEditingFolder; } else { FolderDao.MoveFolder(folder.ID, _trashId); files.ForEach(fid => NoticeDelete(FileDao.GetFile(fid))); ProcessedFolder(folderId); TagDao.RemoveTags(TagDao.GetTags(folder.ID, FileEntryType.Folder, TagType.New).ToArray()); } } else { if (FolderDao.UseRecursiveOperation(folder.ID, null)) { DeleteFiles(FolderDao.GetFiles(folder.ID, false)); DeleteFolders(FolderDao.GetFolders(folder.ID).Select(f => f.ID).ToList()); if (FolderDao.GetItemsCount(folder.ID, true) == 0) { FolderDao.DeleteFolder(folder.ID); ProcessedFolder(folderId); } else { Error = FilesCommonResource.ErrorMassage_SecurityException_DeleteEditingFolder; } } else { FolderDao.DeleteFolder(folder.ID); ProcessedFolder(folderId); } } } ProgressStep(); } }
private void DeleteFolders(List <object> folderIds) { if (folderIds.Count == 0) { return; } foreach (var folderId in folderIds) { if (Canceled) { return; } var folder = FolderDao.GetFolder(folderId); if (folder == null) { Error = FilesCommonResource.ErrorMassage_FolderNotFound; } else if (!ignoreException && !FilesSecurity.CanDelete(folder)) { Error = FilesCommonResource.ErrorMassage_SecurityException_DeleteFolder; } else { FileMarker.RemoveMarkAsNewForAll(folder); if (FolderDao.UseTrashForRemove(folder)) { var files = FolderDao.GetFiles(folder.ID, true); if (!ignoreException && files.Exists(fid => ((new File { ID = fid, FileStatus = FileStatus.None }).FileStatus & FileStatus.IsEditing) == FileStatus.IsEditing)) { Error = FilesCommonResource.ErrorMassage_SecurityException_DeleteEditingFolder; } else { FolderDao.MoveFolder(folder.ID, _trashId); ProcessedFolder(folderId); } } else { if (FolderDao.UseRecursiveOperation(folder.ID, null)) { DeleteFiles(FolderDao.GetFiles(folder.ID, false)); DeleteFolders(FolderDao.GetFolders(folder.ID).Select(f => f.ID).ToList()); if (FolderDao.GetItemsCount(folder.ID, true) == 0) { FolderDao.DeleteFolder(folder.ID); ProcessedFolder(folderId); } } else { if (folder.ProviderEntry && folder.ID.Equals(folder.RootFolderId)) { ProviderDao.RemoveProviderInfo(folder.ProviderId); } else { FolderDao.DeleteFolder(folder.ID); } ProcessedFolder(folderId); } } } ProgressStep(); } }