123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- <?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 = 2000000000, $query = "")
- {
- $model = LuticateUsers::/*where("luticate_users.username", "ilike", "%" . $query . "%")
- ->where("luticate_users.email", "ilike", "%" . $query . "%", "or")
- ->where("luticate_users.firstname", "ilike", "%" . $query . "%", "or")
- ->where("luticate_users.lastname", "ilike", "%" . $query . "%", "or")
- ->*/where("luticate_users_groups.group_id", "=", $group_id, "and")
- ->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));
- }
- }
|