public SpotifyPlaylistChangeManager(SpotifyPlaylistChange[] oChanges) { this._Changes = oChanges; this._PlaylistNames = (from Change in this._Changes select Change.PlaylistName).Distinct().ToArray(); this._TrackNames = (from Change in this._Changes select Change.TrackName).Distinct().ToArray(); this._AddCount = (from Change in this._Changes where Change.ChangeType == 'A' select Change).ToArray().Length; this._MoveCount = (from Change in this._Changes where Change.ChangeType == 'M' select Change).ToArray().Length; this._DeleteCount = (from Change in this._Changes where Change.ChangeType == 'D' select Change).ToArray().Length; }
public static SpotifyPlaylistChange[] GetPlaylistChanges(long iUserID, DateTime dtStart, DateTime dtEnd) { List<SpotifyPlaylistChange> PlaylistChanges = new List<SpotifyPlaylistChange>(); DataSet ds = RelationalDatabase.ExecuteStoredProcedure("GetPlaylistChangesForUser" , new SqlParameter("iUserID", iUserID) , new SqlParameter("dtStart", dtStart) , new SqlParameter("dtEnd", dtEnd) ); List<SpotifyArtist> Artists = new List<SpotifyArtist>(); List<SpotifyTrackChange> TrackChanges = new List<SpotifyTrackChange>(); DataRow drLastRow = ds.Tables[0].NewRow(); bool bFirstTrack = true; string CurrentPlaylistGuid; //string NextPlaylistGuid; long CurrentPlaylistID; //long NextPlaylistID; string CurrentPlaylistName; //string CurrentPlaylistOwner; //string NextPlaylistName; for (int j = 0; j < ds.Tables[0].Rows.Count; j++) { DataRow drCurrentRow = ds.Tables[0].Rows[j]; if (!bFirstTrack) { if (drLastRow["TrackGuid"].ToString().Equals(drCurrentRow["TrackGuid"].ToString()) && drLastRow["PlaylistGuid"].ToString().Equals(drCurrentRow["PlaylistGuid"].ToString())) { long iLastArtistID = Convert.ToInt64(drLastRow["ArtistID"].ToString()); string sLastArtistName = drLastRow["ArtistName"].ToString(); string sLastArtistGuid = drLastRow["ArtistGuid"].ToString(); Artists.Add(new SpotifyArtist(iLastArtistID, sLastArtistGuid, sLastArtistName)); } else { long iLastArtistID = Convert.ToInt64(drLastRow["ArtistID"].ToString()); string sLastArtistName = drLastRow["ArtistName"].ToString(); string sLastArtistGuid = drLastRow["ArtistGuid"].ToString(); Artists.Add(new SpotifyArtist(iLastArtistID, sLastArtistGuid, sLastArtistName)); string sChangeType = drLastRow["ChangeCode"].ToString(); SpotifyChangeType eSpotifyChangeType; switch (sChangeType) { case "A": eSpotifyChangeType = SpotifyChangeType.Add; break; case "D": eSpotifyChangeType = SpotifyChangeType.Delete; break; default: eSpotifyChangeType = SpotifyChangeType.Move; break; } TrackChanges.Add( new SpotifyTrackChange( Convert.ToInt64(drLastRow["TrackID"].ToString()) , drLastRow["TrackGuid"].ToString() , drLastRow["TrackName"].ToString() , Artists.ToArray() , eSpotifyChangeType , Convert.ToDateTime(drLastRow["ChangedDate"].ToString()) ) ); Artists = new List<SpotifyArtist>(); long iCurrentArtistID = Convert.ToInt64(drCurrentRow["ArtistID"].ToString()); string sCurrentArtistName = drCurrentRow["ArtistName"].ToString(); string sCurrentArtistGuid = drCurrentRow["ArtistGuid"].ToString(); Artists.Add(new SpotifyArtist(iCurrentArtistID, sCurrentArtistGuid, sCurrentArtistName)); } if (!drLastRow["PlaylistGuid"].ToString().Equals(drCurrentRow["PlaylistGuid"].ToString())) { CurrentPlaylistGuid = drLastRow["PlaylistGuid"].ToString(); CurrentPlaylistID = Convert.ToInt64(drLastRow["PlaylistID"].ToString()); CurrentPlaylistName = drLastRow["PlaylistName"].ToString(); //CurrentPlaylistOwner = drLastRow["PlaylistOwner"].ToString(); SpotifyPlaylistChange oSpotifyPlaylistChange = new SpotifyPlaylistChange(CurrentPlaylistID, CurrentPlaylistGuid, CurrentPlaylistName, "", TrackChanges.ToArray()); PlaylistChanges.Add(oSpotifyPlaylistChange); TrackChanges = new List<SpotifyTrackChange>(); } } else { bFirstTrack = false; } drLastRow = drCurrentRow; } return PlaylistChanges.ToArray(); }