23 lines
646 B
PHP
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));
|
|
}
|
|
}
|