neoban/backend/app/Actions/Chats/GetUserChatsAction.php
kushal-saha 7f80d661bd feature: add chat search
- first check if the chat is available locally, if not then hit the server
2026-05-05 09:15:22 +00:00

23 lines
646 B
PHP

<?php
namespace App\Actions\Chats;
use App\Data\Chats\ChatResponseDto;
use App\Models\User;
use Illuminate\Pagination\AbstractPaginator;
use Illuminate\Pagination\LengthAwarePaginator;
final readonly class GetUserChatsAction
{
public function chats(User $user, ?string $searchKeyword = null): LengthAwarePaginator|AbstractPaginator
{
$chats = $user->chats()->getQuery();
if ($searchKeyword) {
$chats = $chats->where('title', 'LIKE', "%{$searchKeyword}%");
}
$results = $chats->latest()->paginate();
return $results->through(fn ($chat) => ChatResponseDto::fromModel($chat));
}
}