PATH:
home
/
rwabteecom
/
project_11
/
app
/
Datatables
/
Editing: StaffDatatables.php
<?php namespace App\Datatables; use App\Enums\StatusEnum; use App\Helpers\Switcher; use App\Interfaces\DatatableInterface; use App\Models\Admin; use Illuminate\Http\Request; use Yajra\DataTables\Facades\DataTables; class StaffDatatables implements DatatableInterface { public static function columns(): array { return [ "name", "username", "email", "status", "created_at", ]; } public function datatables(Request $request) { return Datatables::of($this->query($request)) ->addColumn("created_at", function (Admin $admin) { return $admin->created_at->format("Y-m-d"); }) ->addColumn("status", function (Admin $admin) { return (new Switcher()) ->model($admin) ->modelId($admin->id) ->column("status") ->checkStatus($admin->status) ->make(! $admin->trashed()); }) ->addColumn("actions", function (Admin $admin) { return (new DataTableActions()) ->edit(route("admin.staff.edit", $admin->id), !$admin->trashed()) ->delete(route("admin.staff.destroy", $admin->id), !$admin->trashed()) ->restore(route("admin.staff.restore", $admin->id), $admin->trashed()) ->make(); }) ->rawColumns(["actions", "status"]) ->make(true); } public function query(Request $request) { return Admin::query() ->where("id", "!=", 1) ->latest() ->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(); }) ->select("admins.*"); } }
SAVE
CANCEL