public function postEdit($id)
 {
     $input = Input::only(['name', 'description']);
     $validator = Validator::make($input, ['name' => 'Required']);
     if ($validator->fails()) {
         $e = new InvalidArgumentHttpException();
         $e->setMessage($validator->errors()->first());
         throw $e;
     }
     XeDB::beginTransaction();
     try {
         $group = $this->groups->find($id);
         $group->fill($input);
         $this->groups->update($group);
     } catch (Exception $e) {
         XeDB::rollBack();
         throw $e;
     }
     XeDB::commit();
     return redirect()->route('manage.group.index')->with('alert', ['type' => 'success', 'message' => '수정되었습니다.']);
 }
 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'));
 }