示例#1
0
 /**
  * Parse Services
  *
  * @param string $className
  * @param array $pluginSettings Plugin Settings
  * @param \Extcode\Cart\Domain\Model\Cart\Cart $cart
  *
  * @return array
  */
 public function parseServices($className, array $pluginSettings, \Extcode\Cart\Domain\Model\Cart\Cart $cart)
 {
     $services = [];
     $type = strtolower($className) . 's';
     if ($pluginSettings[$type]['options']) {
         foreach ($pluginSettings[$type]['options'] as $key => $value) {
             $class = '\\Extcode\\Cart\\Domain\\Model\\Cart\\' . $className;
             /**
              * Service
              * @var \Extcode\Cart\Domain\Model\Cart\Service $service
              */
             $service = new $class($key, $value['title'], $cart->getTaxClass($value['taxClassId']), $value['status'], $value['note'], $cart->getIsNetCart());
             if ($className == 'Payment') {
                 if ($value['provider']) {
                     $service->setProvider($value['provider']);
                 }
             }
             if (is_array($value['extra'])) {
                 $service->setExtraType($value['extra']['_typoScriptNodeValue']);
                 unset($value['extra']['_typoScriptNodeValue']);
                 foreach ($value['extra'] as $extraKey => $extraValue) {
                     $extra = new \Extcode\Cart\Domain\Model\Cart\Extra($extraKey, $extraValue['value'], $extraValue['extra'], $cart->getTaxClass($value['taxClassId']), $cart->getIsNetCart());
                     $service->addExtra($extra);
                 }
             } elseif (!floatval($value['extra'])) {
                 $service->setExtraType($value['extra']);
                 $extra = new \Extcode\Cart\Domain\Model\Cart\Extra(0, 0, 0, $cart->getTaxClass($value['taxClassId']), $cart->getIsNetCart());
                 $service->addExtra($extra);
             } else {
                 $service->setExtraType('simple');
                 $extra = new \Extcode\Cart\Domain\Model\Cart\Extra(0, 0, $value['extra'], $cart->getTaxClass($value['taxClassId']), $cart->getIsNetCart());
                 $service->addExtra($extra);
             }
             if ($value['free']) {
                 $service->setFreeFrom($value['free']['from']);
                 $service->setFreeUntil($value['free']['until']);
             }
             if ($value['available']) {
                 $service->setAvailableFrom($value['available']['from']);
                 $service->setAvailableUntil($value['available']['until']);
                 if ($value['available']['fallBackId']) {
                     $service->setFallBackId($value['available']['fallBackId']);
                 }
             }
             if ($pluginSettings[$type]['preset'] == $key) {
                 $service->setIsPreset(true);
             }
             $additional = [];
             if ($value['additional.']) {
                 foreach ($value['additional'] as $additionalKey => $additionalValue) {
                     if ($additionalValue['value']) {
                         $additional[$additionalKey] = $additionalValue['value'];
                     }
                 }
             }
             $service->setAdditionalArray($additional);
             $service->setCart($cart);
             $services[$key] = $service;
         }
     }
     return $services;
 }