public async Task RescanDirectoriesLoadFiles(Guid?parentFolderDirectoryFileID, string path, FolderDirectory folderDir)
        {
            var physicalDirectories = Directory.GetDirectories(path);

            foreach (var directory in physicalDirectories)
            {
                DirectoryInfo info = new DirectoryInfo(directory);

                var dirFile = new FolderDirectoryFile()
                {
                    FileExtention               = "",
                    FileName                    = info.Name,
                    FolderDirectoryFileID       = Guid.NewGuid(),
                    FolderDirectoryID           = folderDir.FolderDirectoryID,
                    FullPath                    = info.FullName,
                    CreatedDate                 = info.CreationTime,
                    IsDirectory                 = true,
                    ParentFolderDirectoryFileID = parentFolderDirectoryFileID
                };

                _context.Add(dirFile);

                await _context.SaveChangesAsync();

                await RescanDirectoriesLoadFiles(dirFile.FolderDirectoryFileID, info.FullName, folderDir);
            }

            var fileScan = Directory.GetFiles(path, "", SearchOption.TopDirectoryOnly);

            foreach (var file in fileScan)
            {
                FileInfo info = new FileInfo(file);

                var dirFile = new FolderDirectoryFile()
                {
                    FileExtention         = info.Extension,
                    FileName              = info.Name,
                    FolderDirectoryFileID = Guid.NewGuid(),
                    FolderDirectoryID     = folderDir.FolderDirectoryID,
                    FullPath              = info.FullName,
                    SizeMB      = (Convert.ToDouble(info.Length) / 1024.00 / 1024.00).ToString("0.00"),
                    CreatedDate = info.CreationTime,
                    IsDirectory = false,
                    ParentFolderDirectoryFileID = parentFolderDirectoryFileID
                };

                var    provider = new FileExtensionContentTypeProvider();
                string contentType;
                if (!provider.TryGetContentType(info.FullName, out contentType))
                {
                    contentType = "application/octet-stream";
                }

                dirFile.FileType = contentType;

                _context.Add(dirFile);

                await _context.SaveChangesAsync();
            }
        }
Exemple #2
0
        internal async Task AddNewFolder(string newFolderName, Guid folderID, Guid?parentFolderDirectoryFileID)
        {
            UserHelperFunctions userHelper = new UserHelperFunctions()
            {
                _context         = _context,
                _emailService    = _emailService,
                _securityOptions = _securityOptions,
                _user            = _user
            };

            userHelper.Populate();

            var folder = _context.FolderUsers.FirstOrDefault(x => x.FolderID == folderID);

            if (folder != null)
            {
                var parentFolder = _context.FolderDirectoryFiles.Include(x => x.FolderDirectory).FirstOrDefault(x => x.FolderDirectoryFileID == parentFolderDirectoryFileID);
                if (parentFolder != null)
                {
                    var dirFile = new FolderDirectoryFile()
                    {
                        FileExtention               = "",
                        FileName                    = newFolderName,
                        FolderDirectoryFileID       = Guid.NewGuid(),
                        FolderDirectoryID           = parentFolder.FolderDirectoryID,
                        FullPath                    = Path.Combine(parentFolder.FullPath, newFolderName),
                        CreatedDate                 = DateTime.UtcNow,
                        IsDirectory                 = true,
                        ParentFolderDirectoryFileID = parentFolderDirectoryFileID
                    };

                    _context.Add(dirFile);

                    await _context.SaveChangesAsync();

                    if (Directory.Exists(Path.Combine(parentFolder.FullPath, newFolderName)) == false)
                    {
                        Directory.CreateDirectory(Path.Combine(parentFolder.FullPath, newFolderName));
                    }
                }
            }
        }