using ErsatzTV.Core.Domain; using ErsatzTV.Core.Interfaces.Repositories; namespace ErsatzTV.Core.Scheduling; public static class MediaItemsForCollection { public static async Task> Collect( IMediaCollectionRepository mediaCollectionRepository, ITelevisionRepository televisionRepository, IArtistRepository artistRepository, CollectionKey collectionKey) { switch (collectionKey.CollectionType) { case ProgramScheduleItemCollectionType.Collection: List collectionItems = await mediaCollectionRepository.GetItems(collectionKey.CollectionId ?? 0); return collectionItems; case ProgramScheduleItemCollectionType.TelevisionShow: List showItems = await televisionRepository.GetShowItems(collectionKey.MediaItemId ?? 0); return showItems.Cast().ToList(); case ProgramScheduleItemCollectionType.TelevisionSeason: List seasonItems = await televisionRepository.GetSeasonItems(collectionKey.MediaItemId ?? 0); return seasonItems.Cast().ToList(); case ProgramScheduleItemCollectionType.Artist: List artistItems = await artistRepository.GetArtistItems(collectionKey.MediaItemId ?? 0); return artistItems.Cast().ToList(); case ProgramScheduleItemCollectionType.MultiCollection: List multiCollectionItems = await mediaCollectionRepository.GetMultiCollectionItems( collectionKey.MultiCollectionId ?? 0); return multiCollectionItems; case ProgramScheduleItemCollectionType.SmartCollection: List smartCollectionItems = await mediaCollectionRepository.GetSmartCollectionItems( collectionKey.SmartCollectionId ?? 0); return smartCollectionItems; default: return new List(); } } }