PATH:
home
/
rwabteecom
/
project_11
/
app
/
Datatables
/
Editing: SocialsDatatables.php
<?php namespace App\Datatables; use App\Enums\StatusEnum; use App\Helpers\Switcher; use App\Interfaces\DatatableInterface; use App\Models\SocialIcon; use Illuminate\Http\Request; use LaravelLocalization; use Yajra\DataTables\Facades\DataTables; class SocialsDatatables implements DatatableInterface { public static function columns(): array { return [ "title" => ["title->" . LaravelLocalization::getCurrentLocale()], "icon", "status", "created_at", "updated_at", ]; } public function datatables(Request $request) { return Datatables::of($this->query($request)) ->addColumn("title", function (SocialIcon $page) { return $page->title; }) ->addColumn("icon", function (SocialIcon $page) { return '<i class="'. $page->icon .' fs-4"></i>'; }) ->addColumn("created_at", function (SocialIcon $page) { return $page->created_at->format("Y-m-d"); }) ->addColumn("updated_at", function (SocialIcon $page) { return $page->updated_at->format("Y-m-d"); }) ->addColumn("status", function (SocialIcon $page) { return (new Switcher()) ->model($page) ->modelId($page->id) ->checkStatus($page->status) ->make(! $page->trashed()); }) ->addColumn("actions", function (SocialIcon $page) { return (new DataTableActions()) ->edit(route("admin.socials.edit", $page->id), ! $page->trashed()) ->delete(route("admin.socials.destroy", $page->id), ! $page->trashed()) ->restore(route("admin.socials.restore", $page->id), $page->trashed()) ->make(); }) ->rawColumns(["actions", "status" , "icon"]) ->make(true); } public function query(Request $request) { return SocialIcon::query() ->when(request()->filled("status") && request()->status == StatusEnum::Active->value, function ($query) { $query->where("status", 1); }) ->when(request()->filled("status") && request()->status == StatusEnum::Disabled->value, function ($query) { $query->where("status", 0); }) ->when(request()->filled("status") && request()->status == StatusEnum::Trashed->value, function ($query) { $query->onlyTrashed(); }) ->latest() ->select("*"); } }
SAVE
CANCEL