id, 2)) { return response()->json([ 'error' => [ 'message' => 'You do not have enough credits to generate a meme. Please purchase credits from the Store.', ], ]); } CreditsService::spend($user->id, 2); $meme = MemeGenerator::generateMemeByKeyword($request->prompt); $meme_media = MemeGenerator::getSuitableMemeMedia($meme, 2); return response()->json([ 'success' => [ 'data' => [ 'generate' => [ 'info' => $meme, 'caption' => $meme->caption, 'meme' => $meme_media, 'background' => $meme->background_media, ], ], ], ]); } public function aiHints() { $categories = Category::whereNotNull('keywords') ->inRandomOrder() ->take(8) ->get(); if ($categories->isEmpty()) { return response()->json([ 'success' => [ 'data' => [ 'keywords' => [] ] ] ]); } $keywords = $categories->map(function ($category) { return collect($category->keywords)->random(); })->toArray(); return response()->json([ 'success' => [ 'data' => [ 'keywords' => $keywords ] ] ]); } }