using System; using System.Collections.Generic; using System.Linq; using AaxDecrypter; using DataLayer; using LibationFileManager; using LibationFileManager.Templates; namespace FileLiberator { public static class AudioFileStorageExt { /// /// DownloadDecryptBook: /// File path for where to move files into. /// Path: directory nested inside of Books directory /// File name: n/a /// public static string GetDestinationDirectory(this AudioFileStorage _, LibraryBook libraryBook) { if (libraryBook.Book.IsEpisodeChild() && Configuration.Instance.SavePodcastsToParentFolder) { var series = libraryBook.Book.SeriesLink.SingleOrDefault(); if (series is not null) { using var context = ApplicationServices.DbContexts.GetContext(); var seriesParent = context.GetLibraryBook_Flat_NoTracking(series.Series.AudibleSeriesId); if (seriesParent is not null) { return Templates.Folder.GetFilename(seriesParent.ToDto(), AudibleFileStorage.BooksDirectory, ""); } } } return Templates.Folder.GetFilename(libraryBook.ToDto(), AudibleFileStorage.BooksDirectory, ""); } /// /// PDF: audio file does not exist /// public static string GetBooksDirectoryFilename(this AudioFileStorage _, LibraryBook libraryBook, string extension, bool returnFirstExisting = false) => Templates.File.GetFilename(libraryBook.ToDto(), AudibleFileStorage.BooksDirectory, extension, returnFirstExisting: returnFirstExisting); /// /// PDF: audio file already exists /// public static string GetCustomDirFilename(this AudioFileStorage _, LibraryBook libraryBook, string dirFullPath, string extension, MultiConvertFileProperties partProperties = null, bool returnFirstExisting = false) => partProperties is null ? Templates.File.GetFilename(libraryBook.ToDto(), dirFullPath, extension, returnFirstExisting: returnFirstExisting) : Templates.ChapterFile.GetFilename(libraryBook.ToDto(), partProperties, dirFullPath, extension, returnFirstExisting: returnFirstExisting); } }