예제 #1
0
        public void Merge(InternalSeries from)
        {
            if (from != null)
            {
                Guid = System.Guid.NewGuid().ToString();
                if (ExternalIds == null)
                {
                    ExternalIds = new Dictionary <string, string>();
                }

                ExternalIds = ExternalIds.Union(from.ExternalIds).ToDictionary(x => x.Key, y => y.Value);

                TvMazeId               = string.IsNullOrEmpty(from.TvMazeId) ? TvMazeId : from.TvMazeId;
                TmdbId                 = string.IsNullOrEmpty(from.TmdbId) ? TmdbId : from.TmdbId;
                EpisodeRunTime         = from.EpisodeRunTime ?? EpisodeRunTime;
                FirstAirDate           = string.IsNullOrEmpty(from.FirstAirDate) ? FirstAirDate : from.FirstAirDate;
                LastEpisodeSimpleToAir = from.LastEpisodeSimpleToAir ?? LastEpisodeSimpleToAir;
                CreatedBy              = from.CreatedBy ?? CreatedBy;
                Networks               = from.Networks ?? Networks;
                OriginalLanguage       = string.IsNullOrEmpty(from.OriginalLanguage) ? OriginalLanguage : from.OriginalLanguage;
                Popularity             = string.IsNullOrEmpty(from.Popularity) ? Popularity : from.Popularity;
                ProductionCompanies    = from.ProductionCompanies ?? ProductionCompanies;
                Rating                 = from.Rating ?? Rating;
                VoteCount              = from.VoteCount <= 0 ? VoteCount : from.VoteCount;
                Status                 = string.IsNullOrEmpty(from.Status) ? Status : from.Status;
                Year             = string.IsNullOrEmpty(from.Year) ? Year : from.Year;
                Type             = string.IsNullOrEmpty(from.Type) ? Type : from.Type;
                OriginalLanguage = string.IsNullOrEmpty(from.OriginalLanguage) ? OriginalLanguage : from.OriginalLanguage;
                TotalSeasons     = from.TotalSeasons <= 0 && from.TotalSeasons != TotalSeasons ? TotalSeasons : from.TotalSeasons;

                MergeGenreCategory();
                MergeSeasons(from);
            }
        }
예제 #2
0
        private void MergeSeasons(InternalSeries from)
        {
            foreach (var season in from.Seasons)
            {
                var matchingSeason = Seasons.FirstOrDefault(t => t.SeasonNumber == season.SeasonNumber);
                if (matchingSeason == null)
                {
                    Seasons.Add(season);
                }
                else
                {
                    matchingSeason.AirDate       = string.IsNullOrEmpty(matchingSeason.AirDate) ? season.AirDate : matchingSeason.AirDate;
                    matchingSeason.Name          = matchingSeason.Name ?? season.Name;
                    matchingSeason.Summary       = matchingSeason.Summary ?? season.Summary;
                    matchingSeason.EpisodesCount = matchingSeason.EpisodesCount == 0
                        ? season.EpisodesCount
                        : matchingSeason.EpisodesCount;

                    if (season.Episodes != null && season.Episodes.Count > 0 && matchingSeason.Episodes != null)
                    {
                        MergeEpisodes(matchingSeason, season);
                    }
                }
            }
        }