src/Controller/CartController.php line 46

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\DTO\AppDTO;
  4. use App\Model\Cart as ModelCart;
  5. use App\Model\Prod as ModelProd;
  6. use App\Service\Auth\Auth as Auth;
  7. use App\Service\Checkout\Checkout;
  8. use App\Repository\DeliveryRepository;
  9. use App\Model\Delivery as ModelDelivery;
  10. use App\Model\Wishlist as ModelWishlist;
  11. use Symfony\Contracts\Cache\CacheInterface;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\Security\Core\Security;
  14. use App\Service\Paginator as ServicePaginator;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\HttpFoundation\RequestStack;
  18. use App\RepositoryInterface\PageRepositoryInterface;
  19. use App\RepositoryInterface\ProdRepositoryInterface;
  20. use App\Service\Cart\Cart;
  21. use Doctrine\ORM\EntityManagerInterface;
  22. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  23. class CartController extends AbstractASController
  24. {
  25.     public function __construct(
  26.         private DeliveryRepository $Deliveries
  27.         private PageRepositoryInterface $Pages
  28.         private ProdRepositoryInterface $Prods
  29.         private ModelWishlist $Wishes
  30.         private CacheInterface $Cache
  31.         private AppDTO $app
  32.         private Auth $Auth
  33.         private ModelCart $Cart
  34.         private Checkout $Checkout
  35.         private ModelProd $ModelProd
  36.         private Security $security
  37.         private EntityManagerInterface $em)
  38.     {
  39.     }
  40.     #[Route(path'/cart'name'cart_no_locale'defaults: ['_locale' => '%app.default_lang%'])]
  41.     #[Route(path'/{_locale}/cart'name'cart'requirements: ['_locale' => '%app.langs%'])]
  42.     public function index(Request $request\App\Service\Cart\Cart $Cart): Response
  43.     {
  44.         $start = (int) $request->get('start'0);
  45.         $results $this->getParameter('cart.results');
  46.         
  47.         $wishlist $this->Wishes->getOnePage($start$results);
  48.         $deliveries $this->Deliveries->getByRegion($this->Checkout->getRegion_fias_id());
  49.         $freedelivery $this->Cart->isFreeDelivery((float) $this->app->sett->get('free_delivery_amount'));
  50.         $prod_limited_msg $this->app->labels->get('cart-edit-1').':\n';
  51.         foreach ($this->Cart->getProdsLimited() as $k => $v)
  52.         {
  53.             $prod $this->Prods->get($v);
  54.             $prod_limited_msg .= $prod->getArt().': '.$prod->getNum().' '.$this->app->labels->get('cart-edit-2').'\n';
  55.         }
  56.         $cart_items $this->Cart->getCart();
  57.         foreach ($cart_items as $k => $v) {
  58.             $cart_items[$k]['prod'] = $this->Prods->get($v['id']);
  59.         }
  60.         
  61.         $cart_new_prods $this->em->createQuery("SELECT p FROM App\Entity\Prod p WHERE p.visible = 1 AND p.new = 1 AND (p.num > 0 or p.num2 > 0 or p.num3 > 0)")
  62.             ->setMaxResults(6)
  63.             ->getResult();
  64.         
  65.         foreach ($cart_new_prods as $k => $prod) {
  66.             $cart_new_prods[$k]->prices $this->ModelProd->getPrices($prod);
  67.         }
  68.         $cart_pop_prods $this->em->createQuery("SELECT p FROM App\Entity\Prod p WHERE p.visible = 1 AND p.pop = 1 AND (p.num > 0 or p.num2 > 0 or p.num3 > 0)")
  69.             ->setMaxResults(6)
  70.             ->getResult();
  71.         
  72.         foreach ($cart_pop_prods as $k => $prod) {
  73.             $cart_pop_prods[$k]->prices $this->ModelProd->getPrices($prod);
  74.         }
  75.         return $this->render('cart/edit.html.twig', [
  76.             'cart' => $this->Cart,
  77.             'cart_items' => $cart_items,
  78.             'wishlist' => $wishlist,
  79.             'deliveries' => $deliveries,
  80.             'freedelivery' => $freedelivery,
  81.             'delivery_indicator_data' => $Cart->getDeliveryIndicatorData((float) $this->app->sett->get('free_delivery_amount')),
  82.             'prod_limited_msg' => $prod_limited_msg,
  83.             'checkout' => $this->Checkout,
  84.             'page' => $this->Pages->getByName('cart'),
  85.             'paginator' => new ServicePaginator('cart'count($wishlist), $results$start),
  86.             'cart_pop_prods' => $cart_pop_prods,
  87.             'cart_new_prods' => $cart_new_prods,
  88.         ]);
  89.     }
  90.     #[Route(path'/cart/show'name'cart_show_no_locale'defaults: ['_locale' => '%app.default_lang%'])]
  91.     #[Route(path'/{_locale}/cart/show'name'cart_show'requirements: ['_locale' => '%app.langs%'])]
  92.     public function show(Request $request): Response
  93.     {
  94.         $freedelivery $this->Cart->isFreeDelivery((float) $this->app->sett->get('free_delivery_amount'));
  95.         $cart_items $this->Cart->getCart();
  96.         foreach ($cart_items as $k => $v) {
  97.             $cart_items[$k]['prod'] = $this->Prods->get($v['id']);
  98.         }
  99.         
  100.         return $this->render('cart/show.html.twig', [
  101.             'order' => null,
  102.             'cart' => $this->Cart,
  103.             'cart_items' => $cart_items,
  104.             'freedelivery' => $freedelivery,
  105.             'checkout' => $this->Checkout,
  106.         ]);
  107.     }
  108.     #[Route(path'/cart/list'name'cart_list_no_locale'defaults: ['_locale' => '%app.default_lang%'])]
  109.     #[Route(path'/{_locale}/cart/list'name'cart_list'requirements: ['_locale' => '%app.langs%'])]
  110.     public function list(Request $request): Response
  111.     {
  112.         $cart_items $this->Cart->getCart();
  113.         foreach ($cart_items as $k => $v) {
  114.             $cart_items[$k]['prod'] = $this->Prods->get($v['id']);
  115.         }
  116.         return $this->render('cart/list.html.twig', [
  117.             'cart' => $this->Cart,
  118.             'cart_items' => $cart_items,
  119.         ]);
  120.     } 
  121.     #[Route(path'/cart/clear'name'cart_clear')]
  122.     public function clear(Request $request): Response
  123.     {
  124.         $this->Cart->deleteAll();
  125.         return new Response("ok");
  126.     } 
  127. }