private void UpdateRatings(MediaDataSet.TracksRow track, MediaDataSet.AlbumsRow album, MediaDataSet.ArtistsRow artist, MediaDataSet.GenresRow genre, RatingDelta delta) { track.Rating = UpdateRating(track.Rating, delta.Track); album.Rating = UpdateRating(album.Rating, delta.Album); artist.Rating = UpdateRating(artist.Rating, delta.Artist); genre.Rating = UpdateRating(genre.Rating, delta.Genre); }
/// <summary> /// Track event handler /// </summary> /// <param name="p_artist">Artist</param> /// <param name="p_album">Album</param> /// <param name="p_name">Name</param> /// <param name="p_duration">Duration</param> /// <param name="p_genre">Genre</param> /// <param name="p_trackID">TrackID</param> /// <param name="p_delta">Delta values</param> private void TrackEvent(String p_artist, String p_album, String p_name, int p_duration, String p_genre, String p_trackID, RatingDelta p_delta) { try { if (Parameters.IgnoreWhenLocked) { lock (sessionLock) { if (isLocked) return; } } if (p_artist == null) { p_artist = String.Empty; } if (p_album == null) { p_album = String.Empty; } if (p_name == null) { p_name = String.Empty; } if (p_genre == null) { p_genre = String.Empty; } bool newInfo = false; MediaDataSet.ArtistsRow artist = ds.Artists.SingleOrDefault(s => (s.Name.Equals(p_artist.Trim()))); if (artist == null) { artist = ds.Artists.NewArtistsRow(); artist.Name = p_artist.Trim(); artist.Rating = 0; ds.Artists.AddArtistsRow(artist); newInfo = true; } MediaDataSet.GenresRow genre = ds.Genres.SingleOrDefault(s => (s.Name.Equals(p_genre.Trim()))); if (genre == null) { genre = ds.Genres.NewGenresRow(); genre.Name = p_genre.Trim(); genre.Rating = 0; ds.Genres.AddGenresRow(genre); newInfo = true; } MediaDataSet.AlbumsRow album = ds.Albums.SingleOrDefault(s => ((s.Name.Equals(p_album.Trim())) && (s.ArtistID == artist.ID))); if (album == null) { album = ds.Albums.NewAlbumsRow(); album.Name = p_album.Trim(); album.ArtistsRow = artist; album.Rating = 0; ds.Albums.AddAlbumsRow(album); newInfo = true; } MediaDataSet.TracksRow track = null; if (!newInfo) { // trying to lookup track in database track = ds.Tracks.SingleOrDefault(s => ((s.Name.Equals(p_name.Trim())) && (s.ArtistID == artist.ID) && (s.AlbumID == album.ID) && (s.GenreID == genre.ID))); if (track == null) { newInfo = true; } } if (newInfo) { track = ds.Tracks.NewTracksRow(); track.Name = p_name.Trim(); track.Duration = p_duration; track.TrackID = p_trackID; track.AlbumsRow = album; track.ArtistsRow = artist; track.GenresRow = genre; track.Rating = 0; ds.Tracks.AddTracksRow(track); } this.UpdateRatings(track, album, artist, genre, p_delta); ds.AcceptChanges(); } catch (Exception e) { Log.Write(e); } }