<?php
namespace App\Controller;
use CoreShop\Bundle\FrontendBundle\Controller\FrontendController;
use Pimcore\Model\DataObject\Book;
use Pimcore\Model\DataObject;
use Pimcore\Model\DataObject\InventoryItem;
use Pimcore\Model\DataObject\OnixProduct;
use Pimcore\Model\DataObject\Serie;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class CtaController extends FrontendController
{
public function defaultAction(Request $request): Response
{
$itemId = $this->getParameterFromRequest($request, 'item', null);
$icon = $this->getParameterFromRequest($request, 'icon', false);
$productId = $this->getParameterFromRequest($request, 'product', null);
$wishListItemId = $this->getParameterFromRequest($request, 'itemId', null);
$showwishadd = $this->getParameterFromRequest($request, 'showwishadd', true);
$item = DataObject::getById($itemId);
$param['item'] = $item;
if ($productId) {
$product = OnixProduct::getById($productId);
$param['product'] = $product;
$param['isDesactivated'] = !$product->getOrderable();
} else {
if ($item instanceof Book) {
$listOrderableEditions = $item->getAllOrderableEditions();
if (count($listOrderableEditions) == 1) {
$param['isDesactivated'] = false;
$param['product'] = $listOrderableEditions[0];
} elseif (count($listOrderableEditions) > 1) {
$param['isDesactivated'] = false;
$param['isBookPage'] = true;
} else {
$param['isDesactivated'] = true;
}
} elseif ($item instanceof OnixProduct) {
$books = $item->getBooksForOnix();
if (!empty($books)) {
$book = $books[0];
$listOrderableEditions = $book->getAllOrderableEditions();
if (count($listOrderableEditions) == 1) {
$param['isDesactivated'] = false;
$param['product'] = $listOrderableEditions[0];
} elseif (count($listOrderableEditions) > 1) {
$param['isDesactivated'] = false;
$param['isBookPage'] = true;
$param['bookForLink'] = $book;
} else {
$param['isDesactivated'] = true;
}
} else {
$param['product'] = $item;
$param['isDesactivated'] = !$item->getOrderable();
}
} elseif ($item instanceof Serie) {
$product = null;
foreach ($item->getVolumes() as $volume) {
$volumeObject = $volume->getObject();
if ($volumeObject instanceof Book) {
$orderable = $volumeObject->getAllOrderableEditions();
if (count($orderable) > 0) {
$product = $orderable[0];
break;
}
} elseif ($volumeObject instanceof OnixProduct && $volumeObject->getOrderable()) {
$product = $volumeObject;
break;
}
}
if ($product instanceof OnixProduct) {
$param['product'] = $product;
$param['isDesactivated'] = false;
} else {
$param['isDesactivated'] = true;
}
} else {
$param['isDesactivated'] = true;
}
}
if($wishListItemId) {
$param['itemId'] = $wishListItemId;
}
if ($icon) {
$param['icon'] = $icon;
}
$param['showwishadd'] = $showwishadd;
return $this->render('includes/cta.html.twig', $param);
}
}