public async Task <IActionResult> AssignOrRemoveVideo([FromBody] PlaylistVideoRequest model) { var result = await _playlistsService.AssignOrRemoveVideoFromPlaylistAsync(model); if (result.IsSuccess) { return(Ok(result)); } return(BadRequest(result)); }
public async Task <OperationResponse <VideoDetail> > AssignOrRemoveVideoFromPlaylistAsync(PlaylistVideoRequest request) { var video = await _unitOfWork.Videos.GetByIdAsync(request.VideoId); if (video == null) { return new OperationResponse <VideoDetail> { IsSuccess = false, Message = "Playlist video request. Video cannot be found" } } ; var playlist = await _unitOfWork.Playlists.GetByIdAsync(request.PlaylistId); if (playlist == null) { return new OperationResponse <VideoDetail> { IsSuccess = false, Message = "Playlist video request. Playlist cannot be found" } } ; //var playlistVideos = _unitOfWork.Playlists.GetAllVideosInPlaylist(request.PlaylistId); var playlistVideo = playlist.PlaylistVideos.SingleOrDefault(pv => pv.VideoID == request.VideoId); string message = string.Empty; if (playlistVideo != null) { //remove _unitOfWork.Playlists.RemoveVideoFromPlaylist(playlistVideo); message = "Video has been removed from the playlist"; } else { //add await _unitOfWork.Playlists.AddVideoToPlaylistAsync(new PlaylistVideo { Playlist = playlist, Video = video }); await _unitOfWork.CommitChangesAsync(_identity.UserID); message = "Video has been ADDED to the playlist"; } await _unitOfWork.CommitChangesAsync(_identity.UserID); return(new OperationResponse <VideoDetail> { IsSuccess = true, Message = message }); }