public RootFolder Add(RootFolder rootFolder) { var all = All(); if (String.IsNullOrWhiteSpace(rootFolder.Path) || !Path.IsPathRooted(rootFolder.Path)) { throw new ArgumentException("Invalid path"); } if (!_diskProvider.FolderExists(rootFolder.Path)) { throw new DirectoryNotFoundException("Can't add root directory that doesn't exist."); } if (all.Exists(r => r.Path.PathEquals(rootFolder.Path))) { throw new InvalidOperationException("Recent directory already exists."); } if (_configService.DownloadedEpisodesFolder.IsNotNullOrWhiteSpace() && _configService.DownloadedEpisodesFolder.PathEquals(rootFolder.Path)) { throw new InvalidOperationException("Drone Factory folder cannot be used."); } if (!_diskProvider.FolderWritable(rootFolder.Path)) { throw new UnauthorizedAccessException(String.Format("Root folder path '{0}' is not writable by user '{1}'", rootFolder.Path, Environment.UserName)); } _rootFolderRepository.Insert(rootFolder); rootFolder.FreeSpace = _diskProvider.GetAvailableSpace(rootFolder.Path); rootFolder.UnmappedFolders = GetUnmappedFolders(rootFolder.Path); return rootFolder; }
public RootFolder Add(RootFolder rootFolder) { var all = All(); if (String.IsNullOrWhiteSpace(rootFolder.Path) || !Path.IsPathRooted(rootFolder.Path)) throw new ArgumentException("Invalid path"); if (!_diskProvider.FolderExists(rootFolder.Path)) throw new DirectoryNotFoundException("Can't add root directory that doesn't exist."); if (all.Exists(r => r.Path.PathEquals(rootFolder.Path))) throw new InvalidOperationException("Recent directory already exists."); if (!String.IsNullOrWhiteSpace(_configService.DownloadedEpisodesFolder) && _configService.DownloadedEpisodesFolder.PathEquals(rootFolder.Path)) throw new InvalidOperationException("Drone Factory folder cannot be used."); _rootFolderRepository.Insert(rootFolder); rootFolder.FreeSpace = _diskProvider.GetAvailableSpace(rootFolder.Path); rootFolder.UnmappedFolders = GetUnmappedFolders(rootFolder.Path); return rootFolder; }