diff --git a/src/Sprunje/UserSprunje.php b/src/Sprunje/UserSprunje.php index 4f18e01..674c07e 100644 --- a/src/Sprunje/UserSprunje.php +++ b/src/Sprunje/UserSprunje.php @@ -32,6 +32,7 @@ class UserSprunje extends UFUserSprunje protected $sortable = [ 'name', + 'organisations', 'last_activity', 'status', ]; @@ -57,6 +58,7 @@ class UserSprunje extends UFUserSprunje */ protected function sortOrganisations($query, $direction) { + $query = $query->addSelect('organisations.name'); $query->orderBy('organisations.name', $direction); return $this; @@ -84,6 +86,56 @@ class UserSprunje extends UFUserSprunje return $this; } + /** + * Sort based on last activity time. + * + * @param Builder $query + * @param string $direction + * + * @return self + */ + protected function sortLastActivity($query, $direction) + { + $query = $query->addSelect('activities.occurred_at'); + $query->orderBy('activities.occurred_at', $direction); + + return $this; + } + + /** + * Sort based on last name. + * + * @param Builder $query + * @param string $direction + * + * @return self + */ + protected function sortName($query, $direction) + { + $query = $query->addSelect('last_name'); + $query = $query->addSelect('first_name'); + $query->orderBy('last_name', $direction)->orderBy('first_name', $direction); + + return $this; + } + + /** + * Sort active, unactivated, disabled. + * + * @param Builder $query + * @param string $direction + * + * @return self + */ + protected function sortStatus($query, $direction) + { + $query = $query->addSelect('flag_enabled'); + $query = $query->addSelect('flag_verified'); + $query->orderBy('flag_enabled', $direction)->orderBy('flag_verified', $direction); + + return $this; + } + /** * Get the unpaginated count of items (before filtering) in this query. *