Update
This commit is contained in:
@@ -2,12 +2,74 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Helpers\FirstParty\Credits\CreditsService;
|
||||
use App\Helpers\FirstParty\Meme\MemeGenerator;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Category;
|
||||
use Auth;
|
||||
|
||||
class UserAIController extends Controller
|
||||
{
|
||||
public function generateMeme(Request $request)
|
||||
{
|
||||
$user = Auth::user();
|
||||
|
||||
|
||||
if (!CreditsService::canSpend($user->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()
|
||||
{
|
||||
// TODO: Take 5 Category where meme_angles is not null, and return a random one from the array
|
||||
$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
|
||||
]
|
||||
]
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user