private FsItemMtbl GetFsItemMtbl(FileSystemInfo fsInfo) { var fsItemMtbl = new FsItemMtbl { Uuid = Guid.NewGuid(), Name = fsInfo.Name, Path = fsInfo.FullName, IsDirectory = fsInfo is DirectoryInfo, CreationTime = fsInfo.CreationTime, CreationTimeStr = TimeStampHelper.TmStmp(fsInfo.CreationTime, true, TimeStamp.Seconds), LastAccessTime = fsInfo.LastAccessTime, LastAccessTimeStr = TimeStampHelper.TmStmp(fsInfo.LastAccessTime, true, TimeStamp.Seconds), LastWriteTime = fsInfo.LastWriteTime, LastWriteTimeStr = TimeStampHelper.TmStmp(fsInfo.LastWriteTime, true, TimeStamp.Seconds) }; if (!fsItemMtbl.IsDirectory) { fsItemMtbl.FileNameWithoutExtension = Path.GetFileNameWithoutExtension(fsItemMtbl.Name); fsItemMtbl.FileNameExtension = Path.GetExtension(fsItemMtbl.Name); fsItemMtbl.Label = fsItemMtbl.FileNameExtension; } return(fsItemMtbl); }
private async Task <TrmrkActionResult <DriveItemOp> > CreateMultipleEntriesAsync( string parentFolderId, List <Tuple <Func <string[], int, string, string>, string, Action <string> > > fileNameFactoriesList) { var actionResult = await ExecuteCoreAsync(async() => { var factoriesList = fileNameFactoriesList.Select( tuple => new Tuple <Func <string[], int, string, string>, string, Func <string, int, Task <DriveItemOp> > >( tuple.Item1, tuple.Item2, async(name, idx) => { string path = Path.Combine(parentFolderId, name); tuple.Item3(path); DateTime now = DateTime.Now; string nowStr = TimeStampHelper.TmStmp(now, true, TimeStamp.Seconds); return(new DriveItemOp { Id = path, Name = name, FileNameExtension = Path.GetExtension(name), CreationTimeStr = nowStr, LastAccessTimeStr = nowStr, LastWriteTimeStr = nowStr }); })).ToList(); var parentDirInfo = new DirectoryInfo(parentFolderId); var existingEntriesArr = parentDirInfo.EnumerateFileSystemInfos() .Select(ent => ent.Name).ToArray(); var result = await base.CreateMultipleEntriesAsync( existingEntriesArr, factoriesList); return(new TrmrkActionResult <DriveItemOp>(true, result)); }, exc => DriveItemDefaultExceptionHandler(exc).WithHelper( result => new TrmrkActionResult <DriveItemOp>( false, null, result.ErrorViewModel, result.HttpStatusCode))); return(actionResult); }