public function register() : View
 {
     if ($this->identity->isAuthorised()) {
         $this->redirect('home');
     }
     $service = new AccountService($this->dbContext);
     if ($this->context->getMethod() == 'post') {
         $this->validateToken();
         $model = new RegisterBindingModel();
         if ($model->getErrors()) {
             foreach ($model->getErrors() as $error) {
                 $this->addErrorMessage($error);
             }
             return new View('account', 'register', $model);
         }
         $result = $service->register($model);
         if (isset($result['error'])) {
             $this->addErrorMessage($result['error']);
             return new View('account', 'register', $model);
         }
         $this->addInfoMessage($result['success']);
         return new View('account', 'login');
     }
     return new View('account', 'register');
 }
 public function register(RegisterBindingModel $model)
 {
     if (!$model) {
         $this->response['error'] = 'Invalid model!';
         return $this->response;
     }
     $usernameCheck = $this->dbContext->getUsersRepository()->filterByUsername(" = '" . $model->getUsername() . "'")->findOne();
     if ($usernameCheck->getId()) {
         $this->response['error'] = 'Username already taken!';
         return $this->response;
     }
     $emailCheck = $this->dbContext->getUsersRepository()->filterByEmail(" = '" . $model->getEmail() . "'")->findOne();
     if ($emailCheck->getId()) {
         $this->response['error'] = 'Email already in use!';
         return $this->response;
     }
     $user = new User($model->getUsername(), password_hash($model->getPassword(), PASSWORD_BCRYPT), $model->getEmail(), $model->getTelephone());
     $this->dbContext->getUsersRepository()->add($user);
     $this->dbContext->saveChanges();
     $user = $this->dbContext->getUsersRepository()->filterByUsername(" = '" . $model->getUsername() . "'")->findOne();
     $userId = intval($user->getId());
     $userRole = new Usersrole($userId, 2, 0);
     $this->dbContext->getUsersrolesRepository()->add($userRole);
     $this->dbContext->saveChanges();
     $this->response['success'] = 'Register successful!';
     return $this->response;
 }