src/Controller/ShopController.php line 45

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Item;
  4. use App\Entity\Menu;
  5. use App\Entity\Criterion;
  6. use App\Entity\Category;
  7. use App\Repository\MenuRepository;
  8. use App\Repository\ItemRepository;
  9. use App\Repository\CategoryRepository;
  10. use App\Repository\CriterionRepository;
  11. use App\Repository\CakeRepository;
  12. // use App\Services\ToolsService;
  13. use Doctrine\ORM\EntityManagerInterface;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use App\Entity\Product;
  17. use App\Repository\OfferRepository;
  18. use App\Services\ToolsService;
  19. use Symfony\Component\HttpFoundation\Session\Session;
  20. class ShopController extends AppController
  21. {
  22.     public function __construct(
  23.         MenuRepository $menuRepository,
  24.         CategoryRepository $categoryRepository,
  25.         ItemRepository $itemRepository,
  26.         CriterionRepository $criterionRepository,
  27.         CakeRepository $cakeRepository,
  28.         OfferRepository $offerRepository,
  29.         EntityManagerInterface $em
  30.     ) {
  31.         parent::__construct(
  32.             $menuRepository,
  33.             $categoryRepository,
  34.             $itemRepository,
  35.             $criterionRepository,
  36.             $cakeRepository,
  37.             $offerRepository,
  38.             $em
  39.         );
  40.     }
  41.     public function shop(Request $request): Response
  42.     {
  43.         $route $request->query->get('route');
  44.         $target $request->query->get('id');
  45.         $menus $this->menuRepository->findAll();
  46.         $items $this->itemRepository->findAll();
  47.         $longestCriteriaItem null;
  48.         $longestLength 0;
  49.         foreach ($items as $item) {
  50.             $criteriaString '';
  51.             foreach ($item->getCriterion() as $criterion) {
  52.                 $criteriaString .= $criterion->getLabel();
  53.             }
  54.             $currentLength strlen($criteriaString);
  55.             if ($currentLength $longestLength) {
  56.                 $longestLength $currentLength;
  57.                 $longestCriteriaItem $item;
  58.             }
  59.         }
  60.         $criteriaString '';
  61.         foreach ($longestCriteriaItem->getCriterion() as $criterion) {
  62.             $criteriaString .= $criterion->getLabel() . '-';
  63.         }
  64.         // Remove the trailing dash
  65.         $criteriaString rtrim($criteriaString'-');
  66.         // Calculate the length
  67.         $totalLength strlen($criteriaString);
  68.         $categories $this->categoryRepository->findAll();
  69.         $groupedItems = [];
  70.         foreach ($items as $item) {
  71.             $categoryId $item->getCategoryId()->getId();
  72.             if (!isset($groupedItems[$categoryId])) {
  73.                 $groupedItems[$categoryId] = [];
  74.             }
  75.             $groupedItems[$categoryId][] = $item;
  76.         }
  77.         // $priceRanges = $this->menuRepository->getPriceRanges();
  78.         return $this->renderWithParams('app/shop.html.twig', [
  79.             'menus' => $menus,
  80.             'groupedItems' => $groupedItems,
  81.             'items' => $items,
  82.             'totalLength' => $totalLength,
  83.             'categories' => $categories,
  84.             'route' => $route,
  85.             'target' => $target
  86.             // 'priceRanges' => $priceRanges,
  87.         ]);
  88.         //        $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
  89.     }
  90.     public function dayshop(Request $request): Response
  91.     {
  92.         $route $request->query->get('route');
  93.         $target $request->query->get('id');
  94.         $menus $this->menuRepository->findAll();
  95.         $items $this->itemRepository->findAll();
  96.         $longestCriteriaItem null;
  97.         $longestLength 0;
  98.         foreach ($items as $item) {
  99.             $criteriaString '';
  100.             foreach ($item->getCriterion() as $criterion) {
  101.                 $criteriaString .= $criterion->getLabel();
  102.             }
  103.             $currentLength strlen($criteriaString);
  104.             if ($currentLength $longestLength) {
  105.                 $longestLength $currentLength;
  106.                 $longestCriteriaItem $item;
  107.             }
  108.         }
  109.         $criteriaString '';
  110.         foreach ($longestCriteriaItem->getCriterion() as $criterion) {
  111.             $criteriaString .= $criterion->getLabel() . '-';
  112.         }
  113.         // Remove the trailing dash
  114.         $criteriaString rtrim($criteriaString'-');
  115.         // Calculate the length
  116.         $totalLength strlen($criteriaString);
  117.         $categories $this->categoryRepository->findAll();
  118.         // $priceRanges = $this->menuRepository->getPriceRanges();
  119.         return $this->renderWithParams('app/dayshop.html.twig', [
  120.             'menus' => $menus,
  121.             'categories' => $categories,
  122.             'totalLength' => $totalLength,
  123.             'route' => $route,
  124.             'target' => $target
  125.             // 'priceRanges' => $priceRanges,
  126.         ]);
  127.         //        $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
  128.     }
  129.     public function cakeshop(Request $requestToolsService $toolsService): Response
  130.     {
  131.         $route $request->query->get('route');
  132.         $target $request->query->get('id');
  133.         $cakes $this->cakeRepository->findAll();
  134.         if ($request->isMethod('POST')) {
  135.             // Enoie du message client
  136.             $username $request->request->get('username');
  137.             $mail $request->request->get('email');
  138.             $contactMsg $request->request->get('contact_message');
  139.             $from 'Technique@test.com';
  140.             $to 'test@blabla.fr';
  141.             $subject ' Nouveau message client de ' $username;
  142.             $params = [
  143.                 'username' => $username,
  144.                 'mail' => $mail,
  145.                 'message' => $contactMsg
  146.             ];
  147.             $toolsService->sendMail($from$to$subject$contactMsg$params);
  148.         }
  149.         return $this->renderWithParams('app/cakeshop.html.twig', [
  150.             'cakes' => $cakes,
  151.             'route' => $route,
  152.             'target' => $target
  153.             // 'priceRanges' => $priceRanges,
  154.         ]);
  155.     }
  156.     public function offershop(Request $requestToolsService $toolsService): Response
  157.     {
  158.         $route $request->query->get('route');
  159.         $target $request->query->get('id');
  160.         $offers $this->offerRepository->findAll();
  161.         if ($request->isMethod('POST')) {
  162.             // Enoie du message client
  163.             $username $request->request->get('username');
  164.             $mail $request->request->get('email');
  165.             $contactMsg $request->request->get('contact_message');
  166.             $from 'Technique@test.com';
  167.             $to 'test@blabla.fr';
  168.             $subject ' Nouveau message client de ' $username;
  169.             $params = [
  170.                 'username' => $username,
  171.                 'mail' => $mail,
  172.                 'message' => $contactMsg
  173.             ];
  174.             $toolsService->sendMail($from$to$subject$contactMsg$params);
  175.         }
  176.         return $this->renderWithParams('app/offershop.html.twig', [
  177.             'offers' => $offers,
  178.             'route' => $route,
  179.             'target' => $target
  180.             // 'priceRanges' => $priceRanges,
  181.         ]);
  182.     }
  183.     public function contact(Request $requestToolsService $toolsService): Response
  184.     {
  185.         if ($request->isMethod('POST')) {
  186.             $username $request->request->get('username');
  187.             $mail $request->request->get('email');
  188.             $contactMsg $request->request->get('contact_message');
  189.             $from 'Technique@test.com';
  190.             $to 'test@blabla.fr';
  191.             $subject 'Nouveau message client de ' $username;
  192.             $params = [
  193.                 'username' => $username,
  194.                 'mail' => $mail,
  195.                 'message' => $contactMsg
  196.             ];
  197.             // Send the email
  198.             $toolsService->sendMail($from$to$subject$contactMsg$params);
  199.         }
  200.         return $this->renderWithParams('app/contact.html.twig', []);
  201.     }
  202. }