src/Controller/User/AmateurController.php line 63

Open in your IDE?
  1. <?php
  2. namespace App\Controller\User;
  3. use App\Dto\SearchOptions;
  4. use App\Form\Search\MemberSearchForm;
  5. use App\Service\Client\User\AmateurListingService;
  6. use App\Service\Search\MemberSearchService;
  7. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\RedirectResponse;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. /**
  13.  * @Route("/amateure")
  14.  */
  15. class AmateurController extends AbstractController
  16. {
  17.     protected AmateurListingService $service;
  18.     protected MemberSearchService $searchService;
  19.     public function __construct(AmateurListingService $serviceMemberSearchService $searchService)
  20.     {
  21.         $this->service $service;
  22.         $this->searchService $searchService;
  23.     }
  24.     /**
  25.      * @Route("/top-amateure/{page}", requirements={"page": "\d+"}, defaults={"page": 1})
  26.      * @Template()
  27.      * @param int $page
  28.      * @return array
  29.      */
  30.     public function top(int $page 1): array
  31.     {
  32.         return [
  33.             'amateurs' => $this->service->getTopRatedAmateurs($page15falsefalse),
  34.             'page' => $page
  35.         ];
  36.     }
  37.     /**
  38.      * @Route("/die-neusten-amateure/{page}", requirements={"page": "\d+"}, defaults={"page": 1})
  39.      * @Template()
  40.      * @param int $page
  41.      * @return array
  42.      */
  43.     public function recent(int $page 1): array
  44.     {
  45.         return [
  46.             'amateurs' => $this->service->getRecentAmateurs($page15),
  47.             'page' => $page
  48.         ];
  49.     }
  50.     /**
  51.      * @Route("/amateure-online/{page}", requirements={"page": "\d+"}, defaults={"page": 1})
  52.      * @Template()
  53.      * @param int $page
  54.      * @return array
  55.      */
  56.     public function online(int $page 1): array
  57.     {
  58.         return [
  59.             'amateurs' => $this->service->getOnlineAmateurs($page15),
  60.             'page' => $page
  61.         ];
  62.     }
  63.     /**
  64.      * Werbemittel LinkfarmService
  65.      *
  66.      * @Route("/random")
  67.      * @return RedirectResponse
  68.      * @throws \Psr\Cache\InvalidArgumentException
  69.      * @throws \ReflectionException
  70.      */
  71.     public function random(): RedirectResponse
  72.     {
  73.         $top $this->service->getTopRatedAmateurs(130truetrue)->getItems();
  74.         shuffle($top);
  75.         if(count($top)) {
  76.             return $this->redirectToRoute('app_user_profile_detail', [
  77.                 'username' => $top[0]['username']
  78.             ]);
  79.         }
  80.         return $this->redirectToRoute('app_home_index');
  81.     }
  82.     /**
  83.      * Werbemittel
  84.      * @Template()
  85.      * @Route("/amateur-werden")
  86.      * @return array|RedirectResponse
  87.      */
  88.     public function landingpage()
  89.     {
  90.         $user $this->getUser();
  91.         if($user && $user->getMemberId()) {
  92.             return $this->redirectToRoute('app_amateurupgrade_apply');
  93.         }
  94.         return [];
  95.     }
  96.     /**
  97.      * @Route("/finden")
  98.      * @Template()
  99.      * @return array
  100.      */
  101.     public function search(Request $request): array
  102.     {
  103.         $searchOptions = new SearchOptions();
  104.         $form $this->createForm(MemberSearchForm::class, $searchOptions);
  105.         $form->handleRequest($request);
  106.         if (!$form->isSubmitted()) {//Incoming from global search
  107.             $searchOptions->initDefaults()->fromGlobalSearch($request->query);
  108.             $form->setData($searchOptions);
  109.         }
  110.         $searchOptions->pageFromQuery($request->query);
  111.         $result $this->searchService->findByUsername($searchOptions);
  112.         return [
  113.             'form' => $form->createView(),
  114.             'amateurs' => $result,
  115.             'minMaxAge' => $this->searchService->findMinMaxAge(),
  116.         ];
  117.     }
  118. }