src/StartPlatz/Bundle/AlphaBundle/Controller/BenefitController.php line 36

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace App\StartPlatz\Bundle\AlphaBundle\Controller;
  3. use App\StartPlatz\Bundle\AlphaBundle\Entity\Feed;
  4. use App\StartPlatz\Bundle\AlphaBundle\Entity\Page;
  5. use App\StartPlatz\Bundle\AlphaBundle\Entity\Post;
  6. use App\StartPlatz\Bundle\MemberBundle\Entity\Member;
  7. use App\StartPlatz\Bundle\MetaBundle\Entity\Attribute;
  8. use App\StartPlatz\Bundle\UserBundle\Entity\User;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  11. use App\StartPlatz\Bundle\WebsiteBundle\MenuTranslationService;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  16. class BenefitController extends AbstractController
  17. {
  18.     public function __construct(
  19.         private readonly EntityManagerInterface $entityManager,
  20.         private readonly SessionInterface $session,
  21.         private readonly MenuTranslationService $menuTranslationService
  22.     ) {
  23.     }
  24.     #[Route('/x/startup-tools/home'name'x_startup-tools_home')]
  25.     public function startupToolsRedirectAction(Request $request)
  26.     {
  27.         return $this->redirectToRoute('connect_benefit_tools'$request->query->all(), 301);
  28.     }
  29.     #[Route('/benefits/perks'name'benefits_perks')]
  30.     #[Route('/en/benefits/perks'name'benefits_perks_english')]
  31.     public function startupToolsAction(Request $request)
  32.     {
  33.                 $redirect json_decode(base64_decode((string)$request->get('redirect')));
  34.         /** @var User $user */
  35.         if ($user $this->getUser()) {
  36.             $this->entityManager->getRepository(User::class)->writeActivity($user);
  37.             $member $this->entityManager->getRepository(Member::class)->find($user->getMemberId());
  38.         }
  39.         $pageType "startup-tool";
  40.         $parentSlug "startup-tools";
  41.         $pageRepository $this->entityManager->getRepository(Page::class);
  42.         if (!$parentPage $pageRepository->findOneBy(['slug' => $parentSlug])) {
  43.             $parentPage = new Page();
  44.             $parentPage->setTitle('Tools');
  45.             $parentPage->setTeaser('Welcome');
  46.             $parentPage->setDescription('Our Startup Tools are software solutions that can help to scale up your business. Each of our software solutions has an exclusive community-discount. We will continuously add more benefits to our portfolio. In case your prefered tool is not represented here: please do not hesitate to contact us and help us improve our benefits Contact our team.');
  47.         }
  48.         $ajax $request->get('ajax');
  49.         $limit 3;
  50.         if (!$page $request->get('page')) {
  51.             $page 1;
  52.         }
  53.         $criteria = ['type' => $pageType'isActive' => 1'status' => 'publish'];
  54.         $items $pageRepository->findPaginated($criteria, [], $page$limit);
  55.         $total $pageRepository->countByCriteria($criteria);
  56.         $path $request->getPathInfo();
  57.         $lang 'DE';
  58.         if (str_starts_with($path"/en/")) {
  59.             $lang 'EN';
  60.         }
  61.         $viewFeed '@StartPlatzAlphaBundle/Benefit/StartupTools__feed.twig';
  62.         $view '@StartPlatzAlphaBundle/Benefit/StartupTools__index__homepage.twig';
  63.         if ($ajax) {
  64.             return $this->render($viewFeed, [
  65.                 'items' => $items,
  66.                 'lang' => $lang,
  67.                 'maxPages' => ceil($total $limit),
  68.                 'thisPage' => $page,
  69.                 'ajax' => $ajax,
  70.                 'templateVars' => [],
  71.                 'redirectUrl' => base64_encode(json_encode(['path' => 'x_startup-products_home''parameters' => []])),
  72.             ]);
  73.         }
  74.         return $this->render($view, [
  75.             'items' => $items,
  76.             'parentPage' => $parentPage,
  77.             'path' => $path,
  78.             'lang' => $lang,
  79.             'maxPages' => ceil($total $limit),
  80.             'thisPage' => $page,
  81.             'ajax' => $ajax,
  82.             'redirectUrl' => base64_encode(json_encode(['path' => 'x_startup-tools_home''parameters' => []])),
  83.             'templateVars' => [],
  84.             'menuLinksAndPhrases' => $this->menuTranslationService->getMenuLinksAndPhrases($request->server->get('REQUEST_URI')),
  85.         ]);
  86.     }
  87.     #[Route('/x/software-for-startups/{id}/{slug}'name'x_startup-tools_single')]
  88.     public function startupToolSingleAction(Request $request$id$slug)
  89.     {
  90.         return $this->redirectToRoute('connect_benefit_tool_detail', ['id' => $id'slug' => $slug] + $request->query->all(), 301);
  91.     }
  92.     #[Route('/x/benefits/home'name'x_benefits_home')]
  93.     public function benefitsAction(Request $request)
  94.     {
  95.         return $this->redirectToRoute('connect_benefit_index'$request->query->all(), 301);
  96.     }
  97.     #[Route('/x/startup-products/home'name'x_startup-products_home')]
  98.     public function startupProductAction(Request $request)
  99.     {
  100.         return $this->redirectToRoute('connect_benefit_products'$request->query->all(), 301);
  101.     }
  102.     #[Route('/x/startup-products/single/{id}'name'x_startup-products_single')]
  103.     public function startupProductSingleAction(Request $request$id)
  104.     {
  105.         return $this->redirectToRoute('connect_benefit_product_detail', ['id' => $id] + $request->query->all(), 301);
  106.     }
  107.     #[Route('/x/pages/{pageType}/single/{id}/{slug}'name'x_page_single')]
  108.     public function pageSingleAction(Request $request$pageType$id$slug)
  109.     {
  110.         return $this->redirectToRoute('connect_benefit_page_detail', ['pageType' => $pageType'id' => $id'slug' => $slug] + $request->query->all(), 301);
  111.     }
  112.     #[Route('/x/service-partner/home'name'x_service-partner_home')]
  113.     public function servicePartnerRedirectAction(Request $request)
  114.     {
  115.         return $this->redirectToRoute('connect_benefit_service_partners'$request->query->all(), 301);
  116.     }
  117.     #[Route('/benefits/service-partner'name'hp_service-partner')]
  118.     #[Route('/en/benefits/service-partner'name'hp_service-partner_english')]
  119.     public function servicePartnerAction(Request $request)
  120.     {
  121.                 $redirect json_decode(base64_decode((string)$request->get('redirect')));
  122.         /** @var User $user */
  123.         if ($user $this->getUser()) {
  124.             $this->entityManager->getRepository(User::class)->writeActivity($user);
  125.             $member $this->entityManager->getRepository(Member::class)->find($user->getMemberId());
  126.         } else {
  127.             $member $this->entityManager->getRepository(Member::class)->setEmptyMemberAccount();
  128.         }
  129.         $pageRepository $this->entityManager->getRepository(Page::class);
  130.         if (!$parentPage $pageRepository->findOneBy(['slug' => 'service-partner'])) {
  131.             $parentPage = new Page();
  132.             $parentPage->setTitle('Service Partner');
  133.             $parentPage->setTeaser('Welcome');
  134.             $parentPage->setDescription('Hier sind unsere Partner aufgelistet, die Dir helfen, Dein Business zu verbessern.');
  135.         }
  136.         $ajax $request->get('ajax');
  137.         $limit 18;
  138.         if (!$page $request->get('page')) {
  139.             $page 1;
  140.         }
  141.         if ($topic $request->get('topic')) {
  142.             $criteria = ['partners' => ['service-partner'], 'tags' => $topic'isActive' => 1'status' => 'publish'];
  143.         } else {
  144.             $criteria = ['partners' => ['service-partner'], 'isActive' => 1'status' => 'publish'];
  145.         }
  146.         $partners $pageRepository->findPaginated($criteria, [], $page$limit);
  147.         $total $pageRepository->countByCriteria($criteria);
  148.         $path $request->getPathInfo();
  149.         $lang 'DE';
  150.         if (str_starts_with($path"/en/")) {
  151.             $lang 'EN';
  152.         }
  153.         if (!$pageType $request->get('pageType')) {
  154.             $pageType 'service-partner';
  155.         }
  156.         $titles $pageRepository->getPageTexts($pageType$lang);
  157.         $pageTypes $pageRepository->getPageTypes();
  158.         $view '@StartPlatzAlphaBundle/Benefit/index.servicePartners.homepage.html.twig';
  159.         $viewFeed '@StartPlatzAlphaBundle/Benefit/_feed.servicePartners.homepage.html.twig';
  160.         if ($ajax) {
  161.             return $this->render($viewFeed, [
  162.                 'partners' => $partners,
  163.                 'pageType' => $pageType,
  164.                 'pageTypes' => $pageTypes,
  165.                 'lang' => $lang,
  166.                 'titles' => $titles,
  167.                 'topic' => $topic,
  168.                 'userMember' => $member,
  169.                 'maxPages' => ceil($total $limit),
  170.                 'thisPage' => $page,
  171.                 'ajax' => $ajax,
  172.                 'limit' => $limit,
  173.                 'redirectUrl' => base64_encode(json_encode(['path' => 'x_service-partner_home''parameters' => []])),
  174.                 'templateVars' => [],
  175.             ]);
  176.         }
  177.         return $this->render($view, [
  178.             'partners' => $partners,
  179.             'pageType' => $pageType,
  180.             'pageTypes' => $pageTypes,
  181.             'lang' => $lang,
  182.             'titles' => $titles,
  183.             'total' => $total,
  184.             'parentPage' => $parentPage,
  185.             'topic' => $topic,
  186.             'userMember' => $member,
  187.             'maxPages' => ceil($total $limit),
  188.             'thisPage' => $page,
  189.             'ajax' => $ajax,
  190.             'limit' => $limit,
  191.             'redirectUrl' => base64_encode(json_encode(['path' => 'x_service-partner_home''parameters' => []])),
  192.             'templateVars' => [],
  193.             'menuLinksAndPhrases' => $this->menuTranslationService->getMenuLinksAndPhrases($request->server->get('REQUEST_URI')),
  194.         ]);
  195.     }
  196.     #[Route('/x/service-partner/single/{id}/{slug}'name'x_service-partner_single')]
  197.     /**
  198.      * @IsGranted("ROLE_USER")
  199.      */
  200.     public function servicePartnerSingleAction(Request $request$id$slug)
  201.     {
  202.         return $this->redirectToRoute('connect_benefit_service_partner_detail', ['id' => $id'slug' => $slug] + $request->query->all(), 301);
  203.     }
  204. }