public async Task <IActionResult> PutPlaylistTrack(long id, PlaylistTrack playlistTrack)
        {
            if (id != playlistTrack.PlaylistId)
            {
                return(BadRequest());
            }

            _context.Entry(playlistTrack).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PlaylistTrackExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
コード例 #2
0
        public PlaylistTrack ToPOCO()
        {
            PlaylistTrack playlistTrack = new PlaylistTrack();

            playlistTrack.Track = track.ToPOCO();
            return(playlistTrack);
        }
コード例 #3
0
        }//eom

        public void DeleteTracks(string username, string playlistname, List <int> trackstodelete)
        {
            using (var context = new ChinookContext())
            {
                Playlist exists = (from x in context.Playlists
                                   where x.UserName.Equals(username, StringComparison.OrdinalIgnoreCase) &&
                                   x.Name.Equals(playlistname, StringComparison.OrdinalIgnoreCase)
                                   select x).FirstOrDefault();
                if (exists == null)
                {
                    throw new Exception("Playlist has been removed from the database.");
                }
                else
                {
                    var           trackskept = exists.PlaylistTracks.Where(tr => !trackstodelete.Any(tod => tod == tr.TrackId)).Select(tr => tr);
                    PlaylistTrack item       = null;

                    foreach (int dtrack in trackstodelete)
                    {
                        item = exists.PlaylistTracks.Where(dx => dx.TrackId == dtrack).FirstOrDefault();
                        exists.PlaylistTracks.Remove(item);
                    }
                    int newrownumber = 1;
                    foreach (var trackkept in trackskept)
                    {
                        trackkept.TrackNumber = newrownumber;
                        context.Entry(trackkept).Property(y => y.TrackNumber).IsModified = true;
                        newrownumber++;
                    }
                    context.SaveChanges();
                }
            }
        }//eom
コード例 #4
0
        public void DeletePlaylistTrack(long playlistTrackId)
        {
            PlaylistTrack track = context.PlaylistTracks.Single(f => f.Id == playlistTrackId);

            context.PlaylistTracks.Remove(track);
            context.SaveChanges();
        }
コード例 #5
0
        public void AddInstantTrack(int id)
        {
            Console.Write("Show list of tracks? Y/N: ");
            string yn = Console.ReadLine();

            if (yn == "Y" || yn == "y")
            {
                ShowTracks();
            }
            Console.Write("Type the track Id you want to add: ");
            int chosenTrackId = int.Parse(Console.ReadLine());

            PlaylistTrack playlisttrack = new PlaylistTrack();

            playlisttrack.TrackId    = chosenTrackId;
            playlisttrack.PlaylistId = id;

            using (everyloopContext context = new everyloopContext())
            {
                context.PlaylistTracks.Add(playlisttrack);
                context.SaveChanges();
            }

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine($"\nTrackId: {playlisttrack.TrackId} has been added\n");
            Console.ForegroundColor = ConsoleColor.Gray;
        }
コード例 #6
0
        public void DeletePlaylist()
        {
            ShowPlayLists();

            Console.WriteLine();
            Console.Write("Enter the Id of the playlist you want to remove: ");
            int id = int.Parse(Console.ReadLine());

            using (everyloopContext context = new everyloopContext())
            {
                PlaylistTrack playlist = context.PlaylistTracks.FirstOrDefault(x => x.PlaylistId == id);



                var list = context.PlaylistTracks.Where(x => x.PlaylistId == playlist.PlaylistId);
                foreach (var PlaylistItem in list)
                {
                    context.PlaylistTracks.Remove(PlaylistItem);
                }

                context.SaveChanges();


                context.PlaylistTracks.Attach(playlist);
                context.PlaylistTracks.Remove(playlist);

                DeletePlaylist2(id);

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("The playlist " + playlist.PlaylistId + " was removed");
                Console.ForegroundColor = ConsoleColor.Gray;
            }
        }
コード例 #7
0
        public IHttpActionResult PutPlaylistTrack(int id, PlaylistTrack playlistTrack)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != playlistTrack.Id)
            {
                return(BadRequest());
            }

            db.Entry(playlistTrack).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PlaylistTrackExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
コード例 #8
0
        public void SavePlayList(int argplaylistid, List <UserPlayListTrack> argplaylist)
        {
            PlaylistTrack argPlaylistTrack = null;

            using (var context = new ChinookSystemContext())
            {
                //Delete from PlaylistTracks table all items related to argplaylistid
                //presently in the db.
                List <PlaylistTrack> playlistOld = (from x in context.PlaylistTracks
                                                    where x.PlaylistId == argplaylistid
                                                    select x).ToList();
                foreach (PlaylistTrack item in playlistOld)
                {
                    context.PlaylistTracks.Remove(item);
                }
                //Add to PlaylistTracks table the items from argplaylist collection
                //argument and relate them to playlistid.
                foreach (UserPlayListTrack item in argplaylist)
                {
                    //Instantiate a new entity type.
                    argPlaylistTrack             = new PlaylistTrack();
                    argPlaylistTrack.PlaylistId  = argplaylistid;
                    argPlaylistTrack.TrackId     = item.TrackID;
                    argPlaylistTrack.TrackNumber = item.TrackNumber;
                    context.PlaylistTracks.Add(argPlaylistTrack);
                }
                context.SaveChanges();
            }
        }
コード例 #9
0
        }//eom

        public List <UserPlaylistTrack> Add_TrackToPLaylist(string playlistname, string username, int trackID)
        {
            using (var context = new ChinookContext())
            {
                // Part 1: Handle Playlist Record
                #region Playlist Record
                // Query for playlistID
                var exists = (from x in context.Playlists
                              where x.UserName.Equals(username) &&
                              x.Name.Equals(playlistname)
                              select x).FirstOrDefault();
                // Initialize the trackNumber for the track going into PlaylistTracks
                int trackNumber = 0;
                // I will need to creat an instanse of PlaylistTrack
                PlaylistTrack newTrack = null;

                // Determine if this is an addition to an existing playlist or if it is a new playlist
                if (exists == null)
                {
                    // This is a new playlist
                    exists          = new Playlist();
                    exists.Name     = playlistname;
                    exists.UserName = username;
                    exists          = context.Playlists.Add(exists);
                    trackNumber     = 1;
                }
                else
                {
                    // Playlist already exists, must find the new TrackNumber
                    // TrackNumber will be equal to .Count()+1
                    trackNumber = exists.PlaylistTracks.Count() + 1;

                    // In our example, tracks only exist once on each playlist
                    newTrack = exists.PlaylistTracks.SingleOrDefault(x => x.TrackId == trackID);

                    // This will be null if the track is NOT on the playlist tracks
                    if (newTrack != null)
                    {
                        throw new Exception("Playlist already contains this track");
                    }
                }
                #endregion

                // Part 2: Handle the track for PlaylistTrack
                #region PlaylistTrack
                // Use navigation to .Add the new track to the PlaylistTrack
                newTrack             = new PlaylistTrack();
                newTrack.TrackId     = trackID;
                newTrack.TrackNumber = trackNumber;

                // NOTE: The pKey for PlaylistID may not yet exist, using navigation one can let HashSet handle the PlayListID pKey
                exists.PlaylistTracks.Add(newTrack);

                // Physically commit work to the database
                context.SaveChanges();
                #endregion

                return(List_TracksForPlaylist(playlistname, username));
            }
        }//eom
コード例 #10
0
        public CurrentState(RemotedWindowsMediaPlayer remotePlayer)
        {
            IWMPMedia    current_item = remotePlayer.getCurrentMediaItem();
            IWMPPlaylist playlist     = remotePlayer.getNowPlaying();
            int          index        = -1;

            if (playlist != null && playlist.count > 0)
            {
                for (int j = 0; j < playlist.count; j++)
                {
                    IWMPMedia item = playlist.get_Item(j);
                    if (item != null && item.get_isIdentical(current_item))
                    {
                        index = j;
                    }
                }
            }
            if (index >= 0)
            {
                current_track = new PlaylistTrack(index, current_item);
            }
            shuffle_mode = remotePlayer.isShuffleModeEnabled();
            play_state   = getTruncatedPlayState(remotePlayer.getPlayState());
            VolumeCmd volumeCmd = new VolumeCmd();

            volume   = volumeCmd.getVolume();
            is_muted = volumeCmd.isMuted();
        }
コード例 #11
0
 private static void Add(MusicDataContext db, PlaylistTrack track)
 {
     Add(db, new List <PlaylistTrack>()
     {
         track
     });
 }
コード例 #12
0
 public static void Add(PlaylistTrack track)
 {
     AddAll(new List <PlaylistTrack>()
     {
         track
     });
 }
コード例 #13
0
        private static void createTrack(Playlist playlist, Location location, int trackNo, HashSet <int> expectedPlaylistTrackKeys)
        {
            var track         = new Track("Filename" + trackNo, "fullFileName" + trackNo, location, null, null, null, null, null, null, null, null, null, null, null, null, null, "titleArtists" + trackNo);
            var playlistTrack = new PlaylistTrack(playlist, track, trackNo);

            expectedPlaylistTrackKeys.Add(track.Key);
        }
コード例 #14
0
ファイル: ListingTrack.cs プロジェクト: herdeym/splaylist
 public ListingTrack(PlaylistTrack pt, int index = -1)
 {
     PlaylistTrack = pt;
     FullTrack     = pt.Track;
     Index         = index;
     Id            = pt.Track.Id;
 }
コード例 #15
0
        public void GetPlaylistTracksTest()
        {
            ICRUDTestDBContextProvider cRUDTestDBContextProvider = new CRUDTestDBContextProvider(Guid.NewGuid().ToString());
            var context = cRUDTestDBContextProvider.GetContext();
            var track   = new Track {
                TrackId = 2
            };
            var track2 = new Track {
                TrackId = 1
            };
            var playlistTrack = new PlaylistTrack {
                PlaylistId = 1, TrackId = 1
            };
            var playlist = new Playlist {
                PlaylistId = 1
            };

            context.Add(track);
            context.Add(track2);
            context.Add(playlistTrack);
            context.Add(playlist);
            context.SaveChanges();

            TrackBE trackBE  = new TrackBE(cRUDTestDBContextProvider);
            TrackBE trackBE2 = new TrackBE(cRUDTestDBContextProvider);

            trackBE.Load(1);
            trackBE2.Load(2);
            var playlistTrackBECollection = trackBE.GetPlaylistTracks();

            Assert.IsTrue(playlistTrackBECollection.First().GetType() == typeof(PlaylistTrackBE));
            Assert.IsTrue(playlistTrackBECollection.First().Id == (1, 1));
            Assert.IsTrue(trackBE2.GetPlaylistTracks().IsNullOrEmpty());
        }
コード例 #16
0
 public async Task<PlaylistTrack> AddAsync(PlaylistTrack newPlaylistTrack,
     CancellationToken ct = default)
 {
     _context.PlaylistTrack.Add(newPlaylistTrack);
     await _context.SaveChangesAsync(ct);
     return newPlaylistTrack;
 }
コード例 #17
0
        private void AddTrackButton_Click(object sender, EventArgs e)
        {
            using (var db = new everyloopContext())
            {
                var trackName = db.Tracks.SingleOrDefault(x => x.Name.ToLower() == TrackNameBox.Text.ToLower());
                if (trackName == null)
                {
                    MessageBox.Show("Could not find track", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                var           id            = Convert.ToInt32(TrackPlaylistBox.SelectedValue);
                var           trackNameId   = trackName.TrackId;
                PlaylistTrack playlistTrack = db.PlaylistTracks.SingleOrDefault(x => x.TrackId == trackNameId && x.PlaylistId == id);

                if (playlistTrack != null)
                {
                    MessageBox.Show("Track already added", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                db.PlaylistTracks.Add(new PlaylistTrack {
                    PlaylistId = id, TrackId = trackNameId
                });
                db.SaveChanges();
            }
        }
コード例 #18
0
        public void Add_TrackToPlayList(string playlistname, string userName, int trackid)
        {
            using (var context = new ChinookContext())
            {
                //does the playlist already exist?
                Playlist exists = (from x in context.Playlists
                                   where x.UserName.Equals(userName) &&
                                   x.Name.Equals(playlistname)
                                   select x).FirstOrDefault();

                int           tracknumber = 0;
                PlaylistTrack newTrack    = null;
                if (exists == null)
                {
                    //create the new Playlist
                    exists = new Playlist();

                    exists.Name     = playlistname;
                    exists.UserName = userName;
                    exists          = context.Playlists.Add(exists);
                    tracknumber     = 1;
                }
                else
                {
                    //the playlist already exists
                    //and the query has given us the instance
                    //of that playlist from the database
                    //generate the next tracknumber
                    tracknumber = exists.PlaylistTracks.Count() + 1;

                    //on our sample, playlist tracks for a playlist are unique

                    newTrack = exists.PlaylistTracks.SingleOrDefault(x => x.TrackId == trackid);
                    if (newTrack != null)
                    {
                        throw new Exception("Playlist already has requested track.");
                    }
                }

                //this is a boom test
                //remove after testing
                //if (playlistname.Equals("Boom"))
                //{
                //    throw new Exception("forced abort, check DB for Boom playlist");
                //}
                //you have a playlist
                //you know the track will be unique
                //create the new track
                newTrack             = new PlaylistTrack();
                newTrack.TrackId     = trackid;
                newTrack.TrackNumber = tracknumber;
                //since I am using the navigation property of the
                //playlist to get to playlisttrack
                //the SaveChanges will fill the playlistid
                //from either the HashSet of from the existing instance
                exists.PlaylistTracks.Add(newTrack);

                context.SaveChanges();
            }
        }
コード例 #19
0
        }//eom

        public void Add_TrackToPLaylist(string playlistname, string username, int trackid)
        {
            using (var context = new ChinookContext())
            {
                int           tracknumber = 0;
                PlaylistTrack newTrack    = null;
                //code to go here
                Playlist exists = (from x in context.Playlists
                                   where x.Name.Equals(playlistname) &&
                                   x.UserName.Equals(username)
                                   select x).FirstOrDefault();
                if (exists == null)
                {
                    //new playlist
                    exists          = new Playlist();
                    exists.Name     = playlistname;
                    exists.UserName = username;
                    context.Playlists.Add(exists);
                    tracknumber = 1;
                }
                else
                {
                    //existing playlist
                    newTrack = (from x in context.PlaylistTracks
                                where x.Playlist.Name.Equals(playlistname) &&
                                x.Playlist.UserName.Equals(username) &&
                                x.TrackId == trackid
                                select x).FirstOrDefault();
                    if (newTrack == null)
                    {
                        tracknumber = (from x in context.PlaylistTracks
                                       where x.Playlist.Name.Equals(playlistname) &&
                                       x.Playlist.UserName.Equals(username)
                                       select x.TrackNumber).Max();
                        tracknumber++;
                    }
                    else
                    {
                        //Best for single errors
                        //throw new Exception("Song already exists on playlist. Choose something else.");
                        //Multiple Errors
                        errors.Add("Song already exists on playlist. Choose something else.");
                    }
                }
                if (errors.Count > 0)
                {
                    throw new BusinessRuleException("Adding Track", errors);
                }
                newTrack = new PlaylistTrack();
                //when you do an .Add(xxx) to a entity, the record is only staged AND NOT on the database
                //ANY expected pkey value DOES NOT yet exist

                //newTrack.PlaylistId = exists.PlaylistId;
                newTrack.TrackId     = trackid;
                newTrack.TrackNumber = tracknumber;
                exists.PlaylistTracks.Add(newTrack);
                context.SaveChanges();
            }
        }//eom
コード例 #20
0
        public IActionResult AddPlaylistTrack(int TrackId, int PlaylistId)

        {
            var playlistTracks = new PlaylistTrack[]
            {
                new PlaylistTrack {
                    PlaylistId = 1, TrackId = 13
                },
                new PlaylistTrack {
                    PlaylistId = 1, TrackId = 14
                },
                new PlaylistTrack {
                    PlaylistId = 1, TrackId = 5
                },
                new PlaylistTrack {
                    PlaylistId = 1, TrackId = 6
                },
                new PlaylistTrack {
                    PlaylistId = 1, TrackId = 7
                },
                new PlaylistTrack {
                    PlaylistId = 1, TrackId = 8
                },
                new PlaylistTrack {
                    PlaylistId = 1, TrackId = 9
                },
                new PlaylistTrack {
                    PlaylistId = 1, TrackId = 10
                },
                new PlaylistTrack {
                    PlaylistId = 1, TrackId = 11
                },
                new PlaylistTrack {
                    PlaylistId = 1, TrackId = 12
                },
            };

            // var playlistTracks = new PlaylistTrack[]
            // {
            //     new PlaylistTrack{PlaylistId=1, TrackId=1},
            //     new PlaylistTrack{PlaylistId=1, TrackId=2},
            //     new PlaylistTrack{PlaylistId=2, TrackId=1},
            //     new PlaylistTrack{PlaylistId=1, TrackId=3},
            // };

            foreach (PlaylistTrack pt in playlistTracks)
            {
                _context.PlaylistTracks.Add(pt);
            }
            // System.Console.WriteLine(playlistTrack);
            // _context.PlaylistTracks.Add(playlistTrack);
            _context.SaveChanges();

            var onePlaylist = _context.Playlists.Include(d => d.PlaylistTracks).ThenInclude(t => t.Track).SingleOrDefault(w => w.PlaylistId == 1);

            ViewBag.onePlaylist = onePlaylist;

            return(View("Webplayer"));
        }
コード例 #21
0
        public PlaylistTrack Create()
        {
            var entity = new PlaylistTrack();

            entity.PlaylistID = this.PlaylistID;
            entity.TrackID    = this.TrackID;
            return(entity);
        }
コード例 #22
0
 /// <summary>
 /// Merge all values from one Entity into another one.
 /// </summary>
 /// <param name="source">Source Entity. Will be copied to the target.</param>
 /// <param name="target">Target Entity. Will receive the values from the source.</param>
 /// <returns>void.</returns>
 public static void Merge(PlaylistTrack source, PlaylistTrack target)
 {
     // this method merges 2 Entities.
     #region Merge Values
     target.PlaylistId = source.PlaylistId;
     target.TrackId    = source.TrackId;
     #endregion
 }
コード例 #23
0
 public static void SetPlaylist(PlaylistTrack track)
 {
     MusicDataContext.WithSubmit(db => {
         Clear(db);
         Add(db, track);
         SetIndex(db, 0);
     });
 }
コード例 #24
0
 public IActionResult Post(PlaylistTrack playlistTrack)
 {
     if (playlistTrack == null)
     {
         return(BadRequest());
     }
     return(Ok(_unit.PlaylistTracks.Add(playlistTrack)));
 }
コード例 #25
0
        public TrackViewModel(IContentManagerService contentManagerService, IMusicPlayerService musicPlayerService, IWebService webService, PlaylistTrack playlistTrack)
        {
            _contentManagerService = contentManagerService;
            _musicPlayerService    = musicPlayerService;
            _webService            = webService;

            PlaylistTrack = playlistTrack;
        }
コード例 #26
0
 public IActionResult Post([FromBody] PlaylistTrack playlistTrack)
 {
     if (ModelState.IsValid)
     {
         return(Ok(_unit.PlaylistTracks.Insert(playlistTrack)));
     }
     return(BadRequest(ModelState));
 }
コード例 #27
0
        }//eom

        public List <UserPlaylistTrack> Add_TrackToPLaylist(string playlistname, string username, int trackid)
        {
            using (var context = new ChinookContext())
            {
                //code to go here
                //create a new pkey value (parent)
                //create a child of the pkey. CAN'T PARENT DOESN'T EXIST YET
                //DO NOT ENTER A SAVE CHANGE AFTER PARENT CREATION, THIS CREaTES 2 TRANSACTIONS INSTEAD OF JUST 1
                //Playlist constructor uses HashSet, gives pseudo pkeys
                //
                //child creation uses navigation
                //SaveChange()

                // just do a query to determine playlist id
                var exists = (from x in context.Playlists
                              where x.UserName == username && x.Name.Equals(playlistname)
                              select x).FirstOrDefault();
                //initialize the tracknumber for the track going info playlist tracks
                int tracknumber = 0;
                //i will need to create an instance of PlaylistTrack
                PlaylistTrack newtrack = null;
                //determine if this is an addition or a creation and addition
                if (exists == null)
                {
                    exists          = new Playlist();
                    exists.Name     = playlistname;
                    exists.UserName = username;
                    exists          = context.Playlists.Add(exists);
                    tracknumber     = 1;
                }
                else
                {
                    //the playlist already exists
                    //need to know the number of tracks currently on the list
                    tracknumber = exists.PlaylistTracks.Count() + 1;
                    //playlist can only have a track once per playlist
                    newtrack = exists.PlaylistTracks.SingleOrDefault(x => x.TrackId == trackid);
                    //this will be null if the track is not in the playlist
                    if (newtrack != null)
                    {
                        throw new Exception("Playlist already has this track.");
                    }
                }
                //END OF PLAYLIST HANDLING
                //BEGIN HANDLING TRACK FOR PLAYLIST
                //use navigation to add the new track to the playlist
                newtrack             = new PlaylistTrack();
                newtrack.TrackId     = trackid;
                newtrack.TrackNumber = tracknumber;
                //NOTE the pkey for the playlistid may not exist yet. using navigation, one can let hashset handle the playlistid pkey
                //
                exists.PlaylistTracks.Add(newtrack);

                //physically commit your work to the database
                context.SaveChanges();
                return(List_TracksForPlaylist(playlistname, username));
            }
        }//eom
コード例 #28
0
        }//eom

        public List <UserPlaylistTrack> Add_TrackToPLaylist(string playlistname, string username, int trackid)
        {
            using (var context = new ChinookContext())
            {
                //code to go here
                //PART ONE : HANDLE PLAYLIST RECORD
                //query to get playlistid
                var exists = (from x in context.Playlists
                              where x.UserName.Equals(username) && x.Name.Equals(playlistname)
                              select x).FirstOrDefault();

                //initialize the tracknumber for the track going into PlaylistTracks
                int tracknumber = 0;
                //i will need to create an instance of PlaylistTrack
                PlaylistTrack newtrack = null;
                //determine if this is an addition to an existing list or
                // if a new list needs to be created
                if (exists == null)
                {
                    //this is a new playlist
                    //create the playlist
                    exists          = new Playlist();
                    exists.Name     = playlistname;
                    exists.UserName = username;
                    exists          = context.Playlists.Add(exists);
                    tracknumber     = 1;
                }
                else
                {
                    //the playlist already exists
                    //i need to know the number of tracks currently on the list
                    //track number will be = count + 1
                    tracknumber = exists.PlaylistTracks.Count() + 1;

                    //in our example, trakc exists only once on each playlist
                    newtrack = exists.PlaylistTracks.SingleOrDefault(x => x.TrackId == trackid);
                    //this will be null if the track is NOT on the playlist tracks
                    if (newtrack != null)
                    {
                        throw new Exception("Playlist already has requested track");
                    }
                }

                //PART TWO: HANDLE THE TRACK FOR PLAYLIST TRACK
                //use navigation to .Add the new track to PlaylistTrack
                newtrack             = new PlaylistTrack();
                newtrack.TrackId     = trackid;
                newtrack.TrackNumber = tracknumber;

                //NOTE: the pkey for PlaylistId may not yet exist
                //using navigation one can let HashSet handle the PlaylistId pkey
                exists.PlaylistTracks.Add(newtrack);

                //physically commit your woirk to the database\
                context.SaveChanges();
                return(List_TracksForPlaylist(playlistname, username));
            }
        }//eom
コード例 #29
0
        public static PlaylistTrackViewModel Convert(PlaylistTrack playlistTrack)
        {
            var playlistTrackViewModel = new PlaylistTrackViewModel();

            playlistTrackViewModel.PlaylistId = playlistTrack.PlaylistId;
            playlistTrackViewModel.TrackId    = playlistTrack.TrackId;

            return(playlistTrackViewModel);
        }
コード例 #30
0
        public List <PlaylistModel> GetPlaylist(int page)
        {
            var playlist = new List <PlaylistModel>();

            try
            {
                using (var context = new sparrow_dbEntities())
                {
                    var tracks =
                        context.SPRW_TRACK.OrderByDescending(i => i.SPRW_TRACK_POPULAR_LIKE.Count).ThenBy(i => i.LAST_MAINT_TIME).Take(100);
                    foreach (var track in tracks)
                    {
                        if (playlist.Exists(i => i.ArtistName == track.SPRW_ARTIST.NAME))
                        {
                            var playlistItem = new PlaylistTrack
                            {
                                AlbumId   = track.ALBUM_ID,
                                AlbumName = track.SPRW_ALBUM != null ? track.SPRW_ALBUM.NAME : null,
                                TrackId   = track.TRACK_ID,
                                PopIndex  =
                                    track.SPRW_TRACK_POPULAR_LIKE.Count(i => i.DISLIKE_DATE > DateTime.Now.AddMonths(-6))
                            };
                            var firstOrDefault = playlist.FirstOrDefault(i => i.ArtistName == track.SPRW_ARTIST.NAME);
                            if (firstOrDefault != null)
                            {
                                firstOrDefault.Tracks.Add(playlistItem);
                            }
                        }
                        else
                        {
                            playlist.Add(new PlaylistModel
                            {
                                ArtistId   = track.ARTIST_ID,
                                ArtistName = track.SPRW_ARTIST.NAME,
                                Genres     = track.SPRW_ARTIST.SPRW_GENRE.Select(i => i.GENRE).ToList(),
                                Tracks     = new List <PlaylistTrack>
                                {
                                    new PlaylistTrack
                                    {
                                        AlbumId   = track.ALBUM_ID,
                                        AlbumName = track.SPRW_ALBUM != null ? track.SPRW_ALBUM.NAME : null,
                                        TrackId   = track.TRACK_ID,
                                        PopIndex  =
                                            track.SPRW_TRACK_POPULAR_LIKE.Count(i => i.DISLIKE_DATE > DateTime.Now.AddMonths(-6))
                                    }
                                }
                            });
                        }
                    }
                }
                return(playlist);
            }
            catch (Exception e)
            {
                throw e;
            }
        }