/** * Create service * * @param ServiceLocatorInterface $serviceLocator * * @return mixed */ public function createService(ServiceLocatorInterface $serviceLocator) { $auth = $serviceLocator->get('AuthenticationService'); $user = $auth->getUser(); $settings = $user->getSettings('Orders'); $invoiceAddress = $settings->getInvoiceAddress(); if (!$invoiceAddress->getCompany()) { $invoiceAddress = false; $org = $user->getOrganization(); if ($org->isEmployee()) { $orgUser = $org->isHiringOrganization() ? $org->getParent()->getUser() : $org->getUser(); $invoiceAddress = $orgUser->getSettings('Orders')->getInvoiceAddress(); if (!$invoiceAddress->getCompany()) { $invoiceAddress = false; } } } $entity = new InvoiceAddress(); if ($invoiceAddress) { $entityHydrator = new EntityHydrator(); $settingsHydrator = new SettingsEntityHydrator(); $data = $settingsHydrator->extract($invoiceAddress); $entity = $entityHydrator->hydrate($data, $entity); } return $entity; }
public function getHydrator() { if (!$this->hydrator) { $hydrator = new SettingsEntityHydrator(); $hydrator->addStrategy('disableElements', new DisableElementsStrategy()); $this->setHydrator($hydrator); } return $this->hydrator; }