src/Controller/ViewShopController.php line 518

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Controller\Classes\Telegram;
  4. use App\Entity\BusinessTime;
  5. use App\Entity\Category;
  6. use App\Entity\Feedback;
  7. use App\Entity\Impressum;
  8. use App\Entity\OrderItem;
  9. use App\Entity\Orders;
  10. use App\Entity\ProductCars;
  11. use App\Entity\Products;
  12. use App\Entity\ShopData;
  13. use App\Entity\Tables;
  14. use App\Form\CartType;
  15. use App\Form\OrderType;
  16. use App\Form\UserFeedbackType;
  17. use App\Manager\CartManager;
  18. use App\Storage\CartSessionStorage;
  19. use DateTime;
  20. use Doctrine\ORM\EntityManagerInterface;
  21. use phpDocumentor\Reflection\Types\True_;
  22. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  23. use Symfony\Component\HttpFoundation\JsonResponse;
  24. use Symfony\Component\HttpFoundation\Request;
  25. use Symfony\Component\HttpFoundation\Response;
  26. use Symfony\Component\Routing\Annotation\Route;
  27. class ViewShopController extends AbstractController
  28. {
  29.     #[Route('/restaurant-und-cafe'name'restaurantCafe')]
  30.     public function index(EntityManagerInterface $entityManager): Response
  31.     {
  32.         $shop $entityManager->getRepository(ShopData::class)->findAll();
  33.         return $this->render('view_shop/index.html.twig', [
  34.             'controller_name' => 'ViewShopController',
  35.             'user' => $this->getUser(),
  36.             'shops' => $shop
  37.         ]);
  38.     }
  39.    /* #[Route('/restaurant-und-cafe/shop/{shopName}/{table}', name: 'restaurantCafeShop')]
  40.     public function shop(EntityManagerInterface $entityManager, CartManager $cartManager, Request $request, string $shopName, string $table): Response
  41.     {
  42.         $shop = $entityManager->getRepository(ShopData::class)->findOneBy(array('geschaftName'=>$shopName));
  43.         $categories = $entityManager->getRepository(Category::class)->findBy(array('createdBy'=>$shop->getCreatedBy()));
  44.         $impressum = $entityManager->getRepository(Impressum::class)->findOneBy(['createdBy'=> $shop->getCreatedBy()]);
  45.         $table = $entityManager->getRepository(Tables::class)->findOneBy(['createdBy'=> $shop->getCreatedBy(), 'name'=> $table ]);
  46.      /*   $shopSetting = $shop->getShopSetting();
  47.         $shopTemplatePath = $shopSetting->getShopTemplates()->getPath();*/
  48.        /* $user = $shop->getCreatedBy();
  49.         $cart =  $cartManager->getCurrentCart();*/
  50.      /*   $cart->setTable($table);
  51.         $table->setEmpty(false);
  52.         $entityManager->persist($table);
  53.         $entityManager->flush();*/
  54.         /*$entityManager->persist($cart);
  55.         $entityManager->flush();
  56.         $allProductWithCategory = array();
  57.         foreach($categories as $cat) {
  58.             $products = $entityManager->getRepository(Products::class)->findBy(['createdBy'=>$shop->getCreatedBy(), 'category'=> $cat]);
  59.             $allProductWithCategory[$cat->getName()] = $products;
  60.         }
  61.         return $this->render("@custom_templates/shop/templates/demo/shop.html.twig", [
  62.             'controller_name' => 'StreamController',
  63.             'user' => $this->getUser(),
  64.             's' => $shop,
  65.             'impress' =>$impressum,
  66.             'allProducts' => $allProductWithCategory,
  67.             'total' =>  $cart->getTotal(),
  68.             'c' => $categories,
  69.             'table'=>$table
  70.         ]);*/
  71.     /*}*/
  72.     #[Route('/restaurant-und-cafe/shop/{shopName}'name'restaurantCafeShopDemo')]
  73.     public function shopDemo(EntityManagerInterface $entityManagerCartManager $cartManagerRequest $requeststring $shopName): Response
  74.     {
  75.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('shopUrl'=>$shopName));
  76.         $categories $entityManager->getRepository(Category::class)->findBy(array('createdBy'=>$shop->getCreatedBy()));
  77.         $impressum $entityManager->getRepository(Impressum::class)->findOneBy(['createdBy'=> $shop->getCreatedBy()]);
  78.       /*  $shopSetting = $shop->getShopSetting();
  79.         $shopTemplatePath = $shopSetting->getShopTemplates()->getPath();*/
  80.         $user $shop->getCreatedBy();
  81.         $cart =  $cartManager->getCurrentCart();
  82.         $allProductWithCategory = array();
  83.         foreach($categories as $cat) {
  84.             $products $entityManager->getRepository(Products::class)->findBy(['createdBy'=>$shop->getCreatedBy(), 'category'=> $cat]);
  85.             $allProductWithCategory[$cat->getName()] = $products;
  86.         }
  87.         //dd($allProductWithCategory);
  88.         return $this->render("@custom_templates/shop/templates/demo/shop.html.twig", [
  89.             'controller_name' => 'StreamController',
  90.             'user' => $this->getUser(),
  91.             's' => $shop,
  92.             'impress' =>$impressum,
  93.             'allProducts' => $allProductWithCategory,
  94.             'total' =>  $cart->getTotal(),
  95.             'c' => $categories,
  96.         ]);
  97.     }
  98.     #[Route('/restaurant-und-cafe/menus/{shopName}/{table}'name'restaurantmenusAdditional')]
  99.     public function restaurantmenusAdditional(EntityManagerInterface $entityManagerCartManager $cartManagerRequest $requeststring $shopNamestring $table): Response
  100.     {
  101.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('geschaftName'=>$shopName));
  102.         $categories $entityManager->getRepository(Category::class)->findBy(array('createdBy'=>$shop->getCreatedBy()));
  103.         $impressum $entityManager->getRepository(Impressum::class)->findOneBy(['createdBy'=> $shop->getCreatedBy()]);
  104.         $table $entityManager->getRepository(Tables::class)->findOneBy(['createdBy'=> $shop->getCreatedBy(), 'name'=> $table ]);
  105.         $user $shop->getCreatedBy();
  106.         $cart =  $cartManager->getCurrentCart();
  107.      /*   $cart->setTable($table);
  108.         $table->setEmpty(false);
  109.         $entityManager->persist($table);
  110.         $entityManager->flush();*/
  111.         $entityManager->persist($cart);
  112.         $entityManager->flush();
  113.         $allProductWithCategory = array();
  114.         foreach($categories as $cat) {
  115.             $products $entityManager->getRepository(Products::class)->findBy(['createdBy'=>$shop->getCreatedBy(), 'category'=> $cat]);
  116.             $allProductWithCategory[$cat->getName()] = $products;
  117.         }
  118.         return $this->render("@custom_templates/menu/templates/demoAdditional/menu.html.twig", [
  119.             'controller_name' => 'StreamController',
  120.             'user' => $this->getUser(),
  121.             's' => $shop,
  122.             'impress' =>$impressum,
  123.             'allProducts' => $allProductWithCategory,
  124.             'total' =>  $cart->getTotal(),
  125.             'c' => $categories,
  126.             'table'=>$table
  127.         ]);
  128.     }
  129.     #[Route('/restaurant-und-cafe/callKeller/{shopName}/{table}'name'callKeller')]
  130.     public function callKeller(EntityManagerInterface $entityManagerCartManager $cartManagerRequest $requeststring $shopNamestring $table): Response
  131.     {
  132.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('shopUrl'=>$shopName));
  133.         if($shop) {
  134.             $table $entityManager->getRepository(Tables::class)->findOneBy(['createdBy'=> $shop->getCreatedBy(), 'name'=> $table ]);
  135.             if($table) {
  136.                 $messega $table->getName() . " - " "Подойдите пожайлуйста";
  137.                 $table->setShowAlert(true);
  138.                 $table->setEmpty(false);
  139.                 $this->sendMessage($shop->getShopTelegramAPI(), $messega'5310743804:AAHGWMMLxK1u1q8-HgdllPuZAQE6ceU6LxQ');
  140.                 $entityManager->flush();
  141.                 return $this->json(true);
  142.             } else {
  143.                 return $this->json(false);
  144.             }
  145.         } else {
  146.             return $this->json(false);
  147.         }
  148.     }
  149.     #[Route('/restaurant-und-cafe/callKellerDissable/{shopName}/{table}/{id}'name'callKellerTableDissableTelegram')]
  150.     public function callKellerAcceptTelegram(EntityManagerInterface $entityManagerCartManager $cartManagerRequest $requeststring $shopNamestring $tablestring $id): Response
  151.     {
  152.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('shopTelegramAPI'=>$id));
  153.         if($shop->getConnector() !== $id) {
  154.             return $this->json("Falsche KEY");
  155.         }
  156.         $table $entityManager->getRepository(Tables::class)->findOneBy(['createdBy'=> $shop->getCreatedBy(), 'name'=> $table ]);
  157.         if($table) {
  158.             $table->setShowAlert(true);
  159.             $entityManager->persist($table);
  160.             $entityManager->flush();
  161.             return $this->json(true);
  162.         } else {
  163.             return $this->json(false);
  164.         }
  165.     }
  166.     #[Route('/restaurant-und-cafe/reservirung/{shopName}'name'restaurantReservirung')]
  167.     public function restaurantReservirung(EntityManagerInterface $entityManagerCartManager $cartManagerRequest $requeststring $shopNamestring $table): Response
  168.     {
  169.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('geschaftName'=>$shopName));
  170.         $categories $entityManager->getRepository(Category::class)->findBy(array('createdBy'=>$shop->getCreatedBy()));
  171.         $impressum $entityManager->getRepository(Impressum::class)->findOneBy(['createdBy'=> $shop->getCreatedBy()]);
  172.         $table $entityManager->getRepository(Tables::class)->findOneBy(['createdBy'=> $shop->getCreatedBy(), 'name'=> $table ]);
  173.         /*   $shopSetting = $shop->getShopSetting();
  174.            $shopTemplatePath = $shopSetting->getShopTemplates()->getPath();*/
  175.         $user $shop->getCreatedBy();
  176.         $cart =  $cartManager->getCurrentCart();
  177.       /*  $cart->setTable($table);
  178.         $table->setEmpty(false);
  179.         $entityManager->persist($table);
  180.         $entityManager->flush();*/
  181.         $entityManager->persist($cart);
  182.         $entityManager->flush();
  183.         $allProductWithCategory = array();
  184.         foreach($categories as $cat) {
  185.             $products $entityManager->getRepository(Products::class)->findBy(['createdBy'=>$shop->getCreatedBy(), 'category'=> $cat]);
  186.             $allProductWithCategory[$cat->getName()] = $products;
  187.         }
  188.         return $this->render("@custom_templates/shop/templates/demo/shop.html.twig", [
  189.             'controller_name' => 'StreamController',
  190.             'user' => $this->getUser(),
  191.             's' => $shop,
  192.             'impress' =>$impressum,
  193.             'allProducts' => $allProductWithCategory,
  194.             'total' =>  $cart->getTotal(),
  195.             'c' => $categories,
  196.             'table'=>$table
  197.         ]);
  198.     }
  199.     #[Route('/autohause/{shopUrl}'name'autoHausMain')]
  200.     public function autoHause(EntityManagerInterface $entityManagerCartManager $cartManagerRequest $requeststring $shopUrl): Response
  201.     {
  202.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('shopUrl'=>$shopUrl));
  203.         $categories $entityManager->getRepository(Category::class)->findBy(array('createdBy'=>$shop->getCreatedBy()));
  204.         $user $shop->getCreatedBy();
  205.         $cart =  $cartManager->getCurrentCart();
  206.         return $this->render("@custom_templates/autohaus/templates/demo/shop.html.twig", [
  207.             'controller_name' => 'StreamController',
  208.             'user' => $this->getUser(),
  209.             's' => $shop,
  210.             'total' =>  $cart->getTotal(),
  211.             'c' => $categories,
  212.         ]);
  213.     }
  214.     #[Route('/apis/orders/{id}'name'demoOrders')]
  215.     public function orderList(EntityManagerInterface $entityManagerCartManager $cartManagerRequest $requeststring $id): Response
  216.     {
  217.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('id'=>$id));
  218.         $orders $entityManager->getRepository(Orders::class)->findBy(['shopID'=> $shop->getId()]);
  219.         return $this->json($orders);
  220.     }
  221.     #[Route('/autohause/{shopUrl}/{categoryUrl}'name'autoHausMainCat')]
  222.     public function autoHauseCat(EntityManagerInterface $entityManagerCartManager $cartManagerRequest $requeststring $shopUrlstring $categoryUrl): Response
  223.     {
  224.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('shopUrl'=>$shopUrl));
  225.         $categories $entityManager->getRepository(Category::class)->findBy(array('createdBy'=>$shop->getCreatedBy(), 'url'=>$categoryUrl));
  226.         $user $shop->getCreatedBy();
  227.         $cart =  $cartManager->getCurrentCart();
  228.         return $this->render("@custom_templates/autohaus/templates/demo/shopcat.html.twig", [
  229.             'controller_name' => 'StreamController',
  230.             'user' => $this->getUser(),
  231.             's' => $shop,
  232.             'total' =>  $cart->getTotal(),
  233.             'c' => $categories,
  234.         ]);
  235.     }
  236.     #[Route('/autohause/{shopUrl}/{categoryUrl}/{pUrl}'name'autoHausSingle')]
  237.     public function autoHauseSingle(EntityManagerInterface $entityManagerCartManager $cartManagerRequest $requeststring $pUrlstring $shopUrlstring $categoryUrl): Response
  238.     {
  239.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('shopUrl'=>$shopUrl));
  240.         $categories $entityManager->getRepository(Category::class)->findBy(array('createdBy'=>$shop->getCreatedBy(), 'url'=>$categoryUrl));
  241.         $productCar $entityManager->getRepository(ProductCars::class)->findOneBy(['url'=>$pUrl'createdBy'=>$shop->getCreatedBy()]);
  242.         $impressum $entityManager->getRepository(Impressum::class)->findOneBy(['createdBy'=> $shop->getCreatedBy()]);
  243.         $user $shop->getCreatedBy();
  244.         $cart =  $cartManager->getCurrentCart();
  245.         return $this->render("@custom_templates/autohaus/templates/demo/shopsingle.html.twig", [
  246.             'controller_name' => 'StreamController',
  247.             'user' => $this->getUser(),
  248.             's' => $shop,
  249.             'product' => $productCar,
  250.             'impress' => $impressum,
  251.             'total' =>  $cart->getTotal(),
  252.             'c' => $categories,
  253.         ]);
  254.     }
  255.     #[Route('/restaurant-und-cafe/shop/{shopName}/addToCart/{id}'name'addToCart')]
  256.     public function AddCart(EntityManagerInterface $entityManagerCartManager $cartManager,Request $requeststring $shopNamestring $id): Response
  257.     {
  258.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('shopUrl'=>$shopName));
  259.         $items = new OrderItem();
  260.         $product $entityManager->getRepository(Products::class)->findOneBy(['id'=>$id]);
  261.         $items->setProduct($product);
  262.         $items->setQuantity(1);
  263.         $cart $cartManager->getCurrentCart();
  264.         $cart
  265.             ->addItem($items)
  266.             ->setShopID($shop)
  267.             ->setUpdatedAt(new \DateTime());
  268.         $cartManager->save($cart);
  269.         return $this->redirectToRoute('restaurantCafeShopDemo',array('shopName' => $shopName));
  270.     }
  271.     #[Route('/restaurant-und-cafe/shop/{shopName}/cart'name'cart')]
  272.     public function cartView(EntityManagerInterface $entityManagerCartManager $cartManagerRequest $requeststring $shopNameCartSessionStorage $cartStorage): Response
  273.     {
  274.         $cart $cartManager->getCurrentCart();
  275.         $form $this->createForm(CartType::class, $cart);
  276.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('shopUrl'=>$shopName));
  277.         $categories $entityManager->getRepository(Category::class)->findBy(array('createdBy'=>$shop->getCreatedBy()));
  278.         $form->handleRequest($request);
  279.         $impressum $entityManager->getRepository(Impressum::class)->findOneBy(['createdBy'=> $shop->getCreatedBy()]);
  280.        /* $shopSetting = $shop->getShopSetting();
  281.         $shopTemplatePath = $shopSetting->getShopTemplates()->getPath();*/
  282.         if ($form->isSubmitted()) {
  283.             $cart->setUpdatedAt(new \DateTime());
  284.             $cart->setStatus("InProcess");
  285.             $cartManager->save($cart);
  286.             return $this->redirectToRoute('cart', ['shopName'=>$shopName]);
  287.         }
  288.         return $this->render("@custom_templates/shop/templates/demo/cart.html.twig", [
  289.             'cart' => $cart,
  290.             'user' => $this->getUser(),
  291.             's' => $shop,
  292.             'impress' => $impressum,
  293.             'total' =>  $cart->getTotal(),
  294.             'c' => $categories,
  295.             'form' => $form->createView(),
  296.         ]);
  297.     }
  298.     #[Route('/restaurant-und-cafe/shop/{shopName}/checkout'name'checkout')]
  299.     public function checkoutPage(EntityManagerInterface $entityManagerCartManager $cartManagerRequest $requeststring $shopNameCartSessionStorage $cartStorage): Response
  300.     {
  301.         $cart $cartManager->getCurrentCart();
  302.         $orders $entityManager->getRepository(Orders::class)->findOneBy(['id'=>$cart->getId()]);
  303.         $form $this->createForm(OrderType::class, $orders);
  304.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('shopUrl'=>$shopName));
  305.         $impressum $entityManager->getRepository(Impressum::class)->findOneBy(['createdBy'=> $shop->getCreatedBy()]);
  306.         $categories $entityManager->getRepository(Category::class)->findBy(array('createdBy'=>$shop->getCreatedBy()));
  307.         $form->handleRequest($request);
  308.         $prefix $shop->getOrderPrefix();
  309.         $dateNow = new DateTime('now');
  310.         $dateStringFormat$dateNow->format('YmdHis');
  311.         if ($form->isSubmitted()) {
  312.             $order $form->getNormData();
  313.             $order->setShopID($shop);
  314.             $order->setTotalCart($cart->getTotal());
  315.             $order->setOrderNummer($prefix $dateStringFormat );
  316.             $order->setCreatedAt($dateNow);
  317.             $order->setUpdatedAt($dateNow);
  318.             $order->setStatus("OrderComplite");
  319.             $entityManager->persist($order);
  320.             $entityManager->flush();
  321.             $cartStorage->clearCart();
  322.             return $this->redirectToRoute('checkoutReady', ['shopName'=>$shopName'dateStringFormat'=>$dateStringFormat]);
  323.         }
  324.        /* $shopSetting = $shop->getShopSetting();*/
  325.        /* $shopTemplatePath = $shopSetting->getShopTemplates()->getPath();*/
  326.         return $this->render("@custom_templates/shop/templates/demo/checkout.html.twig", [
  327.             'cart' => $cart,
  328.             'user' => $this->getUser(),
  329.             's' => $shop,
  330.             'impress' => $impressum,
  331.             'total' =>  $cart->getTotal(),
  332.             'c' => $categories,
  333.             'form' => $form->createView(),
  334.         ]);
  335.     }
  336.     #[Route('/restaurant-und-cafe/shop/{shopName}/checkout/ready/{dateStringFormat}'name'checkoutReady')]
  337.     public function checkoutPageReady(EntityManagerInterface $entityManagerCartManager $cartManagerRequest $requeststring $shopNamestring $dateStringFormatCartSessionStorage $cartStorage): Response
  338.     {
  339.         $cart $cartManager->getCurrentCart();
  340.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('shopUrl'=>$shopName));
  341.         /*  $cartRenew = $cartStorage;*/
  342.         $form $this->createForm(CartType::class, $cart);
  343.         $impressum $entityManager->getRepository(Impressum::class)->findOneBy(['createdBy'=> $shop->getCreatedBy()]);
  344.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('shopUrl'=>$shopName));
  345.         $categories $entityManager->getRepository(Category::class)->findBy(array('createdBy'=>$shop->getCreatedBy()));
  346.         $form->handleRequest($request);
  347.         /*
  348.                 if ($request->isMethod('POST')) {
  349.                     $cart->setUpdatedAt(new \DateTime());
  350.                     $cartManager->reload($cart);
  351.                     return $this->redirectToRoute('cart');
  352.                 }*/
  353.         if ($form->isSubmitted()) {
  354.             $cart->setUpdatedAt(new \DateTime());
  355.             $cartManager->save($cart);
  356.             return $this->redirectToRoute('cart', ['shopName'=>$shopName]);
  357.         }
  358.       /*  $shopSetting = $shop->getShopSetting();
  359.         $shopTemplatePath = $shopSetting->getShopTemplates()->getPath();*/
  360.         $telegramApi $shop->getShopTelegramAPI();
  361.         $prefix $shop->getOrderPrefix();
  362.         $text "Bestellnummer Nr. "$prefix $dateStringFormat  ." kam von der Website";
  363.         $this->sendMessage($telegramApi$text'5310743804:AAHGWMMLxK1u1q8-HgdllPuZAQE6ceU6LxQ');
  364.         return $this->render("@custom_templates/shop/templates/demo/cart.html.twig", [
  365.             'cart' => $cart,
  366.             'user' => $this->getUser(),
  367.             's' => $shop,
  368.             'impress' => $impressum,
  369.             'total' =>  $cart->getTotal(),
  370.             'c' => $categories,
  371.             'form' => $form->createView(),
  372.         ]);
  373.     }
  374.     function sendMessage($chatID$messaggio$token) {
  375.         //$url = "https://192.168.60.56:8000/restaurant-und-cafe/callKeller/demotest/G23";
  376.         //$url = "acceptTisch/callKellerDissable/demotest/G23";
  377.         /*$url = $url . "&text=" . urlencode($messaggio);*/
  378.         $keyboard = [
  379.             'inline_keyboard' => [
  380.                 [
  381.                     ['text' => 'Принять стол''callback_data' => 'acceptTisch''url' => "/acceptTisch"]
  382.                 ]
  383.             ],
  384.             'resize_keyboard' => true// Опционально: сделать клавиатуру масштабируемой
  385.         ];
  386.         $keyboard json_encode($keyboard);
  387.         $params = [
  388.             'chat_id' => $chatID,
  389.             'text' => $messaggio,
  390.             'reply_markup' => $keyboard,
  391.         ];
  392.         $url "https://api.telegram.org/bot" $token "/sendMessage?" http_build_query($params);;
  393.         $ch curl_init();
  394.         $optArray = array(
  395.             CURLOPT_URL => $url,
  396.             CURLOPT_RETURNTRANSFER => true,
  397.         );
  398.         curl_setopt_array($ch$optArray);
  399.         $result curl_exec($ch);
  400.         curl_close($ch);
  401.         return $result;
  402.     }
  403.     #[Route('/restaurant-und-cafe/feedback/{shopName}'name'leaveFeedback')]
  404.     public function leaveFeedback(EntityManagerInterface $entityManagerRequest $requeststring $shopName): Response
  405.     {
  406.         //$data = $request->get('email');
  407.         //$data = $request->getContent();
  408.        /* $data = json_decode($request->getContent(), true);
  409.         $feedback = new Feedback();*/
  410.         $data $request->getContent();
  411.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('geschaftName'=>$shopName));
  412.         $categories $entityManager->getRepository(Category::class)->findBy(array('createdBy'=>$shop->getCreatedBy()));
  413.         $feedback = new Feedback();
  414.         return $this->json("Added");
  415.     }
  416.     #[Route('/restaurant-und-cafe/menu/{shopName}'name'restaurantCafeMenu')]
  417.     public function menu(EntityManagerInterface $entityManagerRequest $requeststring $shopName): Response
  418.     {
  419.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('shopUrl'=>$shopName));
  420.         $categories $entityManager->getRepository(Category::class)->findBy(array('createdBy'=>$shop->getCreatedBy()));
  421.         $impressum $entityManager->getRepository(Impressum::class)->findOneBy(['createdBy'=> $shop->getCreatedBy()]);
  422.         $feedback = new Feedback();
  423.         $form $this->createForm(UserFeedbackType::class, $feedback);
  424.         $form->handleRequest($request);
  425.        /* $menuSetting = $shop->getMenuSetting();*/
  426.       /*  $shopTemplatePath = $menuSetting->getMenuTemplates()->getPath();*/
  427.         $alergenOn false;
  428.         $caloryOn false;
  429.         $componentsOn false;
  430.         $feedback false;
  431.         $deliver $shop->getDelivery();
  432.         $payment $shop->getPayment();
  433.         $statusOffen $entityManager->getRepository(BusinessTime::class)->findOneBy(['createdBy'=> $shop->getCreatedBy()]);
  434.         $curDay =  date("D");
  435.         $curentTime date("G:i:s");
  436.         if($statusOffen) {
  437.             $openCloseVal $this->getOftClose($statusOffen$curDay$curentTime);
  438.             $getCurrentOff $this->getCurrentDayOffen($statusOffen$curDay$curentTime);
  439.         } else {
  440.             $getCurrentOff null;
  441.             $openCloseVal  null;
  442.         }
  443.         $allProductWithCategory = array();
  444.         foreach($categories as $cat) {
  445.             $products $entityManager->getRepository(Products::class)->findBy(['createdBy'=>$shop->getCreatedBy(), 'category'=> $cat->getId()]);
  446.             $allProductWithCategory[$cat->getName()] = $products;
  447.         }
  448.         foreach ($allProductWithCategory as $categoryName => &$products) {
  449.             usort($products, function ($a$b) {
  450.                 // Сравниваем по полю 'numberInMenu'
  451.                 return $a->getNumberInMenu() - $b->getNumberInMenu();
  452.             });
  453.         }
  454.         if ($form->isSubmitted() && $form->isValid()) {
  455.             // encode the plain password
  456.             $feedback->setShopid($shop);
  457.             $entityManager->persist($feedback);
  458.             $entityManager->flush();
  459.             $feedback = new Feedback();
  460.             $form $this->createForm(UserFeedbackType::class, $feedback);
  461.             return $this->render("@custom_templates/menu/templates/demo/menu.html.twig", [
  462.                 'controller_name' => 'ViewShopController',
  463.                 'notification' => 'Success',
  464.                 'user' => $this->getUser(),
  465.                 's' => $shop,
  466.                 'alergen' => $alergenOn,
  467.                 'comp' => $componentsOn,
  468.              //   'menuSetting' => $menuSetting,
  469.                 'calor' => $caloryOn,
  470.                 'currentOff' => $getCurrentOff,
  471.                 'delivery' =>$deliver,
  472.                 'payment' =>$payment,
  473.                 'allProducts' => $allProductWithCategory,
  474.                 'feedback' => $feedback,
  475.                 'openClose' => $openCloseVal,
  476.                 'statusOffen' => $statusOffen,
  477.                 'impress'=> $impressum,
  478.                 'categories' => $categories,
  479.                 'form' => $form->createView()
  480.             ]);
  481.         } else {
  482.             return $this->render("@custom_templates/menu/templates/demo/menu.html.twig", [
  483.                 'controller_name' => 'ViewShopController',
  484.                 'user' => $this->getUser(),
  485.                 's' => $shop,
  486.                 'alergen' => $alergenOn,
  487.                 'comp' => $componentsOn,
  488.                 'impress'=> $impressum,
  489.                 'currentOff' => $getCurrentOff,
  490.                 'openClose' => $openCloseVal,
  491.                 'calor' => $caloryOn,
  492.                 'feedback' => $feedback,
  493.                 'statusOffen' => $statusOffen,
  494.                 'delivery' =>$deliver,
  495.                 'payment' =>$payment,
  496.                 'allProducts' => $allProductWithCategory,
  497.                 'notification' => 'false',
  498.                 'categories' => $categories,
  499.                // 'menuSetting' => $menuSetting,
  500.                 'form' => $form->createView()
  501.             ]);
  502.         }
  503.     }
  504.     public function CheckUserData(){
  505.         return true;
  506.     }
  507.     #[Route('/restaurant-und-cafe/menu/{shopName}/{table}'name'restaurantCafeMenuTische')]
  508.     public function menuTische(EntityManagerInterface $entityManagerRequest $requeststring $shopName): Response
  509.     {
  510.         $shop $entityManager->getRepository(ShopData::class)->findOneBy(array('geschaftName'=>$shopName));
  511.         $categories $entityManager->getRepository(Category::class)->findBy(array('createdBy'=>$shop->getCreatedBy()));
  512.         $impressum $entityManager->getRepository(Impressum::class)->findOneBy(['createdBy'=> $shop->getCreatedBy()]);
  513.         $feedback = new Feedback();
  514.         $form $this->createForm(UserFeedbackType::class, $feedback);
  515.         $form->handleRequest($request);
  516.         /* $menuSetting = $shop->getMenuSetting();*/
  517.         /*  $shopTemplatePath = $menuSetting->getMenuTemplates()->getPath();*/
  518.         $alergenOn false;
  519.         $caloryOn false;
  520.         $componentsOn false;
  521.       /*  $feedback = false;*/
  522.         $deliver $shop->getDelivery();
  523.         $payment $shop->getPayment();
  524.         $statusOffen $entityManager->getRepository(BusinessTime::class)->findOneBy(['createdBy'=> $shop->getCreatedBy()]);
  525.         $curDay =  date("D");
  526.         $curentTime date("G:i:s");
  527.         $openCloseVal $this->getOftClose($statusOffen$curDay$curentTime);
  528.         $getCurrentOff $this->getCurrentDayOffen($statusOffen$curDay$curentTime);
  529.         $allProductWithCategory = array();
  530.         foreach($categories as $cat) {
  531.             $products $entityManager->getRepository(Products::class)->findBy(['createdBy'=>$shop->getCreatedBy(), 'category'=> $cat->getId()]);
  532.             ;
  533.             $allProductWithCategory[$cat->getName()] = $products;
  534.         }
  535.         if ($form->isSubmitted() && $form->isValid()) {
  536.             // encode the plain password
  537.             $feedback->setShopid($shop);
  538.             $entityManager->persist($feedback);
  539.             $entityManager->flush();
  540.             $feedback = new Feedback();
  541.             $form $this->createForm(UserFeedbackType::class, $feedback);
  542.             return $this->render("@custom_templates/menushop/templates/demo/menu.html.twig", [
  543.                 'controller_name' => 'ViewShopController',
  544.                 'notification' => 'Success',
  545.                 'user' => $this->getUser(),
  546.                 's' => $shop,
  547.                 'alergen' => $alergenOn,
  548.                 'comp' => $componentsOn,
  549.                 //   'menuSetting' => $menuSetting,
  550.                 'calor' => $caloryOn,
  551.                 'currentOff' => $getCurrentOff,
  552.                 'delivery' =>$deliver,
  553.                 'payment' =>$payment,
  554.                 'allProducts' => $allProductWithCategory,
  555.                 'feedback' => $feedback,
  556.                 'openClose' => $openCloseVal,
  557.                 'statusOffen' => $statusOffen,
  558.                 'impress'=> $impressum,
  559.                 'categories' => $categories,
  560.                 'form' => $form->createView()
  561.             ]);
  562.         } else {
  563.             return $this->render("@custom_templates/menu/templates/demo/menu.html.twig", [
  564.                 'controller_name' => 'ViewShopController',
  565.                 'user' => $this->getUser(),
  566.                 's' => $shop,
  567.                 'alergen' => $alergenOn,
  568.                 'comp' => $componentsOn,
  569.                 'impress'=> $impressum,
  570.                 'currentOff' => $getCurrentOff,
  571.                 'openClose' => $openCloseVal,
  572.                 'calor' => $caloryOn,
  573.                 'feedback' => $feedback,
  574.                 'statusOffen' => $statusOffen,
  575.                 'delivery' =>$deliver,
  576.                 'payment' =>$payment,
  577.                 'allProducts' => $allProductWithCategory,
  578.                 'notification' => 'false',
  579.                 'categories' => $categories,
  580.                 // 'menuSetting' => $menuSetting,
  581.                 'form' => $form->createView()
  582.             ]);
  583.         }
  584.     }
  585.     public function getCurrentDayOffen($statusOffen$day$currentTime) {
  586.         if($day == "Mon") {
  587.             if($statusOffen->isMonOn()) {
  588.                 $timeOpen $statusOffen->getMonStart()->format('G:i');
  589.                 $timeClose $statusOffen->getMonEnd()->format('G:i');
  590.                 return [$day$timeOpen$timeClose];
  591.             } else {
  592.                 return "Geschlossen";
  593.             }
  594.         }
  595.         if($day == "Sun") {
  596.             if($statusOffen->isSunOn()) {
  597.                 $timeOpen $statusOffen->getSunStart()->format('G:i');
  598.                 $timeClose $statusOffen->getSunEnd()->format('G:i');
  599.                 return [$day$timeOpen$timeClose];
  600.             } else {
  601.                 return "Geschlossen";
  602.             }
  603.         }
  604.         if($day == "Tue") {
  605.             if($statusOffen->isTueOn()) {
  606.                 $timeOpen $statusOffen->getTueStart()->format('G:i');
  607.                 $timeClose $statusOffen->getTueEnd()->format('G:i');
  608.                 return [$day$timeOpen$timeClose];
  609.             } else {
  610.                 return "Geschlossen";
  611.             }
  612.         }
  613.         if($day == "Thu") {
  614.             if($statusOffen->isThurOn()) {
  615.                 $timeOpen $statusOffen->getThurStart()->format('G:i');
  616.                 $timeClose $statusOffen->getThurEnd()->format('G:i');
  617.                 return [$day$timeOpen$timeClose];
  618.             } else {
  619.                 return "Geschlossen";
  620.             }
  621.         }
  622.         if($day == "Fri") {
  623.             if($statusOffen->isFriOn()) {
  624.                 $timeOpen $statusOffen->getFriStart()->format('G:i');
  625.                 $timeClose $statusOffen->getFriEnd()->format('G:i');
  626.                 return [$day$timeOpen$timeClose];
  627.             } else {
  628.                 return "Geschlossen";
  629.             }
  630.         }
  631.         if($day == "Sat") {
  632.             if($statusOffen->isSatOn()) {
  633.                 $timeOpen $statusOffen->getSatStart()->format('G:i');
  634.                 $timeClose $statusOffen->getSatEnd()->format('G:i');
  635.                 return [$day$timeOpen$timeClose];
  636.             } else {
  637.                 return "Geschlossen";
  638.             }
  639.         }
  640.     }
  641.     public function getOftClose($statusOffen$day$currentTime) {
  642.         if($day == "Sun") {
  643.             if($statusOffen->isSunOn()) {
  644.                 $timeOpen $statusOffen->getSunStart()->format('G:i');
  645.                 $timeClose $statusOffen->getSunEnd()->format('G:i');
  646.                 return [$day$timeOpen$timeClose];
  647.             } else {
  648.                 return "Geschlossen";
  649.             }
  650.         }
  651.         if($day == "Mon") {
  652.             if($statusOffen->isMonOn()) {
  653.                 $timeOpen $statusOffen->getMonStart()->format('G:i');
  654.                 $timeClose $statusOffen->getMonEnd()->format('G:i');
  655.                 return [$day$timeOpen$timeClose];
  656.             } else {
  657.                 return "Geschlossen";
  658.             }
  659.         }
  660.         if($day == "Tue") {
  661.             if($statusOffen->isTueOn()) {
  662.                 $timeOpen $statusOffen->getTueStart()->format('G:i');
  663.                 $timeClose $statusOffen->getTueEnd()->format('G:i');
  664.                 return [$day$timeOpen$timeClose];
  665.             } else {
  666.                 return "Geschlossen";
  667.             }
  668.         }
  669.         if($day == "Wed") {
  670.             if($statusOffen->isTueOn()) {
  671.                 $timeOpen $statusOffen->getTueStart()->format('G:i');
  672.                 $timeClose $statusOffen->getTueEnd()->format('G:i');
  673.                 return [$day$timeOpen$timeClose];
  674.             } else {
  675.                 return "Geschlossen";
  676.             }
  677.         }
  678.         if($day == "Thu") {
  679.             if($statusOffen->isThurOn()) {
  680.                 $timeOpen $statusOffen->getThurStart()->format('G:i');
  681.                 $timeClose $statusOffen->getThurEnd()->format('G:i');
  682.                 return [$day$timeOpen$timeClose];
  683.             } else {
  684.                 return "Geschlossen";
  685.             }
  686.         } 
  687.         if($day == "Fri") {
  688.             if($statusOffen->isFriOn()) {
  689.                 $timeOpen $statusOffen->getFriStart()->format('G:i');
  690.                 $timeClose $statusOffen->getFriEnd()->format('G:i');
  691.                 return [$day$timeOpen$timeClose];
  692.             } else {
  693.                 return "Geschlossen";
  694.             }
  695.         } 
  696.         if($day == "Sat") {
  697.             if($statusOffen->isSatOn()) {
  698.                 $timeOpen $statusOffen->getSatStart()->format('G:i');
  699.                 $timeClose $statusOffen->getSatEnd()->format('G:i');
  700.                 return [$day$timeOpen$timeClose];
  701.             } else {
  702.                 return "Geschlossen";
  703.             }
  704.         } 
  705.     }
  706.     public function checkTime($open$close$currenTime){
  707.         if ($currenTime $open && $currenTime $close)
  708.         {
  709.             return "Geöffnet";
  710.         } else {
  711.             return "Geschlossen";
  712.         }
  713.     }
  714. }