public function index(Request $request) { // todo: validate inputs!! $wheres = []; $searches = []; // resolve group if ($group = $request->get('group')) { array_set($wheres, 'groups', $group); } // resolve status if ($status = $request->get('status')) { array_set($wheres, 'status', $status); } // resolve search keyword // keyfield가 지정되지 않을 경우 email, customId에서 입력된 keyword를 검색함 $field = $request->get('keyfield', 'email,displayName'); $field = $field === '' ? 'email,displayName' : $field; if ($query = $request->get('keyword')) { $searches = [$field => $query]; } $wheres = count($wheres) === 0 ? null : $wheres; $searches = count($searches) === 0 ? null : $searches; // get members if ($searches) { $members = $this->members->search($searches, $wheres, ['groups', 'accounts']); } elseif ($wheres) { $members = $this->members->fetch($wheres, ['groups', 'accounts']); } else { $members = $this->members->paginate(['groups', 'accounts']); } // get all groups $groups = $this->groups->all(); $selectedGroup = null; if ($group !== null) { $selectedGroup = $this->groups->find($group); } return Presenter::make('member.settings.member.index', compact('members', 'groups', 'selectedGroup')); }