12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
-
- namespace Luticate\Auth\DataAccess;
-
- use Luticate\Auth\DataAccess\Models\LuticateUsers;
- use Luticate\Auth\DBO\LuticateUsersLightDbo;
- use Luticate\Utils\LuDataAccess;
- use Luticate\Auth\DataAccess\Models\LuticateGroups;
- use Luticate\Auth\DBO\LuticateGroupsDbo;
- use Luticate\Utils\LuMultipleDbo;
-
- class LuticateGroupsDataAccess extends LuDataAccess {
- protected static function getModel()
- {
- return new LuticateGroups();
- }
-
- protected static function getOrderBy()
- {
- return array(array("name", "ASC"));
- }
-
- protected static function getQueryPredicate($query)
- {
- return array(array("name", "ilike", "%" . $query . "%", "or"));
- }
-
- /**
- * @param $group_name
- * @return LuticateGroupsDbo|null
- */
- public static function getByName($group_name)
- {
- $group = LuticateGroups::where("name", "=", $group_name)->first();
- if (is_null($group))
- return null;
- return $group->toDbo();
- }
- public static function getUsers($group_id, $page = 0, $perPage = PHP_INT_MAX, $query = "")
- {
- $model = LuticateUsers::where("luticate_users_groups.group_id", "=", $group_id);
- if (!is_null($query) && $query != "") {
- $model->where("luticate_users.username", "ilike", "%" . $query . "%")
- ->where("luticate_users.email", "ilike", "%" . $query . "%")
- ->where("luticate_users.firstname", "ilike", "%" . $query . "%")
- ->where("luticate_users.lastname", "ilike", "%" . $query . "%");
- }
- $model->join("luticate_users_groups", "luticate_users.id", "=", "luticate_users_groups.user_id");
-
- $count = $model->count();
-
- $model = $model->orderBy("luticate_users.username", "ASC");
- $data = $model->take($perPage)->offset($page * $perPage)->get();
- $usersLight = [];
- foreach ($data as $user) {
- if (!is_null($user)) {
- $usersLight[] = LuticateUsersLightDbo::fromUserDbo($user->toDbo());
- }
- }
- return new LuMultipleDbo($count, $usersLight);
- }
-
- public static function addUser($user_id, $group_id)
- {
- LuticateGroups::find($group_id)->users()->attach($user_id);
- return true;
- }
-
- public static function delUser($user_id, $group_id)
- {
- LuticateGroups::find($group_id)->users()->detach($user_id);
- return true;
- }
-
- public static function hasUser($user_id, $group_id)
- {
- return !is_null(LuticateGroups::find($group_id)->users()->find($user_id));
- }
- }
|