src/Controller/PageController.php line 63

  1. <?php
  2. namespace App\Controller;
  3. use App\Admin\ServicesAdmin;
  4. use App\Entity\Brand;
  5. use App\Entity\Category;
  6. use App\Entity\Collection;
  7. use App\Entity\FixedPages;
  8. use App\Entity\Gallery;
  9. use App\Entity\Library;
  10. use App\Entity\News;
  11. use App\Entity\Page;
  12. use App\Entity\Product;
  13. use App\Entity\Services;
  14. use App\Entity\Testimonials;
  15. use App\Repository\FixedPagesRepository;
  16. use App\Repository\PageRepository;
  17. use App\Services\ArcaPaymentService;
  18. use App\Services\PageService;
  19. use Doctrine\ORM\EntityManagerInterface;
  20. use Gedmo\Translatable\TranslatableListener;
  21. use Gedmo\Translatable\Entity\Translation;
  22. use Gedmo\Translatable\Entity\Repository\TranslationRepository;
  23. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  24. use Symfony\Component\HttpFoundation\JsonResponse;
  25. use Symfony\Component\HttpFoundation\Request;
  26. use Symfony\Component\HttpFoundation\Response;
  27. use Symfony\Component\Routing\Annotation\Route;
  28. use Symfony\Component\String\Slugger\AsciiSlugger;
  29. class PageController extends AbstractController
  30. {
  31.     private EntityManagerInterface $entityManager;
  32.     public function __construct(EntityManagerInterface $entityManager)
  33.     {
  34.         $this->entityManager $entityManager;
  35.     }
  36.     public function headerData()
  37.     {
  38.         $collections $this->entityManager->getRepository(Collection::class)->findAll();
  39.         return $this->render('@web/parts/header_collections.html.twig', [
  40.             'collections' => $collections
  41.         ]);
  42.     }
  43.     public function headerCategory()
  44.     {
  45.         $collections $this->entityManager->getRepository(Category::class)->findAll();
  46.         return $this->render('@web/parts/header_category.html.twig', [
  47.             'collections' => $collections
  48.         ]);
  49.     }
  50.     #[Route(''name'page_index'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'en'])]
  51.     public function index(PageRepository $pageRepository)
  52.     {
  53.         return $this->render('@web/page/index.html.twig', [
  54.         ]);
  55.     }
  56.     #[Route('/{_locale}/heritage'name'page_heritage'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'en'])]
  57.     public function hertiage(FixedPagesRepository $pageRepository)
  58.     {
  59.         $mainTitle $pageRepository->find(1);
  60.         $secondTitle $pageRepository->find(2);
  61.         $about $pageRepository->find(5);
  62.         $collections $this->entityManager->getRepository(Collection::class)->findAll();
  63.         $categories $this->entityManager->getRepository(Category::class)->findAll();
  64.         $news $this->entityManager->getRepository(News::class)->findBy(['type' => 1],['id' => 'DESC'], 2);
  65.         return $this->render('@web/page/heritage.html.twig', [
  66.             'mainTitle' => $mainTitle,
  67.             'secondTitle' => $secondTitle,
  68.             'collections' => $collections,
  69.             'about' => $about,
  70.             'news' => $news,
  71.             'categories' => $categories
  72.         ]);
  73.     }
  74.     #[Route('/{_locale}/heritage/news'name'page_heritage_news'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'en'])]
  75.     public function hertiageNews(FixedPagesRepository $pageRepository)
  76.     {
  77.         $page $this->entityManager->getRepository(FixedPages::class)->find(6);
  78.         $news $this->entityManager->getRepository(News::class)->findBy(['type' => 1],['id' => 'DESC']);
  79.         return $this->render('@web/page/news.html.twig', [
  80.             'page' => $page,
  81.             'news' => $news,
  82.         ]);
  83.     }
  84.     #[Route('/{_locale}/liver/news'name'page_liver_news'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'en'])]
  85.     public function liverNews(FixedPagesRepository $pageRepository)
  86.     {
  87.         $page $this->entityManager->getRepository(FixedPages::class)->find(1);
  88.         $news $this->entityManager->getRepository(News::class)->findBy(['type' => 2],['id' => 'DESC']);
  89.         return $this->render('@web/page/news.html.twig', [
  90.             'page' => $page,
  91.             'news' => $news,
  92.         ]);
  93.     }
  94.     #[Route('/{_locale}/heritage/news/{slug}'name'page_heritage_news_view'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'en'])]
  95.     public function heritageNewsView($slug)
  96.     {
  97.         $page $this->entityManager->getRepository(News::class)->findOneBy(['slug' => $slug]);
  98.         return $this->render('@web/page/news_view.html.twig', [
  99.             'news' => $page,
  100.             'page' => $page,
  101.         ]);
  102.     }
  103.     #[Route('/{_locale}/liver/library'name'page_liver_library'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'en'])]
  104.     public function page_liver_library(FixedPagesRepository $pageRepository)
  105.     {
  106.         $page $pageRepository->find(6);
  107.         $library $this->entityManager->getRepository(Library::class)->findAll();
  108.         return $this->render('@web/page/library.html.twig', [
  109.             'page' => $page,
  110.             'library' => $library
  111.         ]);
  112.     }
  113.     #[Route('/{_locale}/liver/news/{slug}'name'page_liver_news_view'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'en'])]
  114.     public function liverNewsView($slug)
  115.     {
  116.         $page $this->entityManager->getRepository(News::class)->findOneBy(['slug' => $slug]);
  117.         return $this->render('@web/page/news_view.html.twig', [
  118.             'news' => $page,
  119.             'page' => $page,
  120.         ]);
  121.     }
  122.     #[Route('/{_locale}/liver/caf'name'page_liver_caf'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'en'])]
  123.     public function liverCafView()
  124.     {
  125.         $page $this->entityManager->getRepository(FixedPages::class)->find(8);
  126.         return $this->render('@web/page/caf.html.twig', [
  127.             'page' => $page,
  128.         ]);
  129.     }
  130.     #[Route('/{_locale}/liver'name'page_liver'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'en'])]
  131.     public function liver(FixedPagesRepository $pageRepository)
  132.     {
  133.         $mainTitle $pageRepository->find(6);
  134.         $about $pageRepository->find(7);
  135.         $products $this->entityManager->getRepository(Product::class)->findBy(['productType' => 2], ['id' => 'DESC'], 3);
  136.         $news $this->entityManager->getRepository(News::class)->findBy(['type' => 2],['id' => 'DESC']);
  137.         return $this->render('@web/page/liver.html.twig', [
  138.             'mainTitle' => $mainTitle,
  139.             'products' => $products,
  140.             'about' => $about,
  141.             'news' => $news,
  142.         ]);
  143.     }
  144.     #[Route('/{_locale}/liver/products'name'page_liver_products'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'en'])]
  145.     public function liverProducts(Request $requestPageRepository $pageRepository)
  146.     {
  147.         $page $this->entityManager->getRepository(FixedPages::class)->find(6);
  148.         $products $this->entityManager
  149.             ->getRepository(Product::class)
  150.             ->findBy(['productType' => 2], ['id' => 'DESC']);
  151.         return $this->render('@web/page/liver-products.html.twig', [
  152.             'products' => $products,
  153.             'page' => $page
  154.         ]);
  155.     }
  156.     #[Route('/{_locale}/liver/products/{slug}'name'page_liver_product_view'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'en'])]
  157.     public function liverProduct($slug): Response
  158.     {
  159.         $product $this->entityManager->getRepository(Product::class)->findOneBy(['slug' => $slug]);
  160.         $products $this->entityManager->getRepository(Product::class)->findBy(['productType' => 2], ['id' => 'DESC']);
  161.         $delivery $this->entityManager->getRepository(FixedPages::class)->find(4);
  162.         return $this->render('@web/page/liver-product.html.twig', [
  163.             'product' => $product,
  164.             'delivery' => $delivery,
  165.             'products' => $products
  166.         ]);
  167.     }
  168.     #[Route('/{_locale}/heritage/products'name'page_heritage_products'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'en'])]
  169.     public function hertiageProducts(Request $requestPageRepository $pageRepository)
  170.     {
  171.         $collectionId $request->query->getInt('collection'0);
  172.         $categoryId $request->query->getInt('category'0);
  173.         $collection $this->entityManager->getRepository(Collection::class)->findAll();
  174.         $category $this->entityManager->getRepository(Category::class)->findAll();
  175.         $criteria = [];
  176.         if ($collectionId 0) {
  177.             $criteria['collection'] = $collectionId// relation id is OK here
  178.         }
  179.         if ($categoryId 0) {
  180.             $criteria['category'] = $categoryId// relation id is OK here
  181.         }
  182.         $criteria['productType'] = 1;
  183.         $page $this->entityManager->getRepository(Collection::class)->find($collectionId);
  184.         if (!$page) {
  185.             $page $this->entityManager->getRepository(FixedPages::class)->find(1);
  186.         }
  187.         $products $this->entityManager
  188.             ->getRepository(Product::class)
  189.             ->findBy($criteria, ['id' => 'DESC']);
  190.         return $this->render('@web/page/hertiage-products.html.twig', [
  191.             'products' => $products,
  192.             'collection' => $collection,
  193.             'category' => $category,
  194.             'collectionId' => $collectionId,
  195.             'categoryId' => $categoryId,
  196.             'page' => $page
  197.         ]);
  198.     }
  199.     #[Route('/{_locale}/heritage/products/{slug}'name'page_heritage_product_view'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'en'])]
  200.     public function hertiageXachProducts($slug): Response
  201.     {
  202.         $product $this->entityManager->getRepository(Product::class)->findOneBy(['slug' => $slug]);
  203.         $products $this->entityManager->getRepository(Product::class)->findBy(['productType' => 1,'collection' => $product->getCollection()]);
  204.         $delivery $this->entityManager->getRepository(FixedPages::class)->find(4);
  205.         return $this->render('@web/page/hertiage-product.html.twig', [
  206.             'product' => $product,
  207.             'delivery' => $delivery,
  208.             'products' => $products
  209.         ]);
  210.     }
  211.     #[Route('/{_locale}/heritage-terms'name'heritage_terms'requirements: ['_locale' => 'en|ru|hy'], defaults: ['_locale' => 'en'])]
  212.     public function heritageTerms()
  213.     {
  214.         $terms $this->entityManager->getRepository(FixedPages::class)->find(3);
  215.         return $this->render('@web/page/hertiage-terms.html.twig', [
  216.             'terms' => $terms
  217.         ]);
  218.     }
  219.     #[Route('/pay'name'pay')]
  220.     public function pay(ArcaPaymentService $arca)
  221.     {
  222.         $orderId uniqid();
  223.         $result $arca->registerOrder(
  224.             1000// AMD
  225.             $orderId,
  226.             'https://liver.am/payment-success'
  227.         );
  228.         if (isset($result['formUrl'])) {
  229.             return $this->redirect($result['formUrl']);
  230.         }
  231.         return $this->json($result);
  232.     }
  233.     #[Route('/payment-success'name'payment_success')]
  234.     public function success(Request $requestArcaPaymentService $arca)
  235.     {
  236.         $orderId $request->get('orderId');
  237.         $status $arca->getOrderStatus($orderId);
  238.         if ($status['orderStatus'] == 2) {
  239.             return new Response('Payment successful');
  240.         }
  241.         return new Response('Payment failed');
  242.     }
  243. }