]> git.localhorst.tv Git - alttp.git/blobdiff - app/Http/Controllers/ResultController.php
chat bot protocol ui
[alttp.git] / app / Http / Controllers / ResultController.php
index 8698e19838aef615ee45b3ec5f4579ba58bb88d1..ba57c4b0759f45c33b0bb72fe776ec02cc65a5c7 100644 (file)
@@ -4,10 +4,10 @@ namespace App\Http\Controllers;
 
 use App\Events\ResultChanged;
 use App\Models\DiscordBotCommand;
-use App\Models\Participant;
 use App\Models\Protocol;
 use App\Models\Result;
 use App\Models\Round;
+use App\Models\User;
 use Illuminate\Http\Request;
 
 class ResultController extends Controller
@@ -17,28 +17,28 @@ class ResultController extends Controller
                $validatedData = $request->validate([
                        'comment' => 'string',
                        'forfeit' => 'boolean',
-                       'participant_id' => 'required|exists:App\\Models\\Participant,id',
                        'round_id' => 'required|exists:App\\Models\\Round,id',
                        'time' => 'numeric',
+                       'user_id' => 'required|exists:App\\Models\\User,id',
+                       'vod' => 'string|url',
                ]);
 
-               $participant = Participant::findOrFail($validatedData['participant_id']);
                $round = Round::findOrFail($validatedData['round_id']);
 
-               $user = $request->user();
-               if ($user->id != $participant->user->id) {
+               if ($validatedData['user_id'] != $request->user()->id) {
                        $this->authorize('create', Result::class);
                }
 
                $result = Result::firstOrCreate([
                        'round_id' => $validatedData['round_id'],
-                       'user_id' => $participant->user_id,
+                       'user_id' => $validatedData['user_id'],
                ]);
                if (!$round->locked) {
                        if (isset($validatedData['forfeit'])) $result->forfeit = $validatedData['forfeit'];
                        if (isset($validatedData['time'])) $result->time = $validatedData['time'];
                }
-               $result->comment = $validatedData['comment'] ? $validatedData['comment'] : null;
+               $result->comment = !empty($validatedData['comment']) ? $validatedData['comment'] : null;
+               $result->vod = !empty($validatedData['vod']) ? $validatedData['vod'] : null;
                $result->save();
 
                if ($result->wasChanged()) {
@@ -52,7 +52,7 @@ class ResultController extends Controller
                                $request->user(),
                        );
                        DiscordBotCommand::queueResult($result);
-               } else if ($result->wasChanged('comment')) {
+               } else if ($result->wasChanged(['comment', 'vod'])) {
                        Protocol::resultCommented(
                                $round->tournament,
                                $result,
@@ -62,7 +62,11 @@ class ResultController extends Controller
 
                $round->load('results');
                $round->updatePlacement();
-               $round->tournament->updatePlacement();
+               if ($round->tournament->hasScoreboard()) {
+                       $round->tournament->updatePlacement();
+               }
+
+               $result->load('user');
 
                return $result->toJson();
        }