Guest User

Untitled

a guest
Mar 16th, 2023
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.72 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Http\Livewire;
  4.  
  5. use Rappasoft\LaravelLivewireTables\DataTableComponent;
  6. use Rappasoft\LaravelLivewireTables\Views\Column;
  7. use App\Models\Post;
  8. use Exception;
  9. use Illuminate\Support\Carbon;
  10. use Rappasoft\LaravelLivewireTables\Views\Filters\MultiSelectFilter;
  11.  
  12. class PostTable extends DataTableComponent
  13. {
  14.     protected $model = Post::class;
  15.     public $selected_id;
  16.  
  17.  
  18.     public function configure(): void
  19.     {
  20.         $this->setPrimaryKey('id');
  21.         $this->setDefaultReorderSort('created_at', 'desc');
  22.         $this->setFiltersStatus(true);
  23.     }
  24.  
  25.     public function filters(): array
  26.     {
  27.         return [
  28.             MultiSelectFilter::make('Post')
  29.                 ->options(
  30.                     Post::query()
  31.                         ->orderBy('title')
  32.                         ->get()
  33.                         ->keyBy('id')
  34.                         ->map(fn($post) => $post->title)
  35.                         ->toArray()
  36.                 ),
  37.         ];
  38.     }
  39.  
  40.     public function columns(): array
  41.     {
  42.         return [
  43.             Column::make("Id", "id")
  44.                 ->sortable()->isHidden(),
  45.             Column::make('Title', 'title')
  46.                 ->sortable()
  47.                 ->searchable(),
  48.             Column::make('Kategori', 'getCategory.name')
  49.                 ->format(function($value, $column, $row) {
  50.                     return "<span class=\"badge bg-primary\">$value</span>";
  51.                 })->html(),
  52.             Column::make("Publish", "published_at")
  53.                 ->view('admin.posts.view.publish-date'),
  54.             Column::make("Author", "created_by")
  55.                 ->view('admin.posts.view.author'),
  56.             Column::make("Status", "status")
  57.                 ->view('admin.posts.view.status'),
  58.             Column::make("View", "counter")
  59.                 ->format(function($value, $column, $row) {
  60.                     return "<span class=\"text-primary fw-bold\">".number_format($value)."</span>";
  61.                 })->html(),
  62.             Column::make("Link Age", "counter")
  63.                 ->view('admin.posts.view.linkage'),
  64.             Column::make('Actions', 'id')
  65.                 ->view('admin.posts.view.action'),
  66.         ];
  67.     }
  68.  
  69.     public array $bulkActions = [
  70.         'confirmDeleteSelected' => 'Delete'
  71.     ];
  72.  
  73.     public function statusModal($id)
  74.     {
  75.         $this->selected_id = $id;
  76.         $this->dispatchBrowserEvent('openModalStatus');
  77.     }
  78.  
  79.     public function updateStatus(){
  80.         $data = Post::findOrFail($this->selected_id);
  81.         ($data->status == 1 ? $data->update(['status' => 0]) : $data->update(['status' => 1]));
  82.         $this->dispatchBrowserEvent('closeModalStatus');
  83.     }
  84.  
  85.     public function confirmDeleteSelected()
  86.     {
  87.         $this->selected_id = $this->getSelected();
  88.         $this->dispatchBrowserEvent('openModalDeleteSelected');
  89.     }
  90.  
  91.     public function deleteSelected()
  92.     {
  93.         try {
  94.             $posts = Post::whereIn('id', $this->selected_id)->delete();
  95.  
  96.             session()->flash('message', 'Berita berhasil dihapus.');
  97.             $this->dispatchBrowserEvent('closeModalDeleteSelected');
  98.  
  99.         } catch (Exception $e) {
  100.             session()->flash('message', $e->getMessage());
  101.             $this->dispatchBrowserEvent('closeModalDeleteSelected');
  102.         }
  103.  
  104.     }
  105.  
  106.     public function deleteModal($id)
  107.     {
  108.         $this->selected_id = $id;
  109.         $this->dispatchBrowserEvent('openModalDelete');
  110.     }
  111.  
  112.     public function deleteStatus(){
  113.         $data = Post::findOrFail($this->selected_id)->delete();
  114.         $this->dispatchBrowserEvent('closeModalDelete');
  115.     }
  116.  
  117.  
  118.     public function customView(): string
  119.     {
  120.         return 'admin.users.modal';
  121.     }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment