getUserCurrent(); $visitor = $this->getVisitorCurrent(); $return = []; $data = $request->request->all(); if (isset($data['order_products']['id_product_family'])) { $idProductFamily = (int) $data['order_products']['id_product_family']; $this->productFamily = $this->getProductFamilyContainer()->getStore()->getOneById($idProductFamily); if(!$this->productFamily) { $return['return'] = 'error'; } // alerte si cookies non acceptés if (!$user && !$visitor) { $this->addFlash( 'error', 'Vous devez accepter les cookies ou vous connecter pour ajouter un produit.' ); $return['return'] = 'error'; } if ($this->productFamily) { $form = $this->createForm( OrderProductsType::class, ['id_product_family' => $this->productFamily->getId()] ); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $orderShop = $this->getOrderShopContainer()->getBuilder()->createIfNotExist( $this->getSectionCurrent(), $this->getUserCurrent(), $this->getVisitorCurrent() ); $data = $form->getData(); foreach ($data as $orderProduct) { if ($orderProduct instanceof OrderProductInterface) { $this->addOrderProduct($orderShop, $orderProduct); } } $return['return'] = 'success'; } } } return new JsonResponse($return); } public function addOrderProduct(OrderShopInterface $orderShop, OrderProductInterface $orderProduct): void { $this->quantityOrder = $orderProduct->getQuantityOrder(); $orderProductArray = $this->getOrderShopContainer()->getBuilder()->addOrderProduct( $orderShop, $orderProduct ); if (is_array($orderProductArray)) { foreach($orderProductArray as $orderProduct) { $this->orderProducts[] = $orderProduct; } } } /** * @Route("/reduction-cart/add/{id}", name="order_reduction_cart") */ public function addReductionCart(Request $request): RedirectResponse { $id = $request->get('id'); $orderShop = $this->getCartCurrent(); $user = $this->getUserCurrent(); $orderShopContainer = $this->getOrderShopContainer(); $reductionCart = $this->getReductionCartContainer()->getStore()->getOneById($id); if ($orderShop && $user && $reductionCart && $orderShopContainer->getStore()->isReductionCartAllowAddToOrder($orderShop, $reductionCart) && !$orderShopContainer->getSolver()->isReductionCartAddedToOrder($orderShop, $reductionCart)) { $return = $orderShopContainer->getBuilder()->addReductionCart($orderShop, $reductionCart); if ($return) { $this->addFlash('success', 'Votre réduction panier a bien été ajoutée à votre panier.'); } else { $this->addFlash( 'error', 'Vous ne pouvez pas effectuer cette action. Le montant de la commande est insuffisant.' ); } } else { $this->addFlash('error', "Impossible d'effectuer cette action"); } return $this->redirectToReferer($request); } /** * @Route("/order-reduction-cart/delete/{id}", name="delete_reduction_cart") */ public function deleteReductionCart(Request $request): RedirectResponse { $entityManager = $this->getEntityManager(); $id = $request->get('id'); $orderReductionCart = $this->getOrderReductionCartContainer()->getStore()->getOneById((int) $id); $orderShop = $this->getCartCurrent(); if ($orderReductionCart && $orderShop->getOrderReductionCarts() && $orderShop->getOrderReductionCarts( )->contains($orderReductionCart)) { $entityManager->remove($orderReductionCart); $entityManager->flush(); $this->addFlash('success', 'La réduction a bien été supprimée de votre panier.'); } else { $this->addFlash('error', 'Une erreur est survenue lors de la suppression de la réduction. '); } return $this->redirectToReferer($request); } /** * @Route("/reduction-credit/add/{id}", name="order_reduction_credit") */ public function addReductionCredit(Request $request): RedirectResponse { $id = $request->get('id'); $orderShop = $this->getCartCurrent(); $user = $this->getUserCurrent(); $orderShopContainer = $this->getOrderShopContainer(); $reductionCredit = $this->getReductionCreditContainer()->getStore()->getOneById($id); if ($orderShop && $user && $reductionCredit && $orderShopContainer->getStore()->isReductionCreditAllowAddToOrder($orderShop, $reductionCredit) && !$orderShopContainer->getSolver()->isReductionCreditAddedToOrder($orderShop, $reductionCredit)) { $return = $orderShopContainer->getBuilder()->addReductionCredit($orderShop, $reductionCredit); if ($return) { $this->addFlash('success', 'Votre avoir a bien été ajouté à votre panier.'); } else { $this->addFlash( 'error', 'Vous ne pouvez pas effectuer cette action. Le montant de la commande est insuffisant.' ); } } else { $this->addFlash('error', "Impossible d'effectuer cette action"); } return $this->redirectToReferer($request); } /** * @Route("/order-reduction-credit/delete/{id}", name="delete_reduction_credit") */ public function deleteReductionCredit(Request $request): RedirectResponse { $entityManager = $this->getEntityManager(); $id = $request->get('id'); $orderReductionCredit = $this->getOrderReductionCreditContainer()->getStore()->getOneById((int)$id); $orderShop = $this->getCartCurrent(); if ($orderReductionCredit && $orderShop->getOrderReductionCredits() && $orderShop->getOrderReductionCredits( )->contains($orderReductionCredit)) { $entityManager->remove($orderReductionCredit); $entityManager->flush(); $this->addFlash('success', 'Votre avoir a bien été supprimé de votre panier.'); } else { $this->addFlash('error', 'Une erreur est survenue lors de la suppression de votre avoir. '); } $referer = $this->getReferer($request); if ($referer) { return $this->redirect($referer); } else { return $this->redirectToRoute('frontend_order_cart', [ 'section' => $this->getSectionCurrentSlug() ]); } } protected function redirectToReferer(Request $request): RedirectResponse { $referer = $this->getReferer($request); if ($referer) { return $this->redirect($referer); } else { return $this->redirectToRoute('frontend_order_cart', [ 'section' => $this->getSectionCurrentSlug() ]); } } }