Преглед изворни кода

get all users not in group

tags/0.1.0
Robin Thoni пре 8 година
родитељ
комит
632de4db57

+ 2
- 0
src/Auth/Business/LuticateBusiness.php Прегледај датотеку

@@ -83,6 +83,8 @@ class LuticateBusiness
83 83
 
84 84
         $route->get("$prefix/groups/$group_id/users/", "${ns}LuticateGroupsController", "getUsers",
85 85
             LuticatePermissions::GROUP_GET);
86
+        $route->get("$prefix/groups/$group_id/users/", "${ns}LuticateGroupsController", "getOtherUsers",
87
+            LuticatePermissions::GROUP_GET);
86 88
         $route->post("$prefix/groups/$group_id/users/$user_id/add", "${ns}LuticateGroupsController", "addUser",
87 89
             array(LuticatePermissions::GROUP_USER_ADD, LuticatePermissions::GROUP_GET));
88 90
         $route->post("$prefix/groups/$group_id/users/$user_id/del", "${ns}LuticateGroupsController", "delUser",

+ 5
- 0
src/Auth/Business/LuticateGroupsBusiness.php Прегледај датотеку

@@ -30,6 +30,11 @@ class LuticateGroupsBusiness extends LuBusiness {
30 30
         return LuticateGroupsDataAccess::getUsers($group_id, $page, $perPage, $query);
31 31
     }
32 32
 
33
+    public static function getOtherUsers($group_id, $page = 0, $perPage = PHP_INT_MAX, $query = "")
34
+    {
35
+        return LuticateGroupsDataAccess::getOtherUsers($group_id, $page, $perPage, $query);
36
+    }
37
+
33 38
     public static function getByName($group_name)
34 39
     {
35 40
         return LuticateGroupsDataAccess::getByName($group_name);

+ 7
- 8
src/Auth/Business/LuticatePermissionsGroupsBusiness.php Прегледај датотеку

@@ -23,15 +23,14 @@ class LuticatePermissionsGroupsBusiness extends LuBusiness {
23 23
 
24 24
     public static function getAllByGroup($group_id, $page = 0, $perPage = PHP_INT_MAX)
25 25
     {
26
-        $values = LuticatePermissionsGroupsDataAccess::getAllByGroup($group_id, $page, $perPage);
27
-        $dbos = [];
28
-        foreach ($values->getData() as $value) {
26
+        $users = LuticatePermissionsGroupsDataAccess::getAllByGroup($group_id, $page, $perPage);
27
+        return $users->map(function($user)
28
+        {
29 29
             $dbo = new LuticatePermissionsDbo();
30
-            $dbo->setValue($value->getValue());
31
-            $dbo->setName($value->getName());
32
-            $dbos[] = $dbo;
33
-        }
34
-        return new LuMultipleDbo($values->getCount(), $dbos);
30
+            $dbo->setValue($user->getValue());
31
+            $dbo->setName($user->getName());
32
+            return $dbo;
33
+        });
35 34
     }
36 35
 
37 36
     public static function get($group_id, $permission_name)

+ 13
- 0
src/Auth/Controller/LuticateGroupsController.php Прегледај датотеку

@@ -47,6 +47,19 @@ class LuticateGroupsController extends LuController {
47 47
         return LuticateGroupsBusiness::getUsers($group_id, $page, $perPage, $query);
48 48
     }
49 49
 
50
+    /**
51
+     * Get all users not in group
52
+     * @param $group_id int The group id
53
+     * @param int $page The page number, 0 based
54
+     * @param int $perPage The number of items per page
55
+     * @param string $query The filter query
56
+     * @return \Luticate\Utils\LuMultipleDbo
57
+     */
58
+    public function getOtherUsers($group_id, $page = 0, $perPage = PHP_INT_MAX, $query = "")
59
+    {
60
+        return LuticateGroupsBusiness::getOtherUsers($group_id, $page, $perPage, $query);
61
+    }
62
+
50 63
     /**
51 64
      * Add a new group
52 65
      * @param $group_name string The group name

+ 23
- 0
src/Auth/DataAccess/LuticateGroupsDataAccess.php Прегледај датотеку

@@ -36,6 +36,7 @@ class LuticateGroupsDataAccess extends LuDataAccess {
36 36
             return null;
37 37
         return $group->toDbo();
38 38
     }
39
+
39 40
     public static function getUsers($group_id, $page = 0, $perPage = PHP_INT_MAX, $query = "")
40 41
     {
41 42
         $model = LuticateUsers::/*where("luticate_users.username", "ilike", "%" . $query . "%")
@@ -58,6 +59,28 @@ class LuticateGroupsDataAccess extends LuDataAccess {
58 59
         return new LuMultipleDbo($count, $usersLight);
59 60
     }
60 61
 
62
+    public static function getOtherUsers($group_id, $page = 0, $perPage = PHP_INT_MAX, $query = "")
63
+    {
64
+        $model = LuticateUsers::/*where("luticate_users.username", "ilike", "%" . $query . "%")
65
+            ->where("luticate_users.email", "ilike", "%" . $query . "%", "or")
66
+            ->where("luticate_users.firstname", "ilike", "%" . $query . "%", "or")
67
+            ->where("luticate_users.lastname", "ilike", "%" . $query . "%", "or")
68
+            ->*/where("luticate_users_groups.group_id", "!=", $group_id, "and")
69
+            ->join("luticate_users_groups", "luticate_users.id", "=", "luticate_users_groups.user_id");
70
+
71
+        $count = $model->count();
72
+
73
+        $model = $model->orderBy("luticate_users.username", "ASC");
74
+        $data = $model->take($perPage)->offset($page * $perPage)->get();
75
+        $usersLight = [];
76
+        foreach ($data as $user) {
77
+            if (!is_null($user)) {
78
+                $usersLight[] = LuticateUsersLightDbo::fromUserDbo($user->toDbo());
79
+            }
80
+        }
81
+        return new LuMultipleDbo($count, $usersLight);
82
+    }
83
+
61 84
     public static function addUser($user_id, $group_id)
62 85
     {
63 86
         LuticateGroups::find($group_id)->users()->attach($user_id);

Loading…
Откажи
Сачувај