namespace App\Http\Controllers;
+use App\Events\RoundAdded;
+use App\Events\RoundChanged;
+use App\Models\Protocol;
use App\Models\Round;
use App\Models\Tournament;
use Illuminate\Http\Request;
$tournament = Tournament::findOrFail($validatedData['tournament_id']);
$this->authorize('addRound', $tournament);
+ $tournament->loadMax('rounds', 'number');
+
$round = Round::create([
+ 'game' => $tournament->game,
+ 'number' => intval($tournament->rounds_max_number) + 1,
+ 'no_record' => $tournament->no_record,
'tournament_id' => $validatedData['tournament_id'],
]);
+ Protocol::roundAdded(
+ $tournament,
+ $round,
+ $request->user(),
+ );
+
+ RoundAdded::dispatch($round);
+
+ return $round->toJson();
+ }
+
+ public function setSeed(Request $request, Round $round) {
+ $this->authorize('setSeed', $round);
+
+ $validatedData = $request->validate([
+ 'seed' => 'required|url',
+ ]);
+
+ $round->seed = $validatedData['seed'];
+ $round->update();
+
+ Protocol::roundSeedSet(
+ $round->tournament,
+ $round,
+ $request->user(),
+ );
+
+ RoundChanged::dispatch($round);
+
+ $round->load(['results', 'results.user']);
+
+ return $round->toJson();
+ }
+
+ public function lock(Request $request, Round $round) {
+ $this->authorize('lock', $round);
+
+ $round->locked = true;
+ $round->update();
+
+ Protocol::roundLocked(
+ $round->tournament,
+ $round,
+ $request->user(),
+ );
+
+ RoundChanged::dispatch($round);
+
+ $round->load(['results', 'results.user']);
+
+ return $round->toJson();
+ }
+
+ public function unlock(Request $request, Round $round) {
+ $this->authorize('unlock', $round);
+
+ $round->locked = false;
+ $round->update();
+
+ Protocol::roundUnlocked(
+ $round->tournament,
+ $round,
+ $request->user(),
+ );
+
+ RoundChanged::dispatch($round);
+
+ $round->load(['results', 'results.user']);
+
return $round->toJson();
}