mirror of
https://github.com/ericasch6/scrum-poker-internal.git
synced 2026-10-13 18:12:09 +00:00
53 lines
1.3 KiB
PHP
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->ensureCanManageRounds($request, $room);
|
|
$this->rounds->reset($room);
|
|
|
|
return response()->noContent();
|
|
}
|
|
|
|
public function reveal(Request $request, Room $room): Response
|
|
{
|
|
$this->ensureCanManageRounds($request, $room);
|
|
$this->rounds->reveal($room);
|
|
|
|
return response()->noContent();
|
|
}
|
|
|
|
public function nextRound(Request $request, Room $room): Response
|
|
{
|
|
$this->ensureCanManageRounds($request, $room);
|
|
$this->rounds->startNext($room);
|
|
|
|
return response()->noContent();
|
|
}
|
|
|
|
private function ensureCanManageRounds(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_participants_to_manage_rounds),
|
|
403,
|
|
);
|
|
}
|
|
}
|