public function registerAction()
 {
     if ($this->getRequest()->isPost()) {
         $params = $this->getAllParams();
         $addressParams = array();
         $userParams = array();
         foreach ($params as $key => $value) {
             if (startsWith($key, "address_")) {
                 $addressKey = str_replace("address_", "", $key);
                 $addressParams[$addressKey] = $value;
             } else {
                 $userParams[$key] = $value;
             }
         }
         try {
             //Check User exists
             if (CoreShopUser::getUniqueByEmail($userParams['email']) instanceof CoreShopUser) {
                 throw new \Exception("E-Mail already exists");
             }
             $folder = "/users/" . strtolower(substr($userParams['lastname'], 0, 1));
             $adresses = new Object\Fieldcollection();
             $address = new CoreShopUserAddress();
             $address->setValues($addressParams);
             $address->setCountry(Country::getById($addressParams['country']));
             $adresses->add($address);
             $user = new CoreShopUser();
             $user->setKey(Pimcore\File::getValidFilename($userParams['email']));
             $user->setPublished(true);
             $user->setParent(Pimcore\Model\Object\Service::createFolderByPath($folder));
             $user->setValues($userParams);
             $user->setAddresses($adresses);
             $user->save();
             Plugin::getEventManager()->trigger('user.postAdd', $this, array("request" => $this->getRequest(), "user" => $user));
             $this->session->user = $user;
             if (array_key_exists("_redirect", $params)) {
                 $this->_redirect($params['_redirect']);
             }
         } catch (\Exception $ex) {
             $this->view->error = $ex->getMessage();
         }
     }
 }