ok( AdminUserResource::make($user) ->gatherAllPermissions() ->onlyRolePermissionSlugs() ); } public function areaAdmin() { $areaAdmin = AdminUser::getAreaAdmin(); if (count($areaAdmin) !== 0) { $data = []; foreach ($areaAdmin as $v) { $data[] = [ 'id' => $v->id, 'name' => $v->name]; } } $administrator = AdminUser::getAAdmin(); foreach ($administrator as $v) { $data[] = [ 'id' => $v->id, 'name' => $v->name]; } return $this->ok($data); } public function editUser() { $user = Admin::user(); $user->load(['roles', 'permissions']); return $this->ok(AdminUserResource::make($user)); } public function updateUser(AdminUserProfileRequest $request) { $inputs = $request->validated(); Admin::user()->updateUser($inputs); return $this->callAction('user', [])->setStatusCode(201); } public function index(AdminUserFilter $filter) { $id = Admin::user()->id; if (Admin::isAdministrator()) { $users = AdminUser::query() ->filter($filter) ->where('type', AdminUser::TYPE_ADMIN) ->with(['roles', 'permissions', 'areas']) ->orderByDesc('id') ->paginate(); } elseif (Admin::isNormalAdministrator()) { $users = AdminUser::query() ->filter($filter) ->where('type', AdminUser::TYPE_ADMIN) ->where('id', '>', 1) ->where('id', '!=', $id) ->whereHas('roles', function ($q) { $q->where('slug', '!=', AdminRole::ADMINISTROTOR); }) ->with(['roles', 'permissions', 'areas']) ->orderByDesc('id') ->paginate(); } else { $users = AdminUser::query() ->filter($filter) ->where('type', AdminUser::TYPE_ADMIN) ->whereHas('roles', function ($q) { $q->where('slug', '!=', AdminRole::ADMINISTROTOR); }) ->with(['roles', 'permissions', 'areas']) ->where('id', '!=', $id) ->where('pid', $id) ->orderByDesc('id') ->paginate(); } return $this->ok(AdminUserResource::collection($users)); } public function store(AdminUserRequest $request, AdminUser $user) { $id = Admin::user()->id; $inputs = $request->validated(); $inputs['pid'] = $id; $user = $user::createUser($inputs); if (!empty($q = $request->post('roles', []))) { $user->roles()->attach($q); } if (!empty($q = $request->post('areas', []))) { $user->areas()->attach($q); } if (!empty($q = $request->post('permissions', []))) { $user->permissions()->attach($q); } return $this->created(AdminUserResource::make($user)); } public function show(AdminUser $adminUser) { $adminUser->load(['roles', 'permissions']); return $this->ok(AdminUserResource::make($adminUser)); } public function update(AdminUserRequest $request, AdminUser $adminUser) { $inputs = $request->validated(); //Log::info($inputs); $adminUser->updateUser($inputs); if (isset($inputs['roles'])) { $adminUser->roles()->sync($inputs['roles']); } if (isset($inputs['areas'])) { $adminUser->areas()->sync($inputs['areas']); } if (isset($inputs['permissions'])) { $adminUser->permissions()->sync($inputs['permissions']); } return $this->created(AdminUserResource::make($adminUser)); } public function destroy(AdminUser $adminUser) { $adminUser->delete(); return $this->noContent(); } public function edit(AdminUser $adminUser) { $adminUser->load(['roles', 'permissions', 'areas']); return $this->ok(AdminUserResource::make($adminUser)->onlyRolePermissionIds()); } }