76 lines
1.9 KiB
PHP
76 lines
1.9 KiB
PHP
<?php
|
|
|
|
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()
|
|
{
|
|
$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
|
|
]
|
|
]
|
|
]);
|
|
}
|
|
}
|