Files
scrum-poker-internal/app/Services/Rooms/DashboardRoomService.php
T
Twyco 4dfe79ce5c
CI/CD / test_and_check_app (push) Successful in 2m19s
CI/CD / Publish immutable image (push) Successful in 1m16s
kick forever
2026-09-24 14:38:18 +02:00

42 lines
1.1 KiB
PHP

<?php
namespace App\Services\Rooms;
use App\Models\Room;
use App\Models\User;
use Illuminate\Database\Eloquent\Collection;
class DashboardRoomService
{
/**
* @return array{owned: Collection<int, Room>, favorites: Collection<int, Room>}
*/
public function forUser(User $user): array
{
$ownedRooms = $user
->ownedRooms()
->with([
'players' => fn ($query) => $query
->select(['id', 'room_id', 'user_id', 'name', 'is_moderator', 'created_at'])
->orderByDesc('is_moderator')
->orderBy('created_at'),
])
->withCount('players')
->orderByRaw('closed_at IS NOT NULL')
->orderByDesc('last_activity_at')
->get();
$favoriteRooms = $user
->favoriteRooms()
->withCount('players')
->orderByRaw('closed_at IS NOT NULL')
->orderByDesc('last_activity_at')
->get();
return [
'owned' => $ownedRooms,
'favorites' => $favoriteRooms,
];
}
}