public IActionResult DeleteFolder(Guid folderId) { if (!UserHasRole(folderId, AccessLevel.Delete)) { return(BadRequest("Не достаточно уровня прав доступа!")); } var childFolders = _folderService.GetChildFolders(folderId); var emptyFolders = _folderRepo.Where(f => !_db.Set <UsersFolders>().Any(uf => uf.FolderId == f.Id)).Include(folder => folder.Files); foreach (var folder in childFolders) { _db.Set <File>().RemoveRange(folder.Files); _db.Set <UsersFolders>().RemoveRange(_db.Set <UsersFolders>().Where(uf => uf.FolderId == folder.Id)); } foreach (var folder in emptyFolders) { _db.Set <File>().RemoveRange(folder.Files); _db.Set <UsersFolders>().RemoveRange(_db.Set <UsersFolders>().Where(uf => uf.FolderId == folder.Id)); } _folderRepo.RemoveRange(childFolders); _folderRepo.RemoveRange(emptyFolders); _db.SaveChanges(); return(NoContent()); }
private IEnumerable <SelectListItem> GetFolders() { var folders = _folderService.GetChildFolders(Guid.Empty); return(folders.Select(folder => new SelectListItem { Text = folder.Name, Value = folder.SystemId.ToString() })); }
/// <summary> /// Exports the folders. /// </summary> /// <param name="structure"> The structure. </param> /// <param name="folder"> The folder. </param> protected virtual void ExportFolders(StructureInfo.MediaArchiveStructure structure, Folder folder, Guid visitorGroupId) { foreach (var item in _folderService.GetChildFolders(folder.SystemId)) { var clone = item.MakeWritableClone(); var visitorGroupPermissions = item.AccessControlList.Where(x => x.GroupSystemId == visitorGroupId); clone.AccessControlList = new HashSet <AccessControlEntry>(visitorGroupPermissions); structure.Folders.Add(clone); ExportFolders(structure, item, visitorGroupId); } ExportFiles(structure, folder); }
private Folder GetChildIfExists(string name, Folder parent) { var childFolders = _folderService.GetChildFolders(parent.SystemId); return(childFolders.FirstOrDefault(r => r.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase))); }