Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Http\Livewire;
- use Rappasoft\LaravelLivewireTables\DataTableComponent;
- use Rappasoft\LaravelLivewireTables\Views\Column;
- use App\Models\Post;
- use Exception;
- use Illuminate\Support\Carbon;
- use Rappasoft\LaravelLivewireTables\Views\Filters\MultiSelectFilter;
- class PostTable extends DataTableComponent
- {
- protected $model = Post::class;
- public $selected_id;
- public function configure(): void
- {
- $this->setPrimaryKey('id');
- $this->setDefaultReorderSort('created_at', 'desc');
- $this->setFiltersStatus(true);
- }
- public function filters(): array
- {
- return [
- MultiSelectFilter::make('Post')
- ->options(
- Post::query()
- ->orderBy('title')
- ->get()
- ->keyBy('id')
- ->map(fn($post) => $post->title)
- ->toArray()
- ),
- ];
- }
- public function columns(): array
- {
- return [
- Column::make("Id", "id")
- ->sortable()->isHidden(),
- Column::make('Title', 'title')
- ->sortable()
- ->searchable(),
- Column::make('Kategori', 'getCategory.name')
- ->format(function($value, $column, $row) {
- return "<span class=\"badge bg-primary\">$value</span>";
- })->html(),
- Column::make("Publish", "published_at")
- ->view('admin.posts.view.publish-date'),
- Column::make("Author", "created_by")
- ->view('admin.posts.view.author'),
- Column::make("Status", "status")
- ->view('admin.posts.view.status'),
- Column::make("View", "counter")
- ->format(function($value, $column, $row) {
- return "<span class=\"text-primary fw-bold\">".number_format($value)."</span>";
- })->html(),
- Column::make("Link Age", "counter")
- ->view('admin.posts.view.linkage'),
- Column::make('Actions', 'id')
- ->view('admin.posts.view.action'),
- ];
- }
- public array $bulkActions = [
- 'confirmDeleteSelected' => 'Delete'
- ];
- public function statusModal($id)
- {
- $this->selected_id = $id;
- $this->dispatchBrowserEvent('openModalStatus');
- }
- public function updateStatus(){
- $data = Post::findOrFail($this->selected_id);
- ($data->status == 1 ? $data->update(['status' => 0]) : $data->update(['status' => 1]));
- $this->dispatchBrowserEvent('closeModalStatus');
- }
- public function confirmDeleteSelected()
- {
- $this->selected_id = $this->getSelected();
- $this->dispatchBrowserEvent('openModalDeleteSelected');
- }
- public function deleteSelected()
- {
- try {
- $posts = Post::whereIn('id', $this->selected_id)->delete();
- session()->flash('message', 'Berita berhasil dihapus.');
- $this->dispatchBrowserEvent('closeModalDeleteSelected');
- } catch (Exception $e) {
- session()->flash('message', $e->getMessage());
- $this->dispatchBrowserEvent('closeModalDeleteSelected');
- }
- }
- public function deleteModal($id)
- {
- $this->selected_id = $id;
- $this->dispatchBrowserEvent('openModalDelete');
- }
- public function deleteStatus(){
- $data = Post::findOrFail($this->selected_id)->delete();
- $this->dispatchBrowserEvent('closeModalDelete');
- }
- public function customView(): string
- {
- return 'admin.users.modal';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment