diff --git a/src/Controllers/Users/PermissionController.php b/src/Controllers/Users/PermissionController.php index 00e32ad..6818402 100644 --- a/src/Controllers/Users/PermissionController.php +++ b/src/Controllers/Users/PermissionController.php @@ -32,12 +32,19 @@ public function __construct() public function index() { if ($this->request->isAJAX()) { + $columns = [ + 1 => 'name', + 2 => 'description', + ]; + $start = $this->request->getGet('start'); $length = $this->request->getGet('length'); $search = $this->request->getGet('search[value]'); + $order = $columns[$this->request->getGet('order[0][column]')]; + $dir = $this->request->getGet('order[0][dir]'); return $this->respond(Collection::datatable( - model(PermissionModel::class)->findPaginatedData($length, $start, $search), + model(PermissionModel::class)->findPaginatedData($order, $dir, $length, $start, $search), model(PermissionModel::class)->countAllResults(), model(PermissionModel::class)->countFindData($search) )); diff --git a/src/Controllers/Users/RoleController.php b/src/Controllers/Users/RoleController.php index 9d99fd8..b8dae88 100644 --- a/src/Controllers/Users/RoleController.php +++ b/src/Controllers/Users/RoleController.php @@ -22,12 +22,19 @@ class RoleController extends BaseController public function index() { if ($this->request->isAJAX()) { + $columns = [ + 1 => 'name', + 2 => 'description', + ]; + $start = $this->request->getGet('start'); $length = $this->request->getGet('length'); $search = $this->request->getGet('search[value]'); + $order = $columns[$this->request->getGet('order[0][column]')]; + $dir = $this->request->getGet('order[0][dir]'); return $this->respond(Collection::datatable( - model(GroupModel::class)->findPaginatedData($length, $start, $search), + model(GroupModel::class)->findPaginatedData($order, $dir, $length, $start, $search), model(GroupModel::class)->countAllResults(), model(GroupModel::class)->countFindData($search) )); diff --git a/src/Controllers/Users/UserController.php b/src/Controllers/Users/UserController.php index 1a68b41..7f18f84 100644 --- a/src/Controllers/Users/UserController.php +++ b/src/Controllers/Users/UserController.php @@ -32,12 +32,20 @@ public function __construct() public function index() { if ($this->request->isAJAX()) { + $columns = [ + 1 => 'username', + 2 => 'email', + 5 => 'created_at', + ]; + $start = $this->request->getGet('start'); $length = $this->request->getGet('length'); $search = $this->request->getGet('search[value]'); + $order = $columns[$this->request->getGet('order[0][column]')]; + $dir = $this->request->getGet('order[0][dir]'); return $this->respond(Collection::datatable( - model(UserModel::class)->findPaginatedData($length, $start, $search), + model(UserModel::class)->findPaginatedData($order, $dir, $length, $start, $search), model(UserModel::class)->countAllResults(), model(UserModel::class)->countFindData($search) )); diff --git a/src/Models/GroupModel.php b/src/Models/GroupModel.php index 49b5e50..27e21c7 100644 --- a/src/Models/GroupModel.php +++ b/src/Models/GroupModel.php @@ -37,11 +37,13 @@ public function getGroupsForUser(int $userId) * * @param int $length * @param int $start + * @param string $order + * @param string $dir * @param string $keyword * * @return array */ - public function findPaginatedData(int $length, int $start, string $keyword = ''): array + public function findPaginatedData(string $order, string $dir, int $length, int $start, string $keyword = ''): array { return $this->builder() ->select('id, name, description') @@ -49,6 +51,7 @@ public function findPaginatedData(int $length, int $start, string $keyword = '') ->like('name', $keyword) ->orLike('description', $keyword) ->groupEnd() + ->orderBy($order, $dir) ->limit($length, $start) ->get() ->getResultObject(); diff --git a/src/Models/PermissionModel.php b/src/Models/PermissionModel.php index 5480a8a..783015b 100644 --- a/src/Models/PermissionModel.php +++ b/src/Models/PermissionModel.php @@ -11,11 +11,13 @@ class PermissionModel extends BaseModel * * @param int $length * @param int $start + * @param string $order + * @param string $dir * @param string $keyword * * @return array */ - public function findPaginatedData(int $length, int $start, string $keyword = ''): array + public function findPaginatedData(string $order, string $dir, int $length, int $start, string $keyword = ''): array { return $this->builder() ->select('id, name, description') @@ -23,6 +25,7 @@ public function findPaginatedData(int $length, int $start, string $keyword = '') ->like('name', $keyword) ->orLike('description', $keyword) ->groupEnd() + ->orderBy($order, $dir) ->limit($length, $start) ->get() ->getResultObject(); diff --git a/src/Models/UserModel.php b/src/Models/UserModel.php index c225835..827ea32 100644 --- a/src/Models/UserModel.php +++ b/src/Models/UserModel.php @@ -2,6 +2,7 @@ namespace agungsugiarto\boilerplate\Models; +use Myth\Auth\Entities\User; use Myth\Auth\Models\UserModel as BaseModel; class UserModel extends BaseModel @@ -11,22 +12,39 @@ class UserModel extends BaseModel * * @param int $length * @param int $start + * @param string $order + * @param string $dir * @param string $keyword * * @return array */ - public function findPaginatedData(int $length, int $start, string $keyword = ''): array + public function findPaginatedData(string $order, string $dir, int $length, int $start, string $keyword = ''): array { - return $this->builder() + $this->builder() ->select('id, username, email, active, created_at') ->groupStart() ->like('username', $keyword) ->orLike('email', $keyword) ->groupEnd() ->where('deleted_at', null) - ->limit($length, $start) - ->get() - ->getResultObject(); + ->orderBy($order, $dir) + ->limit($length, $start); + + $results = $this->asObject(User::class)->findAll(); + + foreach ($results as $result) { + $data[] = [ + 'id' => $result->id, + 'active' => $result->active, + 'username' => $result->username, + 'email' => $result->email, + 'created_at' => $result->created_at, + 'roles' => $result->getRoles(), + 'permissions' => $result->getPermissions(), + ]; + } + + return $data; } /** diff --git a/src/Views/Permission/create.php b/src/Views/Permission/create.php index b4050d4..4b02bf7 100644 --- a/src/Views/Permission/create.php +++ b/src/Views/Permission/create.php @@ -33,7 +33,7 @@