src/Controller/OrderController.php line 29

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Classe\Cart;
  4. use App\Entity\Order;
  5. use App\Entity\OrderDetails;
  6. use App\Form\OrderType;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. class OrderController extends AbstractController
  13. {
  14.     private $entityManager;
  15.     public function __construct(EntityManagerInterface $entityManager)
  16.     {
  17.         $this->entityManager $entityManager;
  18.     }
  19.     #[Route('/commande'name'order')]
  20.     public function index(Cart $cartRequest $request): Response
  21.     {
  22.         
  23.     if(!$this->getUser()-> getAddresses()-> getValues())
  24.     {
  25.         return  $this->redirectToRoute('account_address_add');
  26.     }
  27.         $form $this->createForm(OrderType::class, null, [
  28.         'user' => $this->getUser()
  29.         
  30.     ]);
  31.     
  32.     return $this->render('order/index.html.twig', [
  33.         'form'=>$form->createView(),
  34.         'cart'=> $cart->getFull(),
  35.     ]);
  36.     }
  37. //    #[Route('/commande/recapitulatif', name:'order_recap', methods:[" POST "])]
  38. /**
  39.      * @Route("/commande/recapitulatif", name="order_recap", methods={"POST"})
  40.      */
  41.     public function add(Cart $cartRequest $request): Response
  42.     {
  43.     
  44.         $form $this->createForm(OrderType::class, null, [
  45.         'user' => $this->getUser()
  46.         
  47.     ]);
  48.     $form->handleRequest($request);
  49.     if ($form->isSubmitted() && $form->isValid()) {
  50.             $date = new \DateTime();
  51.             $carriers $form->get('carriers')->getData();
  52.             $delivery $form->get('addresses')->getData();
  53.             $delivery_content $delivery->getFirstname().' '.$delivery->getLastname();
  54.             $delivery_content .= '<br/>'.$delivery->getPhone();
  55.            
  56.            if($delivery->getCompany()){
  57.                $delivery_content .= '<br/>'.$delivery->getCompany();
  58.                
  59.             }
  60.             
  61.             $delivery_content .= '<br/>'.$delivery->getAddress();
  62.             $delivery_content .= '<br/>'.$delivery->getPostal().''.$delivery->getVille();
  63.             $delivery_content .= '<br/>'.$delivery->getCountry();
  64.            
  65.             // Enregistrer ma commande Order()
  66.            $order = new Order();
  67.            $reference $date->format('dmY').'-'.uniqid();
  68.            $order->setReference($reference);
  69.            $order->setUser($this->getUser());
  70.            $order->setCreatedAt($date);
  71.            $order->setCarrierName($carriers->getName());
  72.            $order->setCarrierPrice($carriers->getPrice());
  73.            $order->setDelivery($delivery_content);
  74.            $order->setState(0);
  75.            $this->entityManager->persist($order);
  76.           
  77.             // Enregistrer mes produits OrderDetails()
  78.            foreach ($cart->getFull() as $product){
  79.             $orderDetails = new OrderDetails();
  80.             $orderDetails->setMyOrder($order);
  81.             $orderDetails->setProduct($product['product']->getName());
  82.             $orderDetails->setQuantity($product['quantity']);
  83.             $orderDetails->setPrice($product['product']->getPrice());
  84.             $orderDetails->setTotal($product['product']->getPrice() * $product['quantity']);
  85.             
  86.             $this->entityManager->persist($orderDetails);
  87.            }
  88.             $this->entityManager->flush();
  89.             
  90.            return $this->render('order/add.html.twig', [
  91.                
  92.             'cart'=> $cart->getFull(),
  93.             'carrier' => $carriers,
  94.             'delivery' => $delivery_content,
  95.             'reference' => $order->getReference()
  96.             ]);
  97.            
  98.     }
  99.      return $this->redirectToRoute('cart');
  100.     }
  101. }