src/App/Controller/SectionController.php line 43

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Sylius package.
  4.  *
  5.  * (c) Paweł Jędrzejewski
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. declare (strict_types 1);
  11. namespace App\Controller;
  12. use App\Entity\Core\OrderItem;
  13. use App\Entity\Core\Product;
  14. use App\Entity\Section;
  15. use App\Form\Type\ContactType;
  16. use App\Form\Type\CustomEstimationType;
  17. use App\Service\EmailService;
  18. use Sylius\Bundle\ResourceBundle\Controller\ResourceController;
  19. use Symfony\Component\HttpFoundation\Request;
  20. use Symfony\Component\HttpFoundation\Response;
  21. class SectionController extends ResourceController
  22. {
  23.     public function getSectionTemplate(string $sectionSlug): Response
  24.     {
  25.         $section $this->get('doctrine')
  26.             ->getRepository(Section::class)
  27.             ->findOneBySlug($sectionSlug)
  28.         ;
  29.         return $this->render('app/Section/templates/' $section->getCurrentTemplateValue() . '.html.twig', array(
  30.             'section' => $section,
  31.         ));
  32.     }
  33.     public function solutionsAndApplications($sectionSlug): Response
  34.     {
  35.         return $this->getSectionTemplate($sectionSlug);
  36.     }
  37.     public function companyShow($sectionSlug): Response
  38.     {
  39.         return $this->getSectionTemplate($sectionSlug);
  40.     }
  41.     public function customizedSolutions(Request $request)
  42.     {
  43.         $productRepository $this->container->get('sylius.repository.product');
  44.         $products          $productRepository->getByTypeCustom();
  45.         return $this->render('app/CustomizedSolutions/customized_solutions.html.twig', [
  46.             'products' => $products,
  47.         ]);
  48.     }
  49.     public function customizedProduct(Request $request$productCode): Response
  50.     {
  51.         $productRepository $this->container->get('sylius.repository.product');
  52.         $product           $productRepository->findOneByCode($productCode);
  53.         // $productVariant    = $product->getVariants()->first();
  54.         $orderItem           = new OrderItem;
  55.         if (!$product || $product->getType() !== Product::CUSTOM) {
  56.             return $this->render('app/CustomizedSolutions/_product.html.twig');
  57.         }
  58.         $form $this->createForm(CustomEstimationType::class, $orderItem);
  59.         $form $this->createForm(CustomEstimationType::class, $orderItem, [
  60.             'product' => $product
  61.         ]);
  62.         $form->handleRequest($request);
  63.         if ($form->isSubmitted() && $form->isValid()) {
  64.             $estimationCart $this->container->get('App\Service\EstimationCartService');
  65.             $cart           $estimationCart->getCart();
  66.             if (!$cart) {
  67.                 $cart $estimationCart->newCart();
  68.             }
  69.             $productAttributeItems $form['productAttributeItems']->getData();
  70.             $quantity              $form['quantity']->getData();
  71.             $metres                $form['metres']->getData();
  72.             $estimationCart->addItemToCart($cart$product->getVariants()->first()->getCode(), $quantity$metres$productAttributeItems);
  73.             return $this->redirectToRoute('app_estimation_cart');
  74.         }
  75.         return $this->render('app/CustomizedSolutions/_product.html.twig', [
  76.             'product' => $product,
  77.             'form'    => $form->createView(),
  78.         ]);
  79.     }
  80.     public function customizedProductEdit(Request $request$orderItemId): Response
  81.     {
  82.         $orderItemRepository $this->container->get('sylius.repository.order_item');
  83.         $orderItem           $orderItemRepository->findOneById($orderItemId);
  84.         
  85.         $form $this->createForm(CustomEstimationType::class, $orderItem, [
  86.             'product' => $orderItem->getVariant()->getProduct()
  87.         ]);
  88.         $form->handleRequest($request);
  89.         if ($form->isSubmitted() && $form->isValid()) {
  90.             $entityManager $this->getDoctrine()->getManager();
  91.             $orderItem $form->getData();
  92.             $entityManager->persist($orderItem);
  93.             $entityManager->flush();
  94.             return $this->redirectToRoute('app_estimation_cart');
  95.         }
  96.         return $this->render('app/CustomizedSolutions/_edit_product.html.twig', [
  97.             'orderItem' => $orderItem,
  98.             'form'      => $form->createView(),
  99.         ]);
  100.     }
  101.     public function contactForm(Request $requestEmailService $emailManager): Response
  102.     {
  103.         $form $this->createForm(ContactType::class);
  104.         $form->handleRequest($request);
  105.         if ($form->isSubmitted() && $form->isValid()) {
  106.             $contactData $form->getData();
  107.             try {
  108.                 $emailManager->sendContactEmail($contactData['email'], [
  109.                     'contactData' => $contactData,
  110.                 ]);
  111.                 $this->addFlash('success''El mensaje se ha sido enviado con éxito!');
  112.             } catch (\Swift_TransportException $e) {
  113.                 $this->addFlash('danger'$e->getMessage());
  114.             }
  115.             return $this->redirectToRoute('app_contact_form');
  116.         }
  117.         return $this->render('app/Section/templates/contact_form.html.twig', [
  118.             'form' => $form->createView(),
  119.         ]);
  120.     }
  121.     public function onlineStore(): Response
  122.     {
  123.         $taxonRepository   $this->container->get('sylius.repository.taxon');
  124.         $productRepository $this->container->get('sylius.repository.product');
  125.         $offerRepository   $this->container->get('app.repository.offer');
  126.         $channelContext    $this->container->get('sylius.context.channel');
  127.         $currentChannel    $channelContext->getChannel();
  128.         $parentGroup $taxonRepository->findOneByCode('products-and-services');
  129.         $products    $productRepository->findAllOnTaxon($parentGroup$currentChannel);
  130.         $offers      $offerRepository->findAll();
  131.         return $this->render('app/Section/templates/base_online_store.html.twig', [
  132.             'parentGroup' => $parentGroup,
  133.             'products'    => $products,
  134.             'offers'      => $offers,
  135.         ]);
  136.     }
  137.     public function getResultsProductsAction(Request $request)
  138.     {
  139.         $taxonRepository   $this->container->get('sylius.repository.taxon');
  140.         $productRepository $this->container->get('sylius.repository.product');
  141.         $parentGroupId $request->get('parentGroup');
  142.         $order         $request->get('order');
  143.         $attribute     $request->get('attribute');
  144.         $parentGroup $taxonRepository->findOneById($parentGroupId);
  145.         $products $productRepository->OrderBy($parentGroup$order$attribute);
  146.         $template $this->render('app/OnlineStore/sorting.html.twig', [
  147.             'parentGroup' => $parentGroup,
  148.             'products'    => $products,
  149.         ]);
  150.         return $template;
  151.     }
  152. }