storage = $storage; $this->templates = $templates; } public function createWorkflow(array $data): Workflow { $name = $data['name']; $template = $data['template']; switch ($template) { case 'delayed-email-after-signup': $workflow = $this->templates->delayedEmailAfterSignupWorkflow($name); break; default: throw UnexpectedValueException::create()->withMessage('Template not found.'); } $this->storage->createWorkflow($workflow); return $workflow; } }