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); } }
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); } } } }