コード例 #1
0
        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());
        }
コード例 #2
0
        private IEnumerable <SelectListItem> GetFolders()
        {
            var folders = _folderService.GetChildFolders(Guid.Empty);

            return(folders.Select(folder => new SelectListItem
            {
                Text = folder.Name,
                Value = folder.SystemId.ToString()
            }));
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        private Folder GetChildIfExists(string name, Folder parent)
        {
            var childFolders = _folderService.GetChildFolders(parent.SystemId);

            return(childFolders.FirstOrDefault(r => r.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase)));
        }