コード例 #1
0
        /********************************************************************************************************/
        /******************************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);
        }
コード例 #2
0
        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);
        }