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);
        }
Beispiel #2
0
        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);
        }