withCount('articles') ->latest() ->paginate($perPage); } public function activeOptions(): Collection { return QuickReply::query() ->where('is_active', true) ->orderBy('title') ->get(['id', 'title']); } public function create(string $title, string $content, bool $isActive = true): QuickReply { return QuickReply::query()->create([ 'title' => trim($title), 'content' => trim($content), 'is_active' => $isActive, ]); } public function update(int $id, string $title, string $content, bool $isActive): bool { $quickReply = QuickReply::query()->find($id); if ($quickReply === null) { return false; } $quickReply->update([ 'title' => trim($title), 'content' => trim($content), 'is_active' => $isActive, ]); return true; } public function deleteById(int $id): bool { return (bool) QuickReply::query()->whereKey($id)->delete(); } }