where('user_id', Auth::user()->id) ->get(); $user = User::where('slug', $slug)->first(); return view('profile.lists.index', compact('lists', 'user')); } public function show(string $userSlug, string $listSlug) { $user = User::where('slug', $userSlug)->first(); $list = MediaList::where('user_id', $user->id)->where('slug', $listSlug)->first(); $items = MediaListItem::with('item')->where('media_list_id', $list->id)->paginate(15); return view('profile.lists.show', compact('list', 'items', 'user')); } public function create(string $userSlug) { $user = Auth::user(); return view('profile.lists.create', compact('user')); } public function store(MediaListRequest $request) { $slug = Str::slug($request->get('name')); $mediaList = MediaList::create([ 'description' => $request->get('description'), 'name' => $request->get('name'), 'slug' => $slug, 'user_id' => Auth::user()->id, ]); return redirect()->route('profile.list.show', [Auth::user()->slug, $slug]); } public function toggleListItem(string $listSlug, int $itemId, string $itemType) { $mediaList = MediaList::where('slug', $listSlug) ->where('user_id', Auth::user()->id) ->first(); if ($itemType == 'movie') { $item = Movie::find($itemId); } else { $item = Show::find($itemId); } if (!$item) { return response()->json([ 'success' => false ]); } $mediaListItem = MediaListItem::where('media_list_id', $mediaList->id) ->where('item_id', $itemId) ->where('item_type', $itemType) ->first(); if ($mediaListItem) { $mediaListItem->delete(); return response()->json([ 'success' => true, 'added' => false, ]); } MediaListItem::create([ 'media_list_id' => $mediaList->id, 'item_id' => $itemId, 'item_type' => $itemType, 'tmdb_id' => $item->tmdb_id, ]); return response()->json([ 'success' => true, 'added' => true, ]); } }