'like', 'email' => 'like', 'home_airport_id', 'curr_airport_id', 'state', ]; /** * @return string */ public function model() { return User::class; } /** * Get all of the fields which has the mapped values * * @param \App\Models\User $user * * @return \App\Models\UserField[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Support\Collection */ public function getUserFields(User $user): Collection { return (UserField::all())->map(function ($field, $_) use ($user) { foreach ($user->fields as $userFieldValue) { if ($userFieldValue->field->slug === $field->slug) { $field->value = $userFieldValue->value; } } return $field; }); } /** * Number of PIREPs that are pending * * @return mixed */ public function getPendingCount() { $where = [ 'state' => UserState::PENDING, ]; $users = $this->orderBy('created_at', 'desc') ->findWhere($where, ['id']) ->count(); return $users; } /** * Create the search criteria and return this with the stuff pushed * * @param Request $request * @param bool $only_active * * @throws \Prettus\Repository\Exceptions\RepositoryException * * @return $this */ public function searchCriteria(Request $request, bool $only_active = true) { $where = []; if ($only_active) { $where['state'] = UserState::ACTIVE; } if ($request->filled('name')) { $where['name'] = $request->name; } if ($request->filled('email')) { $where['email'] = $request->email; } if ($request->filled('state')) { $where['state'] = $request->state; } $this->pushCriteria(new WhereCriteria($request, $where)); return $this; } }