request = $request; } public function execute() : UserRegistrationResponse { $response = new UserRegistrationResponse; $user = User::create([ 'user_role_main' => $this->request->userRoleMain, 'user_role_local_group' => $this->request->userRoleLocalGroup, 'username' => $this->request->email->getValue(), 'local_group' => $this->request->localGroup, 'firstname' => $this->request->firstname, 'lastname' => $this->request->lastname, 'nickname' => $this->request->nickname !== '' ? $this->request->nickname : null, 'email' => $this->request->email->getValue(), ]); if ($user === null) { return $response; } $generateActivationCoedeRequest = new GenerateActivationTokenRequest($user); $generateActivationCoedeDommand = new GenerateActivationTokenCommand($generateActivationCoedeRequest); $result = $generateActivationCoedeDommand->execute(); $user->activation_token = $result->activationCode; $siteAdmin = new MessageRecipient(); $siteAdmin->addEmailAddress(EmailAddress::fromString(env('APP_ADMIN_MAIL'))); $siteAdmin->setName(env('APP_ADMIN_NAME')); $registrationMessage = InformAdminAboutNewUserTemplate::createNew($user); $registrationMessageRequest = new SendMessageRequest($registrationMessage->getMessage(), $registrationMessage->getSubject(), $siteAdmin, [MessageType::EMAIL]); $registrationMessageCommand = new SendMessageCommand($registrationMessageRequest); $registrationMessageCommand->send(); $response->user = $user; $response->success = true; return $response; } }