inRandomOrder(); return $user->first()->id ?? null; } public function updatePassword($newPassword, $id) { User::where('id', $id)->update([ 'password' => bcrypt($newPassword) ]); return User::find($id); } public function findByEmail($email) { return User::where('email', $email)->first(); } public function select2Paginate(?string $search): PaginateCollectionAttr { return (new PaginateCollectionAttrBuilder) ->build( User::selectRaw('id, name as text'), (new PaginateBuilderAttr)->setSearchKeyword($search), new PaginateSchemaUser ); } public function paginate(PaginateBuilderAttr $paginateBuilderAttr): PaginateCollectionAttr { return (new PaginateCollectionAttrBuilder) ->build( User::with('userRole.role'), $paginateBuilderAttr, new PaginateSchemaUser ); } public function fetch($id) { return User::findOrFail($id); } public function create(UserAttr $userAttr) { $user = User::create([ 'name' => $userAttr->getName(), 'email' => $userAttr->getEmail(), 'password' => bcrypt($userAttr->getPassword()), 'role_id' => $userAttr->getRoleId(), ]); return $this->fetch($user->id); } public function update(UserAttr $userAttr, $id) { $user = $this->fetch($id); $user->update([ 'name' => $userAttr->getName(), 'email' => $userAttr->getEmail(), 'role_id' => $userAttr->getRoleId(), ]); if ($userAttr->getPassword()) { $user->password = bcrypt($userAttr->getPassword()); $user->save(); } return $this->fetch($id); } public function delete($id) { $user = $this->fetch($id); $user->delete(); return $user; } public function getCount(): int { return User::count(); } public function getOneSignalId($id) { $res = User::find($id); if ($res->onesignal_id) { return $res->onesignal_id; } } public function sendToDifferentApp($message, $headings,$onesignalId, $appId, $apiKey, $data) { $contents = array( "en" => $message ); $params = array( "include_player_ids" => $onesignalId, 'app_id' => $appId, 'contents' => $contents, 'api_key' => $apiKey, 'android_accent_color' => 'FF0000' ); if(isset($headings)) { $params['headings'] = array( "en" => $headings ); } if (isset($data)) { $params['data'] = $data; } OneSignal::sendNotificationCustom($params); } }