/// <summary> /// Get all the release groups for an episode for which the user is collecting /// </summary> /// <param name="aniDBEpisodeID"></param> /// <returns></returns> public List<Contract_AniDBReleaseGroup> GetMyReleaseGroupsForAniDBEpisode(int aniDBEpisodeID) { DateTime start = DateTime.Now; List<Contract_AniDBReleaseGroup> relGroups = new List<Contract_AniDBReleaseGroup>(); try { AniDB_EpisodeRepository repAniEps = new AniDB_EpisodeRepository(); AniDB_Episode aniEp = repAniEps.GetByEpisodeID(aniDBEpisodeID); if (aniEp == null) return relGroups; if (aniEp.EpisodeTypeEnum != AniDBAPI.enEpisodeType.Episode) return relGroups; AnimeSeriesRepository repSeries = new AnimeSeriesRepository(); AnimeSeries series = repSeries.GetByAnimeID(aniEp.AnimeID); if (series == null) return relGroups; // get a list of all the release groups the user is collecting Dictionary<int, int> userReleaseGroups = new Dictionary<int, int>(); foreach (AnimeEpisode ep in series.GetAnimeEpisodes()) { List<VideoLocal> vids = ep.GetVideoLocals(); foreach (VideoLocal vid in vids) { AniDB_File anifile = vid.GetAniDBFile(); if (anifile != null) { if (!userReleaseGroups.ContainsKey(anifile.GroupID)) userReleaseGroups[anifile.GroupID] = 0; userReleaseGroups[anifile.GroupID] = userReleaseGroups[anifile.GroupID] + 1; } } } // get all the release groups for this series AniDB_GroupStatusRepository repGrpStatus = new AniDB_GroupStatusRepository(); List<AniDB_GroupStatus> grpStatuses = repGrpStatus.GetByAnimeID(aniEp.AnimeID); foreach (AniDB_GroupStatus gs in grpStatuses) { if (userReleaseGroups.ContainsKey(gs.GroupID)) { if (gs.HasGroupReleasedEpisode(aniEp.EpisodeNumber)) { Contract_AniDBReleaseGroup contract = new Contract_AniDBReleaseGroup(); contract.GroupID = gs.GroupID; contract.GroupName = gs.GroupName; contract.UserCollecting = true; contract.EpisodeRange = gs.EpisodeRange; contract.FileCount = userReleaseGroups[gs.GroupID]; relGroups.Add(contract); } } } TimeSpan ts = DateTime.Now - start; logger.Info("GetMyReleaseGroupsForAniDBEpisode in {0} ms", ts.TotalMilliseconds); } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); } return relGroups; }
public List<Contract_AniDBReleaseGroup> GetReleaseGroupsForAnime(int animeID) { List<Contract_AniDBReleaseGroup> relGroups = new List<Contract_AniDBReleaseGroup>(); try { AnimeSeriesRepository repSeries = new AnimeSeriesRepository(); AnimeSeries series = repSeries.GetByAnimeID(animeID); if (series == null) return relGroups; // get a list of all the release groups the user is collecting //List<int> userReleaseGroups = new List<int>(); Dictionary<int, int> userReleaseGroups = new Dictionary<int, int>(); foreach (AnimeEpisode ep in series.GetAnimeEpisodes()) { List<VideoLocal> vids = ep.GetVideoLocals(); foreach (VideoLocal vid in vids) { AniDB_File anifile = vid.GetAniDBFile(); if (anifile != null) { if (!userReleaseGroups.ContainsKey(anifile.GroupID)) userReleaseGroups[anifile.GroupID] = 0; userReleaseGroups[anifile.GroupID] = userReleaseGroups[anifile.GroupID] + 1; } } } // get all the release groups for this series AniDB_GroupStatusRepository repGrpStatus = new AniDB_GroupStatusRepository(); List<AniDB_GroupStatus> grpStatuses = repGrpStatus.GetByAnimeID(animeID); foreach (AniDB_GroupStatus gs in grpStatuses) { Contract_AniDBReleaseGroup contract = new Contract_AniDBReleaseGroup(); contract.GroupID = gs.GroupID; contract.GroupName = gs.GroupName; contract.EpisodeRange = gs.EpisodeRange; if (userReleaseGroups.ContainsKey(gs.GroupID)) { contract.UserCollecting = true; contract.FileCount = userReleaseGroups[gs.GroupID]; } else { contract.UserCollecting = false; contract.FileCount = 0; } relGroups.Add(contract); } } catch (Exception ex) { logger.ErrorException(ex.ToString(), ex); } return relGroups; }
public List<Contract_AniDBReleaseGroup> GetReleaseGroupsForAnime(int animeID) { List<Contract_AniDBReleaseGroup> relGroups = new List<Contract_AniDBReleaseGroup>(); try { AnimeSeries series = RepoFactory.AnimeSeries.GetByAnimeID(animeID); if (series == null) return relGroups; // get a list of all the release groups the user is collecting //List<int> userReleaseGroups = new List<int>(); Dictionary<int, int> userReleaseGroups = new Dictionary<int, int>(); foreach (AnimeEpisode ep in series.GetAnimeEpisodes()) { List<VideoLocal> vids = ep.GetVideoLocals(); List<string> hashes = vids.Where(a => !string.IsNullOrEmpty(a.Hash)).Select(a => a.Hash).ToList(); foreach(string h in hashes) { VideoLocal vid = vids.First(a => a.Hash == h); AniDB_File anifile = vid.GetAniDBFile(); if (anifile != null) { if (!userReleaseGroups.ContainsKey(anifile.GroupID)) userReleaseGroups[anifile.GroupID] = 0; userReleaseGroups[anifile.GroupID] = userReleaseGroups[anifile.GroupID] + 1; } } } // get all the release groups for this series List<AniDB_GroupStatus> grpStatuses = RepoFactory.AniDB_GroupStatus.GetByAnimeID(animeID); foreach (AniDB_GroupStatus gs in grpStatuses) { Contract_AniDBReleaseGroup contract = new Contract_AniDBReleaseGroup(); contract.GroupID = gs.GroupID; contract.GroupName = gs.GroupName; contract.EpisodeRange = gs.EpisodeRange; if (userReleaseGroups.ContainsKey(gs.GroupID)) { contract.UserCollecting = true; contract.FileCount = userReleaseGroups[gs.GroupID]; } else { contract.UserCollecting = false; contract.FileCount = 0; } relGroups.Add(contract); } } catch (Exception ex) { logger.Error( ex,ex.ToString()); } return relGroups; }