public void Unsubscribe(ApplicationUser user, Show show) { if (!user.Shows.Contains(show)) { throw new InvalidOperationException("The user is not subscribed to that show."); } user.Shows.Remove(show); show.Subscribers.Remove(user); this.Shows.SaveChanges(); }
public void Subscribe(ApplicationUser user, Show show) { if (user.Shows.Contains(show)) { throw new InvalidOperationException("The user is already subscribed to tha show."); } user.Shows.Add(show); show.Subscribers.Add(user); this.Shows.SaveChanges(); }
public Show AddShow(int id) { TVDBSharp.Models.Show fetchedShow = this.TvdbConnection.GetShow(id); Show show = new Show(); this.MapShow(show, fetchedShow); this.Shows.Add(show); this.Shows.SaveChanges(); CalculateLastAndNextEpisodes(show); this.Shows.SaveChanges(); return show; }
public void UpdateShow(Show show) { TVDBSharp.Models.Show fetchedShow = this.TvdbConnection.GetShow(show.TvDbId); this.MapShow(show, fetchedShow); this.Shows.Update(show); this.Shows.SaveChanges(); CalculateLastAndNextEpisodes(show); this.Shows.SaveChanges(); }
private void MapShow(Show show, TVDBSharp.Models.Show fetchedShow) { show.AirTime = fetchedShow.AirTime; show.Runtime = fetchedShow.Runtime; show.Description = GetDescription(fetchedShow.Description); show.Network = this.GetOrCreateNetwork(fetchedShow.Network); show.TvDbId = fetchedShow.Id; show.ImdbId = fetchedShow.ImdbId; show.Language = GetLanguage(fetchedShow.Language); show.AirDay = GetAirDay(fetchedShow.AirDay); show.FirstAired = fetchedShow.FirstAired; this.AddGenres(show.Genres, fetchedShow.Genres); show.LastUpdated = fetchedShow.LastUpdated; show.Name = fetchedShow.Name; show.Status = GetStatus(fetchedShow.Status); show.BannerBig = this.GetImage("big_", fetchedShow.Banner, this.AppSettings.BannerDirectory); show.PosterBig = this.GetImage("big_", fetchedShow.Poster, this.AppSettings.PosterDirectory); show.UserFriendlyId = GetUserFriendlyId(fetchedShow.Name); show.Network.Shows.Add(show); SetSeasons(show, fetchedShow); }
private static void SetSeasons(Show show, TVDBSharp.Models.Show fetchedShow) { ICollection<Season> seasons = show.Seasons; foreach (TVDBSharp.Models.Episode episodeModel in fetchedShow.Episodes) { int seasonNumber = episodeModel.SeasonNumber; Season season = seasons.FirstOrDefault(s => s.Number == seasonNumber); if (season == null) { season = new Season { Number = seasonNumber }; seasons.Add(season); } TVDBSharp.Models.Episode model = episodeModel; Episode episode = season.Episodes.FirstOrDefault(e => e.Number == model.EpisodeNumber); if (episode == null) { episode = new Episode(); } MapEpisode(episode, episodeModel); episode.Season = season; season.Episodes.Add(episode); show.Seasons.Add(season); season.Show = show; } }
private static void CalculateLastAndNextEpisodes(Show show) { IEnumerable<Episode> episodes = show.Seasons.SelectMany(season => season.Episodes); Episode lastEpisode = episodes.Where(episode => episode.FirstAired < DateTime.Now) .OrderByDescending(episode => episode.FirstAired) .FirstOrDefault(); Episode nextEpisode = episodes.Where(episode => episode.FirstAired > DateTime.Now).OrderBy(episode => episode.FirstAired).FirstOrDefault(); if (lastEpisode != null) { show.LastEpisodeId = lastEpisode.Id; } else { show.LastEpisodeId = null; } if (nextEpisode != null) { show.NextEpisodeId = nextEpisode.Id; } else { show.NextEpisodeId = null; } }