public static List <PlaylistSong> GeneratePlayList(string playListName, int minutes) { List <PlaylistSong> playlistSongList = new List <PlaylistSong>(); List <Song> workingList = CDCatalogManager.GetSongs(); //TODO: Filter songs based on Genre and/or Rating. int seconds = (minutes * 60); //Song lengths are stored in seconds, but the user selects a playlist duration in minutes. Playlist playlist = new Playlist(); playlist.PlaylistName = playListName; //TODO: Consider checking for and preventing duplicate names. CDCatalogManager.AddPlaylist(playlist); playlistSongList = CombinationsPlaylist(workingList, playlist, seconds); //Works speedily now. //playlistSongList = RandomPlayList(workingList, seconds, playlist); //My prior algorithm, which did not guarantee a return. return(playlistSongList); }
public static int CreatePlaylistGo(string playListName, int minutes) { //Generate a random Playlist of the length specified. subWindowPlaylistSongs.Clear(); Song songObject = new Song(); int totalDuration = 0; if (minutes > 0) { List <PlaylistSong> playlistSongList = GeneratePlayList(playListName, minutes).OrderBy(pls => pls.SongOrder).ToList(); for (int i = 0; i < playlistSongList.Count; i++) { PlaylistSong pls = playlistSongList[i]; songObject = CDCatalogManager.GetSongs().Where(s => s.SongID.Equals(pls.SongID)).First(); subWindowPlaylistSongs.Add(songObject); totalDuration += songObject.TrackLength; } } return(totalDuration); }
public static void GetAllSongs() { displaySongList = CDCatalogManager.GetSongs(); }
public static bool AddSongGo(string title, Artist artist, Album album, string trackIn, Genre genre, string minutes, string seconds, int rating, out string message) { //Validate the input fields from the AddSong window, then add the Song to the model. bool isValid = true; message = ""; int tracknum = 0; int trackminutes = 0; int trackseconds = 0; int doesSongExist = CDCatalogManager.GetSongs().Where(s => s.SongTitle.Equals(title)).Where( s => s.AlbumID.Equals(album.AlbumID)).Where( s => s.ArtistID.Equals(artist.ArtistID)).Count(); if (doesSongExist != 0) { isValid = false; message += "A Song by this Artist on this Album already exists in the database."; } if (title == "") { isValid = false; message += "Song Title cannot be blank.\n"; } if (null == artist) { isValid = false; message += "Please select an Artist.\n"; } if (null == album) { isValid = false; message += "Please select an Album.\n"; } if (!int.TryParse(trackIn, out tracknum) || tracknum < 0) { isValid = false; message += "Track # must be a nonnegative integer.\n"; } if (null == genre) { isValid = false; message += "Please select a Genre.\n"; } if (minutes != "") { if (!int.TryParse(minutes, out trackminutes) || trackminutes < 0) { isValid = false; message += "Track minutes must be a nonnegative integer or blank.\n"; } } if (!int.TryParse(seconds, out trackseconds) || trackseconds < 1) { isValid = false; message += "Track seconds must be a positive integer.\n"; } if (isValid) { Song song = new Song(); song.SongTitle = title; song.ArtistID = artist.ArtistID; song.AlbumID = album.AlbumID; song.TrackNumber = tracknum; song.GenreID = genre.GenreID; song.TrackLength = ((trackminutes * 60) + trackseconds); song.Rating = rating; CDCatalogManager.AddSong(song); } return(isValid); }