tab = $tab; $this->search = ''; $this->resetPage(); } public function updatedSearch(): void { $this->resetPage(); } public function approve(int $routeArticleId): void { RouteArticle::findOrFail($routeArticleId)->approve(); } public function reject(int $routeArticleId): void { RouteArticle::findOrFail($routeArticleId)->reject(); } public function restore(int $routeArticleId): void { $routeArticle = RouteArticle::findOrFail($routeArticleId); $routeArticle->update(['approval_status' => ApprovalStatusEnum::PENDING]); } public function clear(): void { RouteArticle::where('approval_status', ApprovalStatusEnum::PENDING) ->update(['approval_status' => ApprovalStatusEnum::REJECTED]); } public function refresh(): void { $this->isRefreshing = true; ArticleDiscoveryJob::dispatch(); $this->dispatch('refresh-started'); } public function render(): \Illuminate\Contracts\View\View { $query = RouteArticle::with(['article.feed', 'feed', 'platformChannel']) ->orderBy('created_at', 'desc'); if ($this->tab === 'pending') { $query->where('approval_status', ApprovalStatusEnum::PENDING); } elseif ($this->search !== '') { $search = $this->search; $query->whereHas('article', function ($q) use ($search) { $q->where('title', 'like', "%{$search}%") ->orWhere('description', 'like', "%{$search}%"); }); } $routeArticles = $query->paginate(15); $pendingCount = RouteArticle::where('approval_status', ApprovalStatusEnum::PENDING)->count(); return view('livewire.articles', [ 'routeArticles' => $routeArticles, 'pendingCount' => $pendingCount, ])->layout('layouts.app'); } }