private IEnumerable <ITraktSyncRatingsPostShowSeason> CreateSyncRatingsPostShowSeasons(PostRatingsSeasons seasons) { var syncRatingsPostShowSeasons = new List <ITraktSyncRatingsPostShowSeason>(); foreach (PostRatingsSeason season in seasons) { var syncRatingsPostShowSeason = new TraktSyncRatingsPostShowSeason { Number = season.Number }; if (season.Rating.HasValue) { syncRatingsPostShowSeason.Rating = season.Rating.Value; } if (season.RatedAt.HasValue) { syncRatingsPostShowSeason.RatedAt = season.RatedAt.Value.ToUniversalTime(); } if (season.Episodes?.Count() > 0) { var syncRatingsPostShowEpisodes = new List <ITraktSyncRatingsPostShowEpisode>(); foreach (PostRatingsEpisode episode in season.Episodes) { var syncRatingsPostShowEpisode = new TraktSyncRatingsPostShowEpisode { Number = episode.Number }; if (episode.Rating.HasValue) { syncRatingsPostShowEpisode.Rating = episode.Rating.Value; } if (episode.RatedAt.HasValue) { syncRatingsPostShowEpisode.RatedAt = episode.RatedAt.Value.ToUniversalTime(); } syncRatingsPostShowEpisodes.Add(syncRatingsPostShowEpisode); } syncRatingsPostShowSeason.Episodes = syncRatingsPostShowEpisodes; } syncRatingsPostShowSeasons.Add(syncRatingsPostShowSeason); } return(syncRatingsPostShowSeasons); }
public override async Task <ITraktSyncRatingsPostShowSeason> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default) { CheckJsonTextReader(jsonReader); if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject) { var episodeArrayJsonReader = new ArrayJsonReader <ITraktSyncRatingsPostShowEpisode>(); ITraktSyncRatingsPostShowSeason syncRatingsPostShow = new TraktSyncRatingsPostShowSeason(); while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName) { var propertyName = jsonReader.Value.ToString(); switch (propertyName) { case JsonProperties.PROPERTY_NAME_RATED_AT: { Pair <bool, DateTime> value = await JsonReaderHelper.ReadDateTimeValueAsync(jsonReader, cancellationToken); if (value.First) { syncRatingsPostShow.RatedAt = value.Second; } break; } case JsonProperties.PROPERTY_NAME_RATING: syncRatingsPostShow.Rating = await jsonReader.ReadAsInt32Async(cancellationToken); break; case JsonProperties.PROPERTY_NAME_NUMBER: { Pair <bool, int> value = await JsonReaderHelper.ReadIntegerValueAsync(jsonReader, cancellationToken); if (value.First) { syncRatingsPostShow.Number = value.Second; } break; } case JsonProperties.PROPERTY_NAME_EPISODES: syncRatingsPostShow.Episodes = await episodeArrayJsonReader.ReadArrayAsync(jsonReader, cancellationToken); break; default: await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken); break; } } return(syncRatingsPostShow); } return(await Task.FromResult(default(ITraktSyncRatingsPostShowSeason))); }