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(); })); }
public BaseResult RemoveFromPlaylist([FromBody] AddRemovePlaylistRequest request) { CheckTokenResult checkTokenResult = _authService.CheckToken(AccessToken); if (!checkTokenResult.Ok) { return(checkTokenResult); } return(_audioService.RemoveFromPlaylist(checkTokenResult.AuthToken.UserId, request)); }
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(); })); }