organisation; } /** * @param \AppBundle\Entity\Organisation $organisation */ public function setOrganisation (Organisation $organisation = null) { if ($this->_isConnected) { throw new \BadMethodCallException('Cannot switch organisation while connected'); } $this->organisation = $organisation; $this->connect(); } /** * {@inheritDoc} */ public function connect () { if ($this->isConnected()) { return false; } $params = $this->getParams(); if ($this->organisation) { $params['dbname'] = self::generateDatabaseName($this->organisation); } else { unset($params['dbname']); } $this->__construct($params, $this->getDriver(), $this->getConfiguration(), $this->getEventManager()); parent::connect(); $this->_isConnected = true; return true; } public static function generateDatabaseName (Organisation $organisation) : string { return DatabaseNameResolver::getByOrganisationId($organisation->getId()); } /** * {@inheritDoc} */ public function isConnected () { return $this->_isConnected; } /** * {@inheritDoc} */ public function close () { if ($this->isConnected()) { parent::close(); $this->_isConnected = false; } } }