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
{
return $seed->toJson();
}
+ public function generate(Request $request) {
+ $validatedData = $request->validate([
+ 'preset' => 'string|required',
+ 'race' => 'boolean',
+ ]);
+ $presetName = $validatedData['preset'];
+ $race = $validatedData['race'] ?? false;
+
+ $preset = AosrPresetCommand::presetByName($presetName);
+ if (!$preset) {
+ abort(404);
+ }
+ $seed = AosSeed::generateSurge($preset['value'], $preset['settings'], $race);
+ Artisan::call('aos:generate '.intval($seed->id));
+
+ $seed = $this->censor($seed->fresh());
+ return $seed->toJson();
+ }
+
+ public function presets() {
+ return array_values(AosrPresetCommand::$presets);
+ }
+
+ 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;
+ }
+
}