示例#1
0
 /**
  * Action Add Coupon
  *
  * @return void
  */
 public function addCouponAction()
 {
     if ($this->request->hasArgument('couponCode')) {
         $this->cart = $this->cartUtility->getCartFromSession($this->settings['cart'], $this->pluginSettings);
         $couponCode = $this->request->getArgument('couponCode');
         /** @var \Extcode\Cart\Domain\Model\Product\Coupon $coupon */
         $coupon = $this->couponRepository->findOneByCode($couponCode);
         if ($coupon && $coupon->getIsAvailable()) {
             $newCartCoupon = $this->objectManager->get(\Extcode\Cart\Domain\Model\Cart\CartCoupon::class, $coupon->getTitle(), $coupon->getCode(), $coupon->getCouponType(), $coupon->getDiscount(), $this->cart->getTaxClass($coupon->getTaxClassId()), $coupon->getCartMinPrice(), $coupon->getIsCombinable());
             $couponWasAdded = $this->cart->addCoupon($newCartCoupon);
             if ($couponWasAdded == 1) {
                 $this->addFlashMessage(\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('tx_cart.ok.coupon.added', $this->extensionName), $messageTitle = '', $severity = \TYPO3\CMS\Core\Messaging\AbstractMessage::OK, $storeInSession = true);
             }
             if ($couponWasAdded == -1) {
                 $this->addFlashMessage(\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('tx_cart.error.coupon.already_added', $this->extensionName), $messageTitle = '', $severity = \TYPO3\CMS\Core\Messaging\AbstractMessage::WARNING, $storeInSession = true);
             }
             if ($couponWasAdded == -2) {
                 $this->addFlashMessage(\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('tx_cart.error.coupon.not_combinable', $this->extensionName), $messageTitle = '', $severity = \TYPO3\CMS\Core\Messaging\AbstractMessage::WARNING, $storeInSession = true);
             }
         } else {
             $this->addFlashMessage(\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('tx_cart.error.coupon.not_accepted', $this->extensionName), $messageTitle = '', $severity = \TYPO3\CMS\Core\Messaging\AbstractMessage::WARNING, $storeInSession = true);
         }
         $this->sessionHandler->writeToSession($this->cart, $this->settings['cart']['pid']);
     }
     $this->redirect('showCart');
 }
示例#2
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;
 }