using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Model.Dto; using System; using System.Collections.Generic; namespace MediaBrowser.Server.Implementations.Library.Validators { /// /// Class CountHelpers /// internal static class CountHelpers { private static CountType? GetCountType(BaseItem item) { if (item is Movie) { return CountType.Movie; } if (item is Episode) { return CountType.Episode; } if (item is Game) { return CountType.Game; } if (item is Audio) { return CountType.Song; } if (item is Trailer) { return CountType.Trailer; } if (item is Series) { return CountType.Series; } if (item is MusicAlbum) { return CountType.MusicAlbum; } if (item is MusicVideo) { return CountType.MusicVideo; } if (item is AdultVideo) { return CountType.AdultVideo; } return null; } /// /// Increments the count. /// /// The counts. /// The key. internal static void IncrementCount(Dictionary counts, CountType key) { int count; if (counts.TryGetValue(key, out count)) { count++; counts[key] = count; } else { counts.Add(key, 1); } } /// /// Gets the counts. /// /// The counts. /// ItemByNameCounts. internal static ItemByNameCounts GetCounts(Dictionary counts) { return new ItemByNameCounts { AdultVideoCount = GetCount(counts, CountType.AdultVideo), AlbumCount = GetCount(counts, CountType.MusicAlbum), EpisodeCount = GetCount(counts, CountType.Episode), GameCount = GetCount(counts, CountType.Game), MovieCount = GetCount(counts, CountType.Movie), MusicVideoCount = GetCount(counts, CountType.MusicVideo), SeriesCount = GetCount(counts, CountType.Series), SongCount = GetCount(counts, CountType.Song), TrailerCount = GetCount(counts, CountType.Trailer), TotalCount = GetCount(counts, CountType.Total) }; } /// /// Gets the count. /// /// The counts. /// The key. /// System.Int32. internal static int GetCount(Dictionary counts, CountType key) { int count; if (counts.TryGetValue(key, out count)) { return count; } return 0; } /// /// Sets the item counts. /// /// The user id. /// The media. /// The names. /// The master dictionary. internal static void SetItemCounts(Guid userId, BaseItem media, IEnumerable names, Dictionary>> masterDictionary) { var countType = GetCountType(media); foreach (var name in names) { Dictionary> libraryCounts; if (!masterDictionary.TryGetValue(name, out libraryCounts)) { libraryCounts = new Dictionary>(); masterDictionary.Add(name, libraryCounts); } var userLibId = userId/* ?? Guid.Empty*/; Dictionary userDictionary; if (!libraryCounts.TryGetValue(userLibId, out userDictionary)) { userDictionary = new Dictionary(); libraryCounts.Add(userLibId, userDictionary); } if (countType.HasValue) { IncrementCount(userDictionary, countType.Value); } IncrementCount(userDictionary, CountType.Total); } } } internal enum CountType { AdultVideo, MusicAlbum, Episode, Game, Movie, MusicVideo, Series, Song, Trailer, Total } }