/********************************************************************************************************/ /******************************PRIVATE*HELPER*METHODS****************************************************/ /********************************************************************************************************/ private User NewTTL(User user, RootObjectTopTracks rootObject, TimeFrame timeFrame) { var items = rootObject.items; var i = 1; var topTrackList = new TopTrackList(); topTrackList.Tracks = new List <Track>(); foreach (Item item in items) { var artists = new List <Artist>(); CreateTrackWithArtists(item, artists, i, topTrackList); i++; } topTrackList.User = user; topTrackList.TimeFrame = timeFrame; topTrackList.LastUpdated = DateTime.Now; topTrackList.LastChanged = DateTime.Now; _billboardDbContext.SaveChanges(); return(user); }
private User UpdateTTL(TopTrackList topTrackList, User user, RootObjectTopTracks rootObject, TimeFrame timeFrame) { var oldTracks = _billboardDbContext.Tracks.Where(t => t.TopTrackList.TopTrackListId == topTrackList.TopTrackListId).ToList(); var items = rootObject.items; var i = 1; bool changed = false; foreach (Item item in items) { var existingTrack = oldTracks.FirstOrDefault(t => t.SpotifyTrackId == item.id); if (existingTrack != null) { changed = UpdateExistingTrack(i, existingTrack) || changed; i++; _billboardDbContext.SaveChanges(); oldTracks.Remove(existingTrack); continue; } var artists = new List <Artist>(); CreateTrackWithArtists(item, artists, i, topTrackList); i++; } // tracks no longer in chart get position 0, but are not deleted because they may return foreach (Track remainingTrack in oldTracks) { remainingTrack.Position = 0; } topTrackList.LastUpdated = DateTime.Now; if (changed) { topTrackList.LastChanged = DateTime.Now; } _billboardDbContext.SaveChanges(); return(user); }