src/Controller/DefaultController.php line 32

  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use App\Entity\Fileasset;
  8. use App\Entity\Page;
  9. use App\Repository\PageRepository;
  10. use App\Entity\Tag;
  11. use App\Repository\TagRepository;
  12. use App\Entity\TextFragment;
  13. use App\Repository\TextFragmentRepository;
  14. use App\Entity\Product;
  15. use App\Repository\ProductRepository;
  16. use App\Entity\ProductTag;
  17. use App\Form\ProductType;
  18. use App\Form\ProductChildType;
  19. use App\Form\AddToCartType;
  20. use App\Manager\CartManager;
  21. use Doctrine\ORM\EntityManagerInterface;
  22. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  23. class DefaultController extends AbstractController
  24. {
  25.     
  26.     private EntityManagerInterface $entityManager;
  27.     
  28.     
  29.     #[Route('/realisaties'name'app_realisations')]
  30.     public function realisaties(TagRepository $tagrep): Response
  31.     {
  32.         
  33.         $realid =  $_ENV['MY_REALISATIONS'];
  34.         
  35.         $tag $tagrep->findOneById($realid);
  36.           
  37.         $tags $tag->getChildren();
  38.         
  39.         
  40.         return $this->render('st/realisaties.html.twig', [
  41.             'tags' => $tags
  42.         ]);
  43.     }
  44.     
  45.     
  46.     
  47.     
  48.         
  49.     #[Route('/start'name'app_start')]
  50.     public function start(): Response
  51.     {
  52.         
  53.        $site =  $_ENV['SITE'];
  54.        $templatePath "st/".$site."/start.html.twig";
  55.            
  56.         return $this->render($templatePath, [
  57.             'controller_name' => 'DefaultController',
  58.             'site' => $site,
  59.         ]);
  60.     }
  61.     
  62.     
  63.     #[Route('/dealers/'name'app_dealers')]
  64.     public function dealers(): Response
  65.     {
  66.         
  67.        $site =  $_ENV['SITE'];
  68.        $templatePath "st/".$site."/dealers.html.twig";
  69.            
  70.         return $this->render($templatePath, [
  71.             'controller_name' => 'DefaultController',
  72.             'site' => $site,
  73.         ]);
  74.     }
  75.     
  76.     
  77.     
  78.     #[Route('/'name'app_default')]
  79.     public function index(): Response
  80.     {
  81.          $fullDomain $_SERVER['HTTP_HOST'];
  82.         $domainParts explode('.'$fullDomain);
  83.         if (count($domainParts) > && $domainParts[0] === 'www') {
  84.             array_shift($domainParts);
  85.         }
  86.         array_pop($domainParts);
  87.         $domain implode('.'$domainParts);
  88.         $templatePath 'st/' $domain '/index.html.twig';
  89.            
  90.         return $this->render($templatePath, [
  91.             'controller_name' => 'DefaultController',
  92.         ]);
  93.     }
  94.     
  95.   
  96.     
  97.     
  98.     #[Route('/promo/'name'promo'methods: ['GET'])]
  99.     public function promo(ProductRepository $productsrep,TagRepository $tagRepository): Response
  100.     {
  101.        $products $productsrep->findPromos(null);
  102.        
  103.        $id 1;
  104.        $group $tagRepository->findOneBy(array('id' =>$id));
  105.        
  106.        
  107.        
  108.         return $this->render('st/promo.html.twig', [
  109.             'products' => $products,
  110.             'group' => $group,
  111.             
  112.         ]);
  113.     }
  114.     
  115.     #[Route('/products/'name'products'methods: ['GET'])]
  116.     public function products(ProductRepository $productsrep,TagRepository $tagRepository): Response
  117.     {
  118.        $products $productsrep->findAll();
  119.        
  120.        $id 1;
  121.        $group $tagRepository->findOneBy(array('id' =>$id));
  122.        
  123.        
  124.        $site =  $_ENV['SITE'];
  125.        $template "st/".$site."/products.html.twig";
  126.        
  127.        
  128.         return $this->render($template, [
  129.             'products' => $products,
  130.             'group' => $group,
  131.             'site' => $site,
  132.             
  133.         ]);
  134.     }
  135.     
  136.      
  137.     
  138.     #[Route('/tagmenu/{parent}'name'tag_menu')]
  139.     public function tagmenu(TagRepository $tagRepository,Tag $parent): Response
  140.     {
  141.         return $this->render('st/tagmenu.html.twig', [
  142.             'tags' => $tagRepository->findBy(array('Parent' => $parent), array('id' => 'DESC'))
  143.         ]);
  144.     }
  145.     
  146.     
  147.     #[Route('/blocks/{parent}'name'tag_blocks')]
  148.     public function tagblocks(TagRepository $tagRepository,Tag $parent): Response
  149.     {
  150.         
  151.         return $this->render('st/tagblocks.html.twig', [
  152.             'tags' => $tagRepository->findBy(array('Parent' => $parent), array('id' => 'DESC'))
  153.         ]);
  154.         
  155.     }
  156.     
  157.     
  158.     #[Route('/checkboxes/{parent}'name'tag_checkboxes')]
  159.     public function checkboxes(TagRepository $tagRepository,Tag $parent): Response
  160.     {
  161.         
  162.         return $this->render('st/tagcheckboxes.html.twig', [
  163.             'tags' => $tagRepository->findBy(array('Parent' => $parent), array('id' => 'DESC'))
  164.         ]);
  165.         
  166.     }
  167.     
  168.     
  169.     
  170.     
  171.     
  172.     
  173.     #[Route('/fg/{id}'name'fragment')]
  174.     
  175.     public function fg(TextFragmentRepository $textfragmentRepository$id): Response
  176.     {
  177.         
  178.         $fragment $textfragmentRepository->findOneBy(array('id' =>$id));
  179.         if($fragment == null){
  180.           $data "empty fragment with id "$id;
  181.         }else{
  182.             $data $fragment->getText();
  183.             
  184.         }
  185.         
  186.         $response = new Response();
  187.         $response->setContent($data);
  188.         
  189.         return $response;
  190.         
  191.         
  192.     }
  193.      
  194.     #[Route('/nl/{name}'name'pagenl'defaults: ['name' => null])]
  195.     #[Route('/fr/{name}'name'pagefr'defaults: ['name' => null])]
  196.     #[Route('/en/{name}'name'pageen'defaults: ['name' => null])]
  197.     public function page(PageRepository $PageRepository,$name=null): Response
  198.     {
  199.      
  200.         
  201.         $site =  $_ENV['SITE'];
  202.         $page $PageRepository->findOneBy(array('Name' =>$name));
  203.         
  204.         
  205.         
  206.         if($page){
  207.             $template "st/".$site."/".$page->getTemplate().".html.twig";
  208.             
  209.         }else{
  210.             $template "st/".$site."/404.html.twig";
  211.         }
  212.         
  213.         return $this->render($template, [
  214.             'site' => $site,
  215.            
  216.             
  217.         ]);
  218.         
  219.     }
  220.     
  221.     
  222.    
  223.     
  224.     
  225.     
  226.     #[Route('/group/{name}/{id}'name'group'defaults: ['name' => null])]
  227.     
  228.     public function group(TagRepository $tagRepository,Tag $id): Response
  229.     {
  230.          
  231.             
  232.         $site =  $_ENV['SITE'];
  233.         $template "st/".$site."/group.html.twig";
  234.         
  235.         $group $tagRepository->findOneBy(array('id' =>$id));
  236.         
  237.         
  238.         
  239.         return $this->render($template, [
  240.             'group' => $group,
  241.             'site' => $site,
  242.             
  243.         ]);
  244.         
  245.         
  246.     } 
  247.     
  248.    
  249.     
  250.      
  251.     
  252.  
  253.     #[Route('/detail/{id}'name'product_detail'defaults: ['name' => null])]
  254.     public function detail(Product $productRequest $requestCartManager $cartManager): Response
  255.     {
  256.         $form $this->createForm(AddToCartType::class);
  257.         
  258.         $form->handleRequest($request);
  259.         
  260.         if ($form->isSubmitted() && $form->isValid()) {
  261.             $item $form->getData();
  262.             $item->setProduct($product);
  263.             
  264.             $cart $cartManager->getCurrentCart();
  265.             $cart
  266.             ->addOrderItem($item)
  267.             ->setUpdatedAt(new \DateTime());
  268.             
  269.             $cartManager->save($cart);
  270.             
  271.             //return $this->redirectToRoute('product_detail', ['id' => $product->getId()]);
  272.             return $this->redirectToRoute('cart');
  273.             
  274.         }
  275.         
  276.             
  277.        $site =  $_ENV['SITE'];
  278.        $template "st/".$site."/product.html.twig";
  279.        
  280.        
  281.         return $this->render($template, [
  282.             'product' => $product,
  283.             'form' => $form->createView(),
  284.             'site' => $site,
  285.         ]);
  286.     }
  287.     
  288.     
  289.     
  290.     
  291.     
  292.     /**
  293.      * @Route("/publicdownload/{id}", name="fileasset_publicdownload", methods={"GET"})
  294.      */
  295.     public function publicdownload(Fileasset $fileasset): Response
  296.     {
  297.         
  298.        
  299.         
  300.         // $fileasset = $em->getRepository('DavidAppBundle:FileAsset')->find($id);
  301.         
  302.         $filename $fileasset->getFilename();
  303.         $folder $this->getParameter('upload_directory');
  304.         
  305.         if($fileasset->isPublic() == true){
  306.             $path $folder.$fileasset->getFilename();
  307.             return new BinaryFileResponse($path);
  308.             
  309.         }
  310.         
  311.     }
  312.     
  313.     
  314.    
  315.     
  316.     
  317.     
  318. }