Beispiel #1
0
        private Result AddToLikedPlaylist(AddToPlaylistRequest request)
        {
            using (DAL.DALManager mgr = new DAL.DALManager(settings.Value.DatabasePath))
            {
                if (request.Item.IsTrack)
                {
                    var track = mgr.Get <Domain.Objects.Track>(request.Item.Id);
                    if (track == null)
                    {
                        return new Result()
                               {
                                   Success = false, Message = "Track not found"
                               }
                    }
                    ;
                    track.LikeStatus = LikeStatus.Liked;
                    mgr.Set(track);
                    lastFmManager.LoveTrackOnLastFM(DateTime.MinValue, track, true);
                    return(new Result()
                    {
                        Success = true
                    });
                }
                else
                {
                    var album = mgr.Get <Domain.Objects.Album>(request.Item.Id);
                    if (album == null)
                    {
                        return new Result()
                               {
                                   Success = false, Message = "Album not found"
                               }
                    }
                    ;

                    var tracks = mgr.FindTracks(null, Domain.Objects.Playlist.ALL_ID, album.Id, 0, int.MaxValue);
                    foreach (var trackItem in tracks)
                    {
                        var track = mgr.Get <Domain.Objects.Track>(trackItem.Id);

                        if (track == null)
                        {
                            return new Result()
                                   {
                                       Success = false, Message = "Track not found"
                                   }
                        }
                        ;

                        track.LikeStatus = LikeStatus.Liked;
                        mgr.Set(track);
                        lastFmManager.LoveTrackOnLastFM(DateTime.MinValue, track, true);
                    }
                    return(new Result()
                    {
                        Success = true
                    });
                }
            }
        }
Beispiel #2
0
        public Result AddToPlaylist([FromBody] AddToPlaylistRequest request)
        {
            try
            {
                if (request.PlaylistId == (Domain.Objects.Playlist.ALL_ID + ""))
                {
                    return new Result()
                           {
                               Success = false, Message = "Can't add tracks to the [All] or [Liked] playlist"
                           }
                }
                ;
                else if (request.PlaylistId == (Domain.Objects.Playlist.LIKED_ID + ""))
                {
                    return(AddToLikedPlaylist(request));
                }

                using (DAL.DALManager mgr = new DAL.DALManager(settings.Value.DatabasePath))
                {
                    var playlist = mgr.Get <Domain.Objects.Playlist>(int.Parse(request.PlaylistId));

                    if (playlist == null)
                    {
                        return new Result()
                               {
                                   Success = false, Message = "Playlist not found"
                               }
                    }
                    ;

                    int nrOfItemsAdded = 0;
                    if (request.Item.IsTrack)
                    {
                        var track = mgr.Get <Domain.Objects.Track>(request.Item.Id);

                        if (track == null)
                        {
                            return new Result()
                                   {
                                       Success = false, Message = "Track not found"
                                   }
                        }
                        ;

                        var playlistTrack = mgr.GetPlaylistTrack(playlist.Id, track.Id);
                        if (playlistTrack != null)
                        {
                            return new Result()
                                   {
                                       Success = false, Message = "Track is already in the playlist"
                                   }
                        }
                        ;

                        mgr.AddToPlaylist(playlist.Id, track.Id);
                        nrOfItemsAdded++;
                    }
                    else
                    {
                        var album = mgr.Get <Domain.Objects.Album>(request.Item.Id);
                        if (album == null)
                        {
                            return new Result()
                                   {
                                       Success = false, Message = "Album not found"
                                   }
                        }
                        ;

                        var tracks = mgr.FindTracks(null, Domain.Objects.Playlist.ALL_ID, album.Id, 0, int.MaxValue);
                        foreach (var track in tracks)
                        {
                            var playlistTrack = mgr.GetPlaylistTrack(playlist.Id, track.Id);

                            if (playlistTrack == null)
                            {
                                mgr.AddToPlaylist(playlist.Id, track.Id);
                                nrOfItemsAdded++;
                            }
                        }
                    }
                    playlist.NrOfTracks += nrOfItemsAdded;
                    mgr.Set <Domain.Objects.Playlist>(playlist);

                    return(new Result()
                    {
                        Success = true
                    });
                }
            }
            catch (Exception ex)
            {
                return(GetErrorResultFromException <Result>(ex));
            }
        }