Example #1
0
        public BaseResult RemoveFromPlaylist(Guid userId, AddRemovePlaylistRequest request)
        {
            return(BaseInvoke(() =>
            {
                //Is need check audioId??? - perfomance issue
                var playlistInfo =
                    (from p in _dbContext.Playlists.Include(x => x.AudioPlaylists)
                     where p.Id == request.PlaylistId && p.OwnerId == userId
                     select new
                {
                    Playlist = p,
                    AddedAudioPlaylist = p.AudioPlaylists.FirstOrDefault(x => x.AudioId == request.AudioId),
                })
                    .FirstOrDefault();

                if (playlistInfo == null)
                {
                    return ResponseBuilder <BaseResult> .Fail().SetInfoAndBuild("Playlist not found");
                }

                if (playlistInfo.AddedAudioPlaylist != null)
                {
                    _dbContext.AudioPlaylists.Remove(playlistInfo.AddedAudioPlaylist);
                    _dbContext.SaveChanges();
                }

                return ResponseBuilder <BaseResult> .SuccessBuild();
            }));
        }
Example #2
0
        public BaseResult RemoveFromPlaylist([FromBody] AddRemovePlaylistRequest request)
        {
            CheckTokenResult checkTokenResult = _authService.CheckToken(AccessToken);

            if (!checkTokenResult.Ok)
            {
                return(checkTokenResult);
            }

            return(_audioService.RemoveFromPlaylist(checkTokenResult.AuthToken.UserId, request));
        }
Example #3
0
        public BaseResult AddToPlaylist(Guid userId, AddRemovePlaylistRequest request)
        {
            return(BaseInvokeWithTransaction(() =>
            {
                //Is need check audioId??? - perfomance issue
                var playlistInfo =
                    (from p in _dbContext.Playlists.Include(x => x.AudioPlaylists)
                     where p.Id == request.PlaylistId && p.OwnerId == userId
                     select new
                {
                    Playlist = p,
                    IsAlreadyAdded = p.AudioPlaylists.Any(x => x.AudioId == request.AudioId),
                })
                    .FirstOrDefault();

                if (playlistInfo == null)
                {
                    return ResponseBuilder <BaseResult> .Fail().SetInfoAndBuild("Playlist not found");
                }

                if (playlistInfo.IsAlreadyAdded)
                {
                    return ResponseBuilder <BaseResult> .Fail().SetInfoAndBuild("Audio is already added");
                }

                var audioPlaylist = new DataModel.AudioPlaylist()
                {
                    AudioId = request.AudioId,
                    DateCreated = DateTime.Now,
                    Order = playlistInfo.Playlist.OrderValue,
                    PlaylistId = request.PlaylistId,
                };

                playlistInfo.Playlist.OrderValue++;
                _dbContext.Entry(playlistInfo.Playlist).State = EntityState.Modified;

                _dbContext.AudioPlaylists.Add(audioPlaylist);
                _dbContext.SaveChanges();

                return ResponseBuilder <BaseResult> .SuccessBuild();
            }));
        }