fix: refactored the codebase

This commit is contained in:
2026-08-20 23:00:47 +02:00
parent 6f47ed0674
commit a77f74911d
64 changed files with 2864 additions and 1739 deletions
+20
View File
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class ClosedRoomResource extends JsonResource
{
/**
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
return [
'title' => $this->resource->title,
'join_code' => $this->resource->join_code,
];
}
}
@@ -0,0 +1,27 @@
<?php
namespace App\Http\Resources;
use App\Data\Rooms\RoomPageData;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class CurrentPlayerResource extends JsonResource
{
/**
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
/** @var RoomPageData $pageData */
$pageData = $this->resource;
$player = $pageData->currentPlayer;
return [
'id' => $player->id,
'name' => $player->name,
'is_moderator' => $player->is_moderator,
'current_vote' => $pageData->currentVote,
];
}
}
@@ -0,0 +1,26 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class DashboardRoomResource extends JsonResource
{
/**
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
return [
'id' => $this->resource->id,
'title' => $this->resource->title,
'join_code' => $this->resource->join_code,
'current_round' => $this->resource->current_round,
'players_count' => $this->resource->players_count,
'active_player_count' => $this->resource->active_player_count,
'last_activity_at' => $this->resource->last_activity_at?->toIso8601String(),
'closed_at' => $this->resource->closed_at?->toIso8601String(),
];
}
}
+21
View File
@@ -0,0 +1,21 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class DeckResource extends JsonResource
{
/**
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
return [
'id' => $this->resource->id,
'name' => $this->resource->name,
'cards' => $this->resource->cards,
];
}
}
+23
View File
@@ -0,0 +1,23 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class PasskeyResource extends JsonResource
{
/**
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
return [
'id' => $this->resource->id,
'name' => $this->resource->name,
'authenticator' => $this->resource->authenticator,
'created_at_diff' => $this->resource->created_at->diffForHumans(),
'last_used_at_diff' => $this->resource->last_used_at?->diffForHumans(),
];
}
}
+20
View File
@@ -0,0 +1,20 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class RoomDeckResource extends JsonResource
{
/**
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
return [
'name' => $this->resource['name'],
'cards' => $this->resource['cards'],
];
}
}
+33
View File
@@ -0,0 +1,33 @@
<?php
namespace App\Http\Resources;
use App\Models\Player;
use App\Models\Room;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class RoomPlayerResource extends JsonResource
{
public function __construct(Player $resource, private readonly Room $room)
{
parent::__construct($resource);
}
/**
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
$vote = $this->resource->votes->first();
return [
'id' => $this->resource->id,
'name' => $this->resource->name,
'is_moderator' => $this->resource->is_moderator,
'is_owner' => $this->resource->user_id === $this->room->owner_id,
'has_voted' => $vote !== null,
'vote' => $this->room->revealed_at !== null ? $vote?->value : null,
];
}
}
+36
View File
@@ -0,0 +1,36 @@
<?php
namespace App\Http\Resources;
use App\Data\Rooms\RoomPageData;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class RoomResource extends JsonResource
{
/**
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
/** @var RoomPageData $pageData */
$pageData = $this->resource;
$room = $pageData->room;
return [
'id' => $room->id,
'title' => $room->title,
'join_code' => $room->join_code,
'owner_id' => $room->owner_id,
'is_favorite' => $pageData->isFavorite,
'current_round' => $room->current_round,
'revealed' => $room->revealed_at !== null,
'state_version' => $room->state_version,
'statistics' => $pageData->statistics,
'deck' => (new RoomDeckResource($room->deck_config))->resolve($request),
'players' => $room->players
->map(fn ($player) => (new RoomPlayerResource($player, $room))->resolve($request))
->all(),
];
}
}