<?php
namespace MyBundle\Controller;
use AcquiringBundle\Entity\Order;
use CoreBundle\Model\User;
use Doctrine\ORM\EntityManagerInterface;
use MyBundle\Messages;
use MyBundle\Service\BasketService;
use MyBundle\Service\OrderService;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Twig\Environment;
class BasketController extends MyBaseController
{
public function __construct(EntityManagerInterface $em, RequestStack $requestStack, Messages $messages, User $userModel, Environment $twig)
{
parent::__construct($em, $requestStack, $messages, $userModel, $twig);
}
public function basket(): ?Response
{
return $this->baseMyRender('@My/Basket/basket.html.twig');
}
public function order(Request $request, OrderService $orderService): ?Response
{
$orderHash = $request->get('hash');
if ($this->getUser()) {
throw $this->createNotFoundException('AcquiringOrder not found');
}
$acquiringOrder = $this->em->getRepository(Order::class)->findOneBy(['hash' => $orderHash]);
if (!$acquiringOrder) {
throw $this->createNotFoundException('AcquiringOrder not found');
}
$order = $orderService->getOrderInfo($acquiringOrder->getDealer(), $this->getUser());
return $this->baseMyRender('@My/Basket/order.html.twig', [$order]);
}
public function init(BasketService $basketService): JsonResponse
{
// if (!$this->getUser()) {
// return new JsonResponse(['success' => false]);
// }
return $this->json([
'success' => true,
'basket' => $basketService->initBasket($this->getUser()),
]);
}
public function toggleInstall(BasketService $basketService): JsonResponse
{
return $basketService->toggleInstall($this->getUser());
}
public function toggleInstallAccessory(BasketService $basketService): JsonResponse
{
return $basketService->toggleInstallAccessory();
}
public function changeCount(BasketService $basketService): JsonResponse
{
// if (!$this->getUser()) {
// return new JsonResponse(['success' => false, 'error' => 1]);
// }
return $basketService->changeCountBasket($this->getUser());
}
public function removeItem(BasketService $basketService): JsonResponse
{
return $basketService->removeItem($this->getUser());
}
public function addAccessory(BasketService $basketService): JsonResponse
{
// if (!$this->getUser()) {
// return new JsonResponse(['success' => false, 'error' => 1]);
// }
return $basketService->addAccessory($this->getUser());
}
public function addCasco(BasketService $basketService): JsonResponse
{
if (!$this->getUser()) {
return new JsonResponse(['success' => false, 'error' => 1]);
}
return $basketService->addCasco($this->getUser());
}
public function addItemsToBasket(BasketService $basketService): JsonResponse
{
if (!$this->getUser()) {
return new JsonResponse(['success' => false, 'error' => 1]);
}
return $basketService->addItem($this->getUser());
}
public function getBasketByType(BasketService $basketService): JsonResponse
{
return $this->init($basketService);
}
public function checkoutOrder($type = null): ?Response
{
return $this->baseMyRender('@My/Basket/checkout_order.html.twig', [
'type' => $type
]);
}
}