src/Controller/CtaController.php line 16

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use CoreShop\Bundle\FrontendBundle\Controller\FrontendController;
  4. use Pimcore\Model\DataObject\Book;
  5. use Pimcore\Model\DataObject;
  6. use Pimcore\Model\DataObject\InventoryItem;
  7. use Pimcore\Model\DataObject\OnixProduct;
  8. use Pimcore\Model\DataObject\Serie;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. class CtaController extends FrontendController
  12. {
  13.     public function defaultAction(Request $request): Response
  14.     {
  15.         $itemId = $this->getParameterFromRequest($request, 'item', null);
  16.         $icon = $this->getParameterFromRequest($request, 'icon', false);
  17.         $productId = $this->getParameterFromRequest($request, 'product', null);
  18.         $wishListItemId = $this->getParameterFromRequest($request, 'itemId', null);
  19.         $showwishadd = $this->getParameterFromRequest($request, 'showwishadd', true);
  20.         $item = DataObject::getById($itemId);
  21.         $param['item'] = $item;
  22.         if ($productId) {
  23.             $product = OnixProduct::getById($productId);
  24.             $param['product'] = $product;
  25.             $param['isDesactivated'] = !$product->getOrderable();
  26.         } else {
  27.             if ($item instanceof Book) {
  28.                 $listOrderableEditions = $item->getAllOrderableEditions();
  29.                 if (count($listOrderableEditions) == 1) {
  30.                     $param['isDesactivated'] = false;
  31.                     $param['product'] = $listOrderableEditions[0];
  32.                 } elseif (count($listOrderableEditions) > 1) {
  33.                     $param['isDesactivated'] = false;
  34.                     $param['isBookPage'] = true;
  35.                 } else {
  36.                     $param['isDesactivated'] = true;
  37.                 }
  38.             } elseif ($item instanceof OnixProduct) {
  39.                 $books = $item->getBooksForOnix();
  40.                 if (!empty($books)) {
  41.                     $book = $books[0];
  42.                     $listOrderableEditions = $book->getAllOrderableEditions();
  43.                     if (count($listOrderableEditions) == 1) {
  44.                         $param['isDesactivated'] = false;
  45.                         $param['product'] = $listOrderableEditions[0];
  46.                     } elseif (count($listOrderableEditions) > 1) {
  47.                         $param['isDesactivated'] = false;
  48.                         $param['isBookPage'] = true;
  49.                         $param['bookForLink'] = $book;
  50.                     } else {
  51.                         $param['isDesactivated'] = true;
  52.                     }
  53.                 } else {
  54.                     $param['product'] = $item;
  55.                     $param['isDesactivated'] = !$item->getOrderable();
  56.                 }
  57.             } elseif ($item instanceof Serie) {
  58.                 $product = null;
  59.                 foreach ($item->getVolumes() as $volume) {
  60.                     $volumeObject = $volume->getObject();
  61.                     if ($volumeObject instanceof Book) {
  62.                         $orderable = $volumeObject->getAllOrderableEditions();
  63.                         if (count($orderable) > 0) {
  64.                             $product = $orderable[0];
  65.                             break;
  66.                         }
  67.                     } elseif ($volumeObject instanceof OnixProduct && $volumeObject->getOrderable()) {
  68.                         $product = $volumeObject;
  69.                         break;
  70.                     }
  71.                 }
  72.                 if ($product instanceof OnixProduct) {
  73.                     $param['product'] = $product;
  74.                     $param['isDesactivated'] = false;
  75.                 } else {
  76.                     $param['isDesactivated'] = true;
  77.                 }
  78.             } else {
  79.                 $param['isDesactivated'] = true;
  80.             }
  81.         }
  82.         if($wishListItemId) {
  83.             $param['itemId'] = $wishListItemId;
  84.         }
  85.         if ($icon) {
  86.             $param['icon'] = $icon;
  87.         }
  88.         $param['showwishadd'] = $showwishadd;
  89.         return $this->render('includes/cta.html.twig', $param);
  90.     }
  91. }