/// <summary> /// Gets all MediaTracks for a Player. /// </summary> /// <param name="playerID">The ID of the Player.</param> /// <returns>A List of MediaTracks.</returns> public static List <MediaTrack> GetForPlayer(int playerId) { //Get the MediaTracks for the Module. List <MediaTrack> mediaTracks = LoadListFromReader(DBMediaTrack.SelectByPlayer(playerId)); // JA Note, in my opinion hitting the database in a loop should be avoided // this could/should be changed so that all of the files needed come back from one hit to the db //For each MediaTrack, get it's associated MediaFiles. //foreach (MediaTrack track in mediaTracks) //{ // track.MediaFiles = MediaFile.GetForTrack(track.TrackId); //} // get all the files in one hit to the db List <MediaFile> mediaFiles = MediaFile.GetForPlayer(playerId); foreach (MediaTrack track in mediaTracks) { foreach (MediaFile file in mediaFiles) { if (file.TrackId == track.trackId) { track.MediaFiles.Add(file); } } } return(mediaTracks); }
/// <summary> /// Removes a MediaTrack /// </summary> /// <param name="mediaTrack">The MediaTrack.</param> /// <returns>True if the MediaTrack was successfully removed.</returns> public static bool Remove(MediaTrack mediaTrack) { //Delete the track from the database. bool successfulRemove = DBMediaTrack.Delete(mediaTrack.TrackId); //Adjust the TrackOrder values if the track delete was a success. if (successfulRemove) { DBMediaTrack.AdjustTrackOrdersForDelete(mediaTrack.PlayerId, mediaTrack.TrackOrder); } return(successfulRemove); }
/// <summary> /// Updates a MediaTrack /// </summary> /// <param name="mediaTrack">The MediaTrack.</param> /// <returns>True if the the update is successful.</returns> public static bool Update(MediaTrack mediaTrack) { //Get the current persisted MediaTrack MediaTrack currentTrack = Get(mediaTrack.TrackId); //Update the MediaTrack bool isUpdated = DBMediaTrack.Update( mediaTrack.TrackId, mediaTrack.PlayerId, mediaTrack.TrackType.ToString(), mediaTrack.TrackOrder, mediaTrack.Name, mediaTrack.Artist, mediaTrack.UserGuid); //If the MediaTrack successfully updated, update the associated MediaFiles. if (isUpdated) { //Remove any MediaFiles that no longer exist. foreach (MediaFile currentFile in currentTrack.MediaFiles) { bool matchFound = false; foreach (MediaFile updatedFile in mediaTrack.MediaFiles) { if (currentFile.FileId == updatedFile.FileId) { matchFound = true; break; } } if (!matchFound) { MediaFile.Remove(currentFile); } } //Add any MediaFiles that have not been persisted yet. foreach (MediaFile updatedFile in mediaTrack.MediaFiles) { if (updatedFile.FileId <= 0) { updatedFile.FileId = MediaFile.Add(updatedFile); } } } return(isUpdated); }
/// <summary> /// Gets a MediaTrack. /// </summary> /// <param name="trackID">The ID of the MediaTrack.</param> /// <returns>The MediaTrack object.</returns> public static MediaTrack Get(int trackId) { //Get the track for the provided trackID. List <MediaTrack> trackList = LoadListFromReader(DBMediaTrack.Select(trackId)); MediaTrack mediaTrack = new MediaTrack(); //Make sure there was data found if (trackList.Count > 0) { mediaTrack = trackList[0]; //There was data found, so populate the Media Files for the Track. mediaTrack.MediaFiles = MediaFile.GetForTrack(trackId); return(mediaTrack); } return(null); }
/// <summary> /// Adds a MediaTrack. /// </summary> /// <param name="mediaTrack">The MediaTrack.</param> /// <returns>The ID of the MediaTrack.</returns> public static int Add(MediaTrack mediaTrack) { //Insert the MediaTrack. int trackId = DBMediaTrack.Insert( mediaTrack.PlayerId, mediaTrack.TrackType.ToString(), mediaTrack.TrackOrder, mediaTrack.Name, mediaTrack.Artist, mediaTrack.UserGuid ); mediaTrack.trackId = trackId; //Insert each of MediaTrack's MediaFiles. foreach (MediaFile file in mediaTrack.MediaFiles) { file.TrackId = trackId; MediaFile.Add(file); } return(trackId); }
/// <summary> /// Removes all MediaTracks for a player. /// </summary> /// <param name="playerID">The ID of the player.</param> /// <returns>True if the MediaTracks were successfully removed.</returns> public static bool RemoveForPlayer(int playerId) { return(DBMediaTrack.DeleteByPlayer(playerId)); }
/// <summary> /// Gets the count of MediaTracks for a Player. /// </summary> /// <param name="moduleID">The ID of the player.</param> /// <returns>The count of MediaTracks.</returns> public static int GetCountForPlayer(int playerId) { return(DBMediaTrack.GetCountByPlayer(playerId)); }