protected function createGrid() { $grid = $this->createPreparedGrid(); $grid->setModel($this->getModel()); $grid->addColumnNumber('id', 'ID')->setSortable()->setFilterNumber(); $grid->addColumnText('username', 'Přihlašovací jméno')->setSortable()->setDefaultSort('asc')->setFilterText(); $grid->addColumnText('name', 'Jméno')->setSortable()->setFilterText(); $grid->addColumnText('surname', 'Příjmení')->setSortable()->setFilterText(); $grid->addColumnText('email', 'Email')->setCustomRender(function ($row) { if (Strings::length($row->email) <= 0) { return ''; } return Html::el('a')->setText($row->email)->href('mailto:' . $row->email); })->setSortable()->setFilterText()->setColumn('user.email'); $section = $grid->addColumnText('section', 'Sekce'); $this->helpers->setupAsMultirecord($section, function ($row) { $selection = $this->sectionFacade->all(); $this->userFilter->filterId($selection, $row->id, ':user_has_section'); $selection->select("section.id,section.name"); return $selection->fetchPairs('id', 'name'); }); $role = $grid->addColumnText('role', 'Role'); $this->helpers->setupAsMultirecord($role, function ($row) { $selection = $this->roleFacade->all(); $this->userFilter->filterId($selection, $row->id, ':user_has_role'); $selection->select("role.code,role.name"); return $selection->fetchPairs('code', 'name'); }); $this->helpers->addEditAction($grid); $this->helpers->addDeleteEvent($grid, $this->deleteRow, function ($row) { return $row->surname . ' ' . $row->name; }); return $grid; }
/** * @param \Nette\Application\UI\Form $form */ private function checkUsername(Form $form) { $username = $form['base']['username']->getValue(); $user = $this->userFilter->filterUsername($this->userFacade->all(), $username)->fetch(); if (!$user) { return; } if (!($user->id == $this->id)) { $form->addError('Zadaný login již existuje, zadejte prosím jiný'); } }
/** * @param $id * @return array */ protected function getSections($id) { $selection = $this->userFilter->filterId($this->userFacade->all(), $id); $selection->select(':user_has_section.section.id'); return $selection->fetchPairs('id', 'id'); }
/** * @param $id * @param int[] $setIds */ public function setSection($id, $setIds) { $current = $this->userFilter->filterId($this->all(), $id)->select(':user_has_section.section.id')->fetchPairs('id', 'id'); $this->userRepository->reassignSection($id, $setIds, $current); }
/** * @param $email * @return \Nette\Database\Table\Selection */ public function email($email) { return $this->userFilter->filterEmail($this->all(), $email); }