X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FHttp%2FControllers%2FAosSeedController.php;h=1e2aa73a91b637a07d223cacfa4fb3b729249d2e;hb=ca11676f7b9efab82f1cf014f9c34e4b961c0519;hp=9aea7488ba4a520d70d6a08d4a43c728cefa5d88;hpb=75b3b5826c781e47b3db693fa6d3d17f67c79e56;p=alttp.git diff --git a/app/Http/Controllers/AosSeedController.php b/app/Http/Controllers/AosSeedController.php index 9aea748..1e2aa73 100644 --- a/app/Http/Controllers/AosSeedController.php +++ b/app/Http/Controllers/AosSeedController.php @@ -2,8 +2,10 @@ namespace App\Http\Controllers; +use App\DiscordAppCommands\AosrPresetCommand; use App\Models\AosSeed; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Artisan; class AosSeedController extends Controller { @@ -12,13 +14,55 @@ class AosSeedController extends Controller $seed = AosSeed::where('hash', '=', $hash)->firstOrFail(); if ($seed->race) { - $seed->hide('seed'); + $seed->makeHidden('seed'); } if ($seed->mystery) { - $seed->hide('settings'); + $seed->makeHidden('settings'); } return $seed->toJson(); } + public function generate(Request $request) { + $validatedData = $request->validate([ + 'preset' => 'string|required', + 'race' => 'boolean', + ]); + $presetName = $validatedData['preset']; + $race = $validatedData['race'] ?? false; + + if (!isset(AosrPresetCommand::$presets[$presetName])) { + abort(404); + } + $preset = AosrPresetCommand::$presets[$presetName]; + $seed = AosSeed::generateSurge($presetName, $preset['settings'], $race); + Artisan::call('aos:generate '.intval($seed->id)); + + $seed = $this->censor($seed->fresh()); + return $seed->toJson(); + } + + public function retry($hash) { + $seed = AosSeed::where('hash', '=', $hash)->firstOrFail(); + + if ($seed->status == 'error') { + $seed->status = 'pending'; + $seed->save(); + Artisan::call('aos:generate '.intval($seed->id)); + } + + $seed = $this->censor($seed->fresh()); + return $seed->toJson(); + } + + private function censor(AosSeed $seed) { + if ($seed->race) { + $seed->makeHidden('seed'); + } + if ($seed->mystery) { + $seed->makeHidden('settings'); + } + return $seed; + } + }