validatePayload($request); try { $payload = $this->interactions->toggleLike($request->user(), (string) $validated['content_type'], (int) $validated['content_id'], $request); } catch (InvalidArgumentException $exception) { return response()->json(['message' => $exception->getMessage()], 422); } return response()->json($payload); } public function save(Request $request): JsonResponse { abort_unless((bool) config('academy.enabled', true), 404); $validated = $this->validatePayload($request); try { $payload = $this->interactions->toggleSave($request->user(), (string) $validated['content_type'], (int) $validated['content_id'], $request); } catch (InvalidArgumentException $exception) { return response()->json(['message' => $exception->getMessage()], 422); } return response()->json($payload); } /** * @return array */ private function validatePayload(Request $request): array { return $request->validate([ 'content_type' => ['required', 'string', Rule::in([ AcademyAnalyticsContentType::PROMPT, AcademyAnalyticsContentType::LESSON, AcademyAnalyticsContentType::COURSE, AcademyAnalyticsContentType::PROMPT_PACK, AcademyAnalyticsContentType::CHALLENGE, ])], 'content_id' => ['required', 'integer', 'min:1'], ]); } }