|
- <?php
-
- namespace Lc\ShopBundle\Controller\Frontend ;
-
- use App\Form\Frontend\OrderProductsType;
- use Doctrine\ORM\EntityManagerInterface;
- use Lc\ShopBundle\Context\MerchantUtilsInterface;
- use Lc\ShopBundle\Context\OrderProductInterface;
- use Lc\ShopBundle\Context\OrderReductionCartInterface;
- use Lc\ShopBundle\Context\OrderUtilsInterface;
- use Lc\ShopBundle\Context\ProductFamilyInterface;
- use Lc\ShopBundle\Context\ReductionCartInterface;
- use Lc\ShopBundle\Model\OrderReductionCart;
- use Symfony\Component\HttpFoundation\JsonResponse;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\Security\Core\Security;
-
- class CartController extends BaseController
- {
- protected $orderUtils ;
- protected $productFamilyRepository ;
- protected $orderProductRepository ;
-
- protected $productFamily ;
- protected $orderProducts = [] ;
-
-
- public function __construct(EntityManagerInterface $em, Security $security, MerchantUtilsInterface $merchantUtils, OrderUtilsInterface $orderUtils)
- {
- parent::__construct($em, $security, $merchantUtils);
- $this->orderUtils = $orderUtils ;
- $this->productFamilyRepository = $this->em->getRepository($this->em->getClassMetaData(ProductFamilyInterface::class)->getName()) ;
- $this->orderProductRepository = $this->em->getRepository($this->em->getClassMetaData(OrderProductInterface::class)->getName()) ;
- }
-
- public function addProductFamily(Request $request)
- {
- $return = [] ;
- $data = $request->request->all() ;
- if(isset($data['order_products']['id_product_family'])) {
- $idProductFamily = $data['order_products']['id_product_family'] ;
- $this->productFamily = $this->productFamilyRepository->find($idProductFamily) ;
- if($this->productFamily) {
- $form = $this->createForm(OrderProductsType::class, ['id_product_family' => $this->productFamily->getId()]);
- $form->handleRequest($request);
-
- if ($form->isSubmitted() && $form->isValid()) {
- $orderShop = $this->orderUtils->getCartCurrent() ;
- $data = $form->getData() ;
- foreach($data as $orderProduct) {
- if($orderProduct instanceof OrderProductInterface) {
- $this->orderUtils->addOrderProduct($orderShop, $orderProduct) ;
- if($orderProduct->getQuantityOrder() > 0) {
- $this->orderProducts[] = $orderProduct ;
- }
- }
- }
- }
- }
- }
-
- return new JsonResponse($return) ;
- }
-
- public function deleteReductionCart(Request $request)
- {
- $id = $request->get('id') ;
-
- $orderReductionCartRepository = $this->em->getRepository($this->em->getClassMetadata(OrderReductionCartInterface::class)->getName()) ;
- $orderReductionCart = $orderReductionCartRepository->findOneById((int) $id) ;
-
- $orderShop = $this->orderUtils->getCartCurrent() ;
-
- if($orderReductionCart && $orderShop->getOrderReductionCarts() && $orderShop->getOrderReductionCarts()->contains($orderReductionCart)) {
- $this->em->remove($orderReductionCart) ;
- $this->em->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. ') ;
- }
-
- $referer = $request->headers->get('referer');
-
- if($referer) {
- return $this->redirect($referer);
- }
- else {
- return $this->redirectToRoute('frontend_order_cart');
- }
- }
-
- }
|