public List <DiskInfo> GetPathDirectoriesAndFiles(string path, string orderBy, int skip, int take, out int count, bool byFile = true, string searchPatern = "*", bool allDirectories = false, bool createThumbnail = false)
        {
            path = AuthorizeManager.AuthorizeActionOnPath(path.Replace(Config.UrlDelimeter, Helper.RootUrl), ActionKey.ReadFromDisk);

            var diskInfos    = new List <DiskInfo>();
            var searchOption = allDirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
            var directories  = _fileSystemManager.GetDirectories(path, searchPatern, searchOption);
            var files        = _fileSystemManager.GetFiles(path, searchPatern, searchOption);
            var id           = 0;

            foreach (var directory in directories)
            {
                diskInfos.Add(new DiskInfo()
                {
                    Id                   = ++id,
                    Name                 = directory.Name,
                    IsFolder             = true,
                    ModifieDateTime      = directory.LastWriteTimeUtc,
                    ModifieLocalDateTime = LanguageManager.ToLocalDateTime(directory.LastWriteTimeUtc)
                });
            }
            var rootPath = HostingEnvironment.ApplicationHost.GetPhysicalPath();

            if (byFile)
            {
                foreach (var file in files)
                {
                    diskInfos.Add(new DiskInfo()
                    {
                        Id                   = ++id,
                        Name                 = file.Name,
                        FileType             = _fileSystemManager.FileExtensionToFileType(file.Extension),
                        FullName             = file.FullName,
                        ModifieDateTime      = file.LastWriteTimeUtc,
                        Size                 = file.Length,
                        ModifieLocalDateTime = LanguageManager.ToLocalDateTime(file.LastWriteTimeUtc)
                    });
                }
            }
            count = diskInfos.Count();
            var fileAndFolders = diskInfos.AsQueryable().OrderBy(orderBy)
                                 .Skip(skip)
                                 .Take(take).ToList();

            if (createThumbnail)
            {
                var t = new Thread(tr => CreateThumbnail(fileAndFolders.Where(fl => fl.IsFolder == false && fl.FileType == 1).ToList()));
                t.Start();
            }

            return(fileAndFolders);
        }