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();
        }
Example #3
0
        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;
        }
Example #4
0
        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();
        }
Example #5
0
        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);
        }
Example #6
0
        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;
            }
        }
Example #7
0
        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;
            }
        }