]> git.localhorst.tv Git - alttp.git/blobdiff - app/Http/Controllers/TournamentController.php
tournament settings
[alttp.git] / app / Http / Controllers / TournamentController.php
index 9d62c23bac3475f2becac58caca85296756c68bc..e2fbe941a31b6b2b705b1e35c69724e495351191 100644 (file)
@@ -3,7 +3,9 @@
 namespace App\Http\Controllers;
 
 use App\Events\ApplicationAdded;
+use App\Events\TournamentChanged;
 use App\Models\Application;
+use App\Models\Protocol;
 use App\Models\Tournament;
 use Illuminate\Auth\Access\AuthorizationException;
 use Illuminate\Http\Request;
@@ -18,6 +20,7 @@ class TournamentController extends Controller
                $application->user_id = $request->user()->id;
                $application->save();
                ApplicationAdded::dispatch($application);
+               Protocol::applicationReceived($tournament, $application, $request->user());
                return $tournament->toJson();
        }
 
@@ -41,4 +44,72 @@ class TournamentController extends Controller
                return $tournament->toJson();
        }
 
+       public function discord(Request $request, Tournament $tournament) {
+               $this->authorize('update', $tournament);
+               $validatedData = $request->validate([
+                       'guild_id' => 'string|nullable',
+               ]);
+               if (array_key_exists('guild_id', $validatedData)) {
+                       $tournament->discord = $validatedData['guild_id'];
+               }
+               $tournament->save();
+               if ($tournament->wasChanged()) {
+                       TournamentChanged::dispatch($tournament);
+                       Protocol::tournamentDiscord($tournament, $request->user());
+               }
+               return $tournament->toJson();
+       }
+
+       public function discordSettings(Request $request, Tournament $tournament) {
+               $this->authorize('update', $tournament);
+               $validatedData = $request->validate([
+                       'round_template' => 'string|nullable',
+               ]);
+               if (array_key_exists('round_template', $validatedData)) {
+                       $tournament->discord_round_template = $validatedData['round_template'];
+               }
+               $tournament->save();
+               if ($tournament->wasChanged()) {
+                       TournamentChanged::dispatch($tournament);
+                       Protocol::tournamentDiscordSettings($tournament, $request->user());
+               }
+               return $tournament->toJson();
+       }
+
+       public function open(Request $request, Tournament $tournament) {
+               $this->authorize('update', $tournament);
+               $tournament->accept_applications = true;
+               $tournament->save();
+               TournamentChanged::dispatch($tournament);
+               Protocol::tournamentOpenen($tournament, $request->user());
+               return $tournament->toJson();
+       }
+
+       public function close(Request $request, Tournament $tournament) {
+               $this->authorize('update', $tournament);
+               $tournament->accept_applications = false;
+               $tournament->save();
+               TournamentChanged::dispatch($tournament);
+               Protocol::tournamentClosed($tournament, $request->user());
+               return $tournament->toJson();
+       }
+
+       public function lock(Request $request, Tournament $tournament) {
+               $this->authorize('update', $tournament);
+               $tournament->locked = true;
+               $tournament->save();
+               TournamentChanged::dispatch($tournament);
+               Protocol::tournamentLocked($tournament, $request->user());
+               return $tournament->toJson();
+       }
+
+       public function unlock(Request $request, Tournament $tournament) {
+               $this->authorize('update', $tournament);
+               $tournament->locked = false;
+               $tournament->save();
+               TournamentChanged::dispatch($tournament);
+               Protocol::tournamentUnlocked($tournament, $request->user());
+               return $tournament->toJson();
+       }
+
 }