Пример #1
0
        public async Task Throw_If_NoTracksExist()
        {
            //Arrange
            var options = Utils.GetOptions(nameof(Throw_If_NoTracksExist));

            Playlist firstPlaylist = new Playlist
            {
                Id               = 27,
                Title            = "Home",
                PlaylistPlaytime = 5524,
                UserId           = 2,
                Rank             = 552348,
                IsDeleted        = false,
            };

            var dateTimeProviderMock = new Mock <IDateTimeProvider>();
            var mockImageService     = new Mock <IPixaBayImageService>();

            using (var arrangeContext = new RidePalDbContext(options))
            {
                arrangeContext.Playlists.Add(firstPlaylist);
                arrangeContext.SaveChanges();
            }

            //Act & Assert
            using (var assertContext = new RidePalDbContext(options))
            {
                var sut = new PlaylistService(assertContext, dateTimeProviderMock.Object, mockImageService.Object);

                await Assert.ThrowsExceptionAsync <ArgumentNullException>(() => sut.GetPlaylistTracksAsync(27));
            }
        }
Пример #2
0
 private async void Button_sub_Click(object sender, RoutedEventArgs e)
 {
     if (playListDetailRoot.playlist.subscribed == "true")
     {
         if (await Task.Run(() => PlaylistService.SubOrCancelPlayList(playListDetailRoot.playlist.id, 2)))
         {
             NotifyPopup notifyPopup = new NotifyPopup("已取消收藏", "\xE224", Colors.MediumSeaGreen);
             notifyPopup.Show();
             TextBlock_subIcon.Text   = "\xECCD";
             TextBlock_subscribe.Text = "收藏";
         }
         else
         {
             NotifyPopup notifyPopup = new NotifyPopup("操作失败", "\xE171");
             notifyPopup.Show();
         }
     }
     else
     {
         if (await Task.Run(() => PlaylistService.SubOrCancelPlayList(playListDetailRoot.playlist.id, 1)))
         {
             NotifyPopup notifyPopup = new NotifyPopup("已添加收藏", "\xE082", Colors.MediumSeaGreen);
             notifyPopup.Show();
             TextBlock_subIcon.Text   = "\xF89A";
             TextBlock_subscribe.Text = "已收藏";
         }
         else
         {
             NotifyPopup notifyPopup = new NotifyPopup("操作失败", "\xE171");
             notifyPopup.Show();
         }
     }
 }
Пример #3
0
        private async void MyMusicList_Loaded(object sender, RoutedEventArgs e)
        {
            if (playlistItems_created == null && playlistItems_subscribed == null)
            {
                playlistItems_created    = new ObservableCollection <PlaylistItem>();
                playlistItems_subscribed = new ObservableCollection <PlaylistItem>();
                MyPlaylistRoot myPlaylistRoot = await Task.Run(() => PlaylistService.GetMyPlaylist());

                if (myPlaylistRoot == null || myPlaylistRoot.playlist == null)
                {
                    NotifyPopup notifyPopup = new NotifyPopup("获取失败");
                    notifyPopup.Show();
                    return;
                }
                foreach (var temp in myPlaylistRoot.playlist)
                {
                    if (temp.subscribed == "true")
                    {
                        playlistItems_subscribed.Add(temp);
                    }
                    else
                    {
                        playlistItems_created.Add(temp);
                    }
                }
                myPlaylistRoot = null;
            }
            AdaptiveGridView_createdByMe.ItemsSource = playlistItems_created;
            AdaptiveGridView_subscribed.ItemsSource  = playlistItems_subscribed;
        }
Пример #4
0
        public async Task CreateCorrectly()
        {
            var options = Utils.GetOptions(nameof(CreateCorrectly));

            var playlist = new PlaylistDTO
            {
                Title    = "In Utero",
                Duration = 1600,
                //PixabayImage = "https://en.wikipedia.org/wiki/In_Utero_(album)#/media/File:In_Utero_(Nirvana)_album_cover.jpg",
            };

            using (var arrangeContext = new PGDbContext(options))
            {
                var sut = new PlaylistService(arrangeContext);
                await sut.Create(playlist);

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new PGDbContext(options))
            {
                var result = await assertContext.Playlists.FirstOrDefaultAsync(x => x.Title == playlist.Title);

                Assert.AreEqual(playlist.Title, result.Title);
                Assert.AreEqual(playlist.Duration, result.Duration);
                //Assert.AreEqual(playlist.PixabayImage, result.Picture);
            }
        }
Пример #5
0
        public async Task Throw_When_NoPlaylistsExistToAttachImageTo()
        {
            //Arrange
            var options = Utils.GetOptions(nameof(Throw_When_NoPlaylistsExistToAttachImageTo));

            PlaylistDTO firstPlaylistDTO = new PlaylistDTO
            {
                Id               = 91,
                Title            = "Home",
                PlaylistPlaytime = 5524,
                UserId           = 2,
                Rank             = 552348,
            };

            var dateTimeProviderMock = new Mock <IDateTimeProvider>();
            var mockImageService     = new Mock <IPixaBayImageService>();

            using (var assertContext = new RidePalDbContext(options))
            {
                //Act
                var sut = new PlaylistService(assertContext, dateTimeProviderMock.Object, mockImageService.Object);

                //Assert
                await Assert.ThrowsExceptionAsync <ArgumentNullException>(() => sut.AttachImage(firstPlaylistDTO));
            }
        }
Пример #6
0
        private PlaylistService CreatePlaylistService()
        {
            var userId  = User.Identity.GetUserId();
            var service = new PlaylistService(userId);

            return(service);
        }
Пример #7
0
        private async void Button_AddToPlaylist_Click(object sender, RoutedEventArgs e)
        {
            if (!PlayingService.IsPlayingSong)
            {
                return;
            }
            if (PlayingService.PlaylistItems_Created == null && PlayingService.PlaylistItems_Subscribed == null)
            {
                PlayingService.PlaylistItems_Created    = new ObservableCollection <PlaylistItem>();
                PlayingService.PlaylistItems_Subscribed = new ObservableCollection <PlaylistItem>();
                MyPlaylistRoot myPlaylistRoot = await Task.Run(() => PlaylistService.GetMyPlaylist());

                foreach (var temp in myPlaylistRoot.playlist)
                {
                    if (temp.subscribed == "true")
                    {
                        PlayingService.PlaylistItems_Subscribed.Add(temp);
                    }
                    else
                    {
                        PlayingService.PlaylistItems_Created.Add(temp);
                    }
                }
                myPlaylistRoot = null;
            }
            ListBox_CreatedPlaylist.ItemsSource = PlayingService.PlaylistItems_Created;
            await ContentDialog_CreatedPlaylist.ShowAsync();
        }
Пример #8
0
        public async Task ReturnFalse_WhenPlaylistIsAlreadyUndeleted()
        {
            var options = Utils.GetOptions(nameof(ReturnFalse_WhenPlaylistIsAlreadyUndeleted));

            Playlist firstPlaylist = new Playlist
            {
                Id               = 11,
                Title            = "Home",
                PlaylistPlaytime = 5524,
                UserId           = 2,
                Rank             = 552348,
                IsDeleted        = false
            };

            var dateTimeProviderMock = new Mock <IDateTimeProvider>();
            var mockImageService     = new Mock <IPixaBayImageService>();

            using (var arrangeContext = new RidePalDbContext(options))
            {
                arrangeContext.Playlists.Add(firstPlaylist);
                arrangeContext.SaveChanges();
            }

            using (var assertContext = new RidePalDbContext(options))
            {
                //Act
                var sut    = new PlaylistService(assertContext, dateTimeProviderMock.Object, mockImageService.Object);
                var result = await sut.UndoDeletePlaylistAsync(11);

                //Assert
                Assert.IsFalse(result);
            }
        }
Пример #9
0
        /// <summary>
        /// plays the currently selected song, if no song is selected it plays the first one inside the playlist,
        /// if no song is inside the playlist, the random function is used to get a song from the library
        /// </summary>
        private void Play()
        {
            if (_mediaPlayer.IsPlaying())
            {
                if (PlaybackPaused)
                {
                    Pause();
                    return;
                }
                _mediaPlayer.Stop();
            }
            if (CurrentSong == null && PlaylistService != null)
            {
                CurrentSong = PlaylistService.GetNextPlaylistItem(SequentialPlayback == false, null, true);
            }
            if (CurrentSong == null)
            {
                return;
            }

            _mediaPlayer.Play(CurrentSong);
            PlaybackPaused = false;

            PreviousSongCommand.RaiseCanExecuteChanged();

            PauseCommand.RaiseCanExecuteChanged();
            ((IPlayerView)View).SetArtistAndTitle(CurrentSong.Song.Artist, CurrentSong.Song.Title);
            int durationOfSongInMs = _mediaPlayer.GetDurationOfPlayedSong();

            ((IPlayerView)View).SetSongDuration(durationOfSongInMs);
        }
Пример #10
0
        private void btnAddPlaylist_Click(object sender, EventArgs e)
        {
            string path = FormMain.defaultPath;
            string url  = textBoxUrl.Text;

            playlistService = new PlaylistService();
            chromeDriver    = new ChromeDriver(BrowserSettings.ChromeDriverService, BrowserSettings.ChromeOptions(null));
            Playlist playlist = new Playlist(path, url);

            playlist = playlistService.GetUpdatedPlaylist(chromeDriver, playlist);
            string result = "";

            string[] splited = playlist.PathFolder.Split(new[] { "\\" }, StringSplitOptions.None);
            splited[splited.Length - 1] = "Spotify-" + splited.LastOrDefault();
            result = string.Join("\\", splited);
            //foreach(var split in sp)

            DirectoryInfo di = Directory.CreateDirectory(result);

            using (StreamWriter sw = File.CreateText(result + "\\url.txt"))
            {
                sw.WriteLine(playlist.Url);
            }
            chromeDriver.Quit();
            this.Close();
        }
      private PlaylistService CreatePlaylistService()
      {
          var userId          = Guid.Parse(User.Identity.GetUserId());
          var playlistService = new PlaylistService(userId);

          return(playlistService);
      }
Пример #12
0
        public async Task DeleteCorrectly()
        {
            var options = Utils.GetOptions(nameof(DeleteCorrectly));

            var playlist = new PlaylistDTO
            {
                Title    = "In Utero",
                Duration = 1600,
                //PixabayImage = "https://en.wikipedia.org/wiki/In_Utero_(album)#/media/File:In_Utero_(Nirvana)_album_cover.jpg",
            };

            using (var arrangeContext = new PGDbContext(options))
            {
                var sut = new PlaylistService(arrangeContext);
                await sut.Create(playlist);

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new PGDbContext(options))
            {
                var sut = new PlaylistService(assertContext);
                await sut.Delete(1);

                var playlists = await sut.GetAllPlaylists();

                int playlistsCount = playlists.Count();

                Assert.AreEqual(0, playlistsCount);
            }
        }
Пример #13
0
        public IHttpActionResult Get(int id)
        {
            PlaylistService playlistService = CreatePlaylistService();
            var             playlist        = playlistService.GetPlaylistById(id);

            return(Ok(playlist));
        }
Пример #14
0
        public void Should_ReturnSongsAsidePlaylist()
        {
            //Arrange
            PlaylistService playlistService = new PlaylistService();
            Song            song1           = new Song(1, "The Weeknd", "The Hills", GenreName.Pop, 2015, 1, "");
            Song            song2           = new Song(2, "Alicja Majewska", "Żyć się chce", genre: GenreName.Pop, 2019, 1, "");
            Song            song3           = new Song(3, "Selah Sue", "Crazy Vibes", GenreName.Jazz, 2011, 1, "");
            Song            song4           = new Song(4, "Lady Pank", "Tacy sami", GenreName.Rock, 1988, 1, "");
            List <Song>     databaseSongs   = new List <Song>();

            databaseSongs.Add(song1);
            databaseSongs.Add(song2);
            databaseSongs.Add(song3);
            databaseSongs.Add(song4);
            Playlist playlistToUpdate = new Playlist(1, "Testing");

            playlistToUpdate.Content.Add(song1);
            playlistToUpdate.Content.Add(song4);
            //Act
            var result = playlistService.ReturnSongsAsidePlaylist(databaseSongs, playlistToUpdate);

            //Asset
            result.Should().BeOfType(typeof(List <Song>));
            result.Should().HaveCount(2);
            result.Should().Contain(song2);
            result.Should().Contain(song3);
            result.Should().ContainInOrder(song2, song3);
        }
Пример #15
0
        public async Task <ActionResult> Create(PlaylistChangeModel pmodel)
        {
            if (ModelState.IsValid)
            {
                OperationDetails operationDetails = await PlaylistService.Create(new PlaylistDTO()
                {
                    Name   = pmodel.Name,
                    UserId = User.Identity.GetUserId(),
                    Musics = pmodel.MusicsId.Select(x => new MusicDTO()
                    {
                        Id = x
                    }).ToList()
                });

                if (operationDetails.Succedeed)
                {
                    return(RedirectToAction("PlaylistView"));
                }
                else
                {
                    ModelState.AddModelError(operationDetails.Property, operationDetails.Message);
                }
            }

            return(View(pmodel));
        }
Пример #16
0
        async void Delete(object para)
        {
            try
            {
                PlaylistArt = null;
                var mediafile = para as Mediafile;
                if (mediafile == null)
                {
                    mediafile = Player.CurrentlyPlayingFile;
                }
                var pName = Playlist == null ? (para as MenuFlyoutItem).Text : Playlist.Name;

                using (PlaylistService service = new PlaylistService(Playlist.Name, Playlist.IsPrivate, await ShowPasswordDialog(Playlist.IsPrivate)))
                {
                    service.Remove(mediafile);
                    Songs.Remove(mediafile);
                    // mediafile.Playlists.Remove(mediafile.Playlists.Single(t => t.Name == pName));
                    // Songs.Remove(mediafile);
                    // LibVM.Database.Update(mediafile);
                    await Refresh();
                }
            }
            catch (Exception ex)
            {
                BLogger.Logger.Error("Error occured while deleting song from playlist.", ex);
            }
        }
        // GET: Playlist
        public ActionResult Index()
        {
            var service = new PlaylistService();
            var model   = service.GetAllPlaylists();

            return(View(model));
        }
Пример #18
0
        public ActionResult PlaylistView()
        {
            var t = User.Identity.GetUserId();
            List <PlaylistModel> playlists = new List <PlaylistModel>();

            if (User.IsInRole("admin"))
            {
                playlists = PlaylistService.GetAll().Select(playlist => new PlaylistModel()
                {
                    Id     = playlist.Id,
                    Name   = playlist.Name,
                    Musics = playlist.Musics.Select(x => new MusicModel()
                    {
                        Id = x.Id
                    }).ToList()
                }).ToList();
            }
            else
            {
                playlists = PlaylistService.GetAllById(t).Select(playlist => new PlaylistModel()
                {
                    Id     = playlist.Id,
                    Name   = playlist.Name,
                    Musics = playlist.Musics.Select(x => new MusicModel()
                    {
                        Id = x.Id
                    }).ToList()
                }).ToList();
            }
            return(View(playlists));
        }
        //GET Playlist/Detail
        public ActionResult Details(int id)
        {
            var svc   = new PlaylistService();
            var model = svc.GetPlaylistByID(id);

            return(View(model));
        }
Пример #20
0
        public async Task DeleteThrowsWhenIdAlreadyDeleted()
        {
            var options = Utils.GetOptions(nameof(DeleteThrowsWhenIdAlreadyDeleted));

            var playlist = new PlaylistDTO
            {
                Title    = "In Utero",
                Duration = 1600,
                //PixabayImage = "https://en.wikipedia.org/wiki/In_Utero_(album)#/media/File:In_Utero_(Nirvana)_album_cover.jpg",
            };

            using (var arrangeContext = new PGDbContext(options))
            {
                var sut = new PlaylistService(arrangeContext);
                await sut.Create(playlist);

                await arrangeContext.SaveChangesAsync();
            }

            using (var assertContext = new PGDbContext(options))
            {
                var sut = new PlaylistService(assertContext);

                await sut.Delete(1);

                await Assert.ThrowsExceptionAsync <ArgumentException>(() => sut.Delete(1));
            }
        }
Пример #21
0
        protected override void BackButtonWasPressed(ViewController topViewController)
        {
            BeatSaberUI.MainFlowCoordinator.DismissFlowCoordinator(this);
            var playlistService = new PlaylistService();

            playlistService.Reload();
        }
    { public IHttpActionResult Get()
      {
          PlaylistService playlistService = CreatePlaylistService();
          var             playlists       = playlistService.AdminGetPlaylist();

          return(Ok(playlists));
      }
Пример #23
0
 public CommonSoundCloudTrackViewModel()
 {
     foreach (var p in PlaylistService.GetPlaylists(App.User.id))
     {
         Playlists.Add(p);
     }
 }
Пример #24
0
        List <Object> prepareToNavigeteToPlaylitDetail(long id)
        {
            PlayListDetailRoot playListDetailRoot = PlaylistService.GetPlaylistDetail(id);

            if (playListDetailRoot == null || playListDetailRoot.playlist.trackIds.Count == 0)
            {
                return(null);
            }
            string ids = "";

            for (int i = 0; i < playListDetailRoot.playlist.trackIds.Count; i++)
            {
                if (i != 0)
                {
                    ids += ",";
                }
                ids += playListDetailRoot.playlist.trackIds[i].id;
            }
            MusicDetailRoot musicDetailRoot = SongService.GetMusicDetail_Post(ids);

            if (musicDetailRoot == null)
            {
                return(null);
            }
            List <Object> list = new List <object>();

            list.Add(playListDetailRoot);
            list.Add(musicDetailRoot);
            return(list);
        }
        public PlaylistViewModel(int idDeezer)
        {
            playlistService = ServiceLocator.GetService <PlaylistService>();

            Task.Run(async() =>
            {
                try
                {
                    Playlists = await playlistService.GetPlaylist(idDeezer);
                }
                catch (AccessDeezerException)
                {
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        Application.Current.MainPage.DisplayAlert("alert", "message", "OK");
                    });
                }
                catch (Exception)
                {
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        Application.Current.MainPage.DisplayAlert("alert", "message", "OK");
                    });
                }
            });
        }
        public async Task ReturnTrue_WhenPlaylistFavoriteWasCreatedButDisliked()
        {
            var options = Utils.GetOptions(nameof(ReturnTrue_WhenPlaylistFavoriteWasCreatedButDisliked));

            Playlist firstPlaylist = new Playlist
            {
                Id               = 32,
                Title            = "Home",
                PlaylistPlaytime = 5524,
                UserId           = 2,
                Rank             = 552348,
                IsDeleted        = false
            };

            Playlist secondPlaylist = new Playlist
            {
                Id               = 33,
                Title            = "Metal",
                PlaylistPlaytime = 5024,
                UserId           = 2,
                Rank             = 490258,
                IsDeleted        = false
            };

            User user = new User()
            {
                Id = 4
            };

            PlaylistFavorite favorite = new PlaylistFavorite()
            {
                Id         = 2,
                UserId     = 4,
                PlaylistId = 32,
                IsFavorite = false
            };

            var dateTimeProviderMock = new Mock <IDateTimeProvider>();
            var mockImageService     = new Mock <IPixaBayImageService>();

            using (var arrangeContext = new RidePalDbContext(options))
            {
                arrangeContext.Playlists.Add(firstPlaylist);
                arrangeContext.Playlists.Add(secondPlaylist);
                arrangeContext.Users.Add(user);
                arrangeContext.Favorites.Add(favorite);
                arrangeContext.SaveChanges();
            }

            using (var assertContext = new RidePalDbContext(options))
            {
                //Act
                var sut    = new PlaylistService(assertContext, dateTimeProviderMock.Object, mockImageService.Object);
                var result = await sut.AddPlaylistToFavoritesAsync(32, 4);

                //Assert
                Assert.IsTrue(result);
            }
        }
Пример #27
0
 public ActionResult Delete(string id)
 {
     PlaylistService.Delete(new PlaylistDTO()
     {
         Id = id
     });
     return(RedirectToAction("PlaylistView"));
 }
Пример #28
0
 /// <summary>
 /// Whether it is possible to play a previous song
 /// </summary>
 /// <returns></returns>
 private bool CanPlayPreviousSong()
 {
     if (PlaylistService != null)
     {
         return(PlaylistService.HasPreviousPlaylistItem(CurrentSong));
     }
     return(false);
 }
        public ActionResult DeletePlaylist(int id)
        {
            var service = new PlaylistService();

            service.DeletePlaylist(id);
            TempData["SaveResult"] = "Playlist was deleted";
            return(RedirectToAction("Index"));
        }
Пример #30
0
        public async Task GetMaxResults()
        {
            Videos = await PlaylistService.GetYouTubeVideos(SearchYouTube, 20);
            await DisplayResults();

            MaxReady    = true;
            VideosReady = false;
        }