src/Controller/Frontend/ExternalTournamentController.php line 32

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Frontend;
  4. use App\Controller\Shared\Club\ResolveClubLogo;
  5. use App\Entity\Backend\ExternalCompetition;
  6. use App\Entity\Backend\ExternalCompetitionPlayer;
  7. use App\Entity\Gestion\Ranking;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\RedirectResponse;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. /**
  14. * @Route("/tour-external")
  15. */
  16. final class ExternalTournamentController extends AbstractController
  17. {
  18. public function __construct(
  19. private readonly EntityManagerInterface $em,
  20. private readonly ResolveClubLogo $resolveClubLogo,
  21. )
  22. {
  23. }
  24. /**
  25. * @Route("/{id}", name="_external_tournament", requirements={"id": "\d+"}, options={"expose"=true})
  26. */
  27. public function tournament($id): RedirectResponse|Response
  28. {
  29. $externalCompetition = $this->em->getRepository(ExternalCompetition::class)->findOneBy([
  30. 'id' => $id,
  31. 'deleted_at' => null,
  32. ]);
  33. if (!$externalCompetition) {
  34. $this->addFlash('error', 'El torneo buscado no existe');
  35. return $this->redirect($this->generateUrl('portada'));
  36. }
  37. $players = $this->em->getRepository(ExternalCompetitionPlayer::class)->resultsByExternalCompetitionForFrontend($id);
  38. $rankings = $this->em->getRepository(Ranking::class)->getRankingsByExternalCompetition($id);
  39. $menu = [];
  40. $order = '';
  41. if (count($players) > 0) {
  42. $menu = [
  43. 'inscritos' => [
  44. 'name' => 'user',
  45. 'clase' => 'user',
  46. 'posN' => 1,
  47. 'posL' => 3,
  48. ],
  49. ];
  50. $order = 'inscritos';
  51. }
  52. $clubLogo = $this->resolveClubLogo->__invoke($externalCompetition->getClub()->getId());
  53. return $this->render('frontend/Competicion/external-competition.html.twig', [
  54. 'competition' => $externalCompetition,
  55. 'players' => $players,
  56. 'rankings' => $rankings,
  57. 'menu' => $menu,
  58. 'orden' => $order,
  59. 'publi' => 0,
  60. 'clubLogo' => $clubLogo,
  61. ]);
  62. }
  63. }