si-klinik/sk-klinik.my.id/app/Livewire/Admin/News.php

55 lines
1.2 KiB
PHP

<?php
namespace App\Livewire\Admin;
use App\Models\News as NewsModel;
use Livewire\Component;
use Livewire\WithPagination;
use Masmerise\Toaster\Toaster;
use Illuminate\Support\Facades\Storage;
class News extends Component
{
use WithPagination;
public $search = '';
// Reset halaman jika pencarian berubah
public function updatedSearch()
{
$this->resetPage();
}
public function togglePublish($id)
{
$news = NewsModel::findOrFail($id);
$news->is_published = !$news->is_published;
$news->save();
Toaster::info('Status publikasi berhasil diubah.');
}
public function delete($id)
{
$news = NewsModel::findOrFail($id);
// Hapus file fisik gambar jika ada
if ($news->image) {
Storage::disk('public')->delete($news->image);
}
$news->delete();
Toaster::error('Berita telah dihapus permanen.');
}
public function render()
{
return view('livewire.admin.news.news', [
'news' => NewsModel::with('category')
->where('title', 'like', '%' . $this->search . '%')
->latest()
->paginate(10)
]);
}
}