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
$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()) {
$result,
$request->user(),
);
- } else if ($result->wasChanged('comment')) {
+ DiscordBotCommand::queueResult($result);
+ } else if ($result->wasChanged(['comment', 'vod'])) {
Protocol::resultCommented(
$round->tournament,
$result,
$round->load('results');
$round->updatePlacement();
- $round->tournament->updatePlacement();
+ if ($round->tournament->hasScoreboard()) {
+ $round->tournament->updatePlacement();
+ }
+
+ $result->load('user');
return $result->toJson();
}