public virtual void DeleteDirectory(string path)
        {
            logger.Trace("Attempting to send '{0}' to recycling bin", path);
            var recyclingBin = _configProvider.RecycleBin;

            if (String.IsNullOrWhiteSpace(recyclingBin))
            {
                logger.Info("Recycling Bin has not been configured, deleting permanently. {0}", path);
                _diskProvider.DeleteFolder(path, true);
                logger.Trace("Folder has been permanently deleted: {0}", path);
            }

            else
            {
                var destination = Path.Combine(recyclingBin, new DirectoryInfo(path).Name);

                logger.Trace("Moving '{0}' to '{1}'", path, destination);
                _diskProvider.MoveDirectory(path, destination);

                logger.Trace("Setting last accessed: {0}", path);
                _diskProvider.DirectorySetLastWriteTimeUtc(destination, DateTime.UtcNow);
                foreach (var file in _diskProvider.GetFiles(destination, SearchOption.AllDirectories))
                {
                    _diskProvider.FileSetLastWriteTimeUtc(file, DateTime.UtcNow);
                }

                logger.Trace("Folder has been moved to the recycling bin: {0}", destination);
            }
        }
        public virtual List <string> GetVideoFiles(string path, bool allDirectories = true)
        {
            Logger.Debug("Scanning '{0}' for video files", path);

            var searchOption = allDirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
            var filesOnDisk  = _diskProvider.GetFiles(path, searchOption);

            var mediaFileList = filesOnDisk.Where(c => mediaExtentions.Contains(Path.GetExtension(c).ToLower())).ToList();

            Logger.Trace("{0} video files were found in {1}", mediaFileList.Count, path);
            return(mediaFileList);
        }
        public virtual Dictionary <DateTime, string> UpdateLogFile()
        {
            var         list     = new Dictionary <DateTime, string>();
            CultureInfo provider = CultureInfo.InvariantCulture;

            if (_diskProvider.FolderExists(_environmentProvider.GetUpdateLogFolder()))
            {
                var files = _diskProvider.GetFiles(_environmentProvider.GetUpdateLogFolder(), SearchOption.TopDirectoryOnly).ToList();

                foreach (var file in files.Select(c => new FileInfo(c)).OrderByDescending(c => c.Name))
                {
                    list.Add(DateTime.ParseExact(file.Name.Replace(file.Extension, string.Empty), "yyyy.MM.dd-H-mm", provider), file.FullName);
                }
            }

            return(list);
        }