public IEnumerable <FileSystemItem> GetItems(FileSystemLoadItemOptions options) { int parentId = ParseKey(options.Directory.Key); var fileItems = GetDirectoryContents(parentId); var hasSubDirectoriesInfo = GetHasSubDirectoriesInfo(fileItems); var clientItemList = new List <FileSystemItem>(); foreach (var item in fileItems) { var clientItem = new FileSystemItem { Key = item.Id.ToString(), Name = item.Name, IsDirectory = item.IsDirectory, DateModified = item.Modified }; if (item.IsDirectory) { clientItem.HasSubDirectories = hasSubDirectoriesInfo.ContainsKey(item.Id) && hasSubDirectoriesInfo[item.Id]; } clientItem.CustomFields["modifiedBy"] = item.ModifiedBy.FullName; clientItem.CustomFields["created"] = item.Created; clientItemList.Add(clientItem); } return(clientItemList); }
public IEnumerable <FileSystemItem> GetItems(FileSystemLoadItemOptions options) { int parentId = ParseKey(options.Directory.Key); var fileItems = GetDirectoryContents(parentId); var clientItemList = new List <FileSystemItem>(); foreach (var item in fileItems) { var clientItem = new FileSystemItem { Key = item.Id.ToString(), Name = item.Name, IsDirectory = item.IsDirectory, DateModified = item.Modified }; if (item.IsDirectory) { clientItem.HasSubDirectories = FileManagementDbContext.FileItems.Where(i => i.ParentId == item.Id && i.IsDirectory).Any(); } clientItem.CustomFields["modifiedBy"] = item.ModifiedBy != null ? item.ModifiedBy.FullName : ""; clientItem.CustomFields["created"] = item.Created; clientItemList.Add(clientItem); } return(clientItemList); }
public IEnumerable <FileSystemItem> GetItems(FileSystemLoadItemOptions options) { var result = new List <FileSystemItem>(); BlobContinuationToken continuationToken = null; string dirKey = GetFileItemPath(options.Directory); if (!string.IsNullOrEmpty(dirKey)) { dirKey = dirKey + "/"; } CloudBlobDirectory dir = Container.GetDirectoryReference(dirKey); do { BlobResultSegment segmentResult = dir.ListBlobsSegmented(continuationToken); continuationToken = segmentResult.ContinuationToken; foreach (IListBlobItem blob in segmentResult.Results) { var item = new FileSystemItem(); string name = GetFileItemName(blob); if (name == EmptyDirectoryDummyBlobName) { continue; } if (blob is CloudBlob) { var blockBlob = (CloudBlob)blob; item.Name = name; item.DateModified = blockBlob.Properties.LastModified.GetValueOrDefault().DateTime; item.Size = blockBlob.Properties.Length; } else if (blob is CloudBlobDirectory) { var subDir = (CloudBlobDirectory)blob; item.Name = name.Substring(0, name.Length - 1); item.IsDirectory = true; item.HasSubDirectories = GetHasDirectories(subDir); item.DateModified = DateTime.UtcNow; } else { throw new Exception("Unsupported blob type"); } result.Add(item); } } while(continuationToken != null); return(result.OrderByDescending(item => item.IsDirectory) .ThenBy(item => item.Name) .ToList()); }