]> git.localhorst.tv Git - alttp.git/blobdiff - app/Http/Controllers/ResultController.php
fix see-result permission
[alttp.git] / app / Http / Controllers / ResultController.php
index ab1759d6faaf1bf97fb9c0d5d2c51014a8935d3a..57f78a157f2d1537cebc3bee96626cd629271a12 100644 (file)
@@ -3,10 +3,11 @@
 namespace App\Http\Controllers;
 
 use App\Events\ResultChanged;
-use App\Models\Participant;
+use App\Models\DiscordBotCommand;
 use App\Models\Protocol;
 use App\Models\Result;
 use App\Models\Round;
+use App\Models\User;
 use Illuminate\Http\Request;
 
 class ResultController extends Controller
@@ -16,22 +17,20 @@ 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',
                ]);
 
-               $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'];
@@ -50,6 +49,7 @@ class ResultController extends Controller
                                $result,
                                $request->user(),
                        );
+                       DiscordBotCommand::queueResult($result);
                } else if ($result->wasChanged('comment')) {
                        Protocol::resultCommented(
                                $round->tournament,
@@ -60,7 +60,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();
        }