Files
scrum-poker-internal/app/Http/Controllers/RoundController.php
T

53 lines
1.3 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Player;
use App\Models\Room;
use App\Services\Rooms\RoundService;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class RoundController extends Controller
{
public function __construct(
private readonly RoundService $rounds,
) {}
public function reset(Request $request, Room $room): Response
{
$this->ensureCanControlRound($request, $room);
$this->rounds->reset($room);
return response()->noContent();
}
public function reveal(Request $request, Room $room): Response
{
$this->ensureCanControlRound($request, $room);
$this->rounds->reveal($room);
return response()->noContent();
}
public function nextRound(Request $request, Room $room): Response
{
$this->ensureCanControlRound($request, $room);
$this->rounds->startNext($room);
return response()->noContent();
}
private function ensureCanControlRound(Request $request, Room $room): void
{
$player = $request->attributes->get('currentPlayer');
abort_unless(
$player instanceof Player
&& $player->room_id === $room->id
&& ($player->is_moderator || $room->allow_participant_controls),
403,
);
}
}