src/Controller/Frontend/RankingController.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Frontend;
  3. use App\Controller\Shared\Ranking\CalculateRankingCached;
  4. use App\Entity\Backend\Competicion;
  5. use App\Entity\Backend\Jugador;
  6. use App\Entity\Gestion\BonusRanking;
  7. use App\Entity\Gestion\ClasificadoRanking;
  8. use App\Entity\Gestion\PenalidadRanking;
  9. use App\Entity\Gestion\Ranking;
  10. use Doctrine\Persistence\ManagerRegistry;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\RedirectResponse;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. class RankingController extends AbstractController {
  17.     private $em;
  18.     public function __construct(ManagerRegistry $doctrine){
  19.         $this->em $doctrine->getManager();
  20.     }
  21.     /**
  22.      * F-122 Visualización del ranking
  23.      *
  24.      * @Route("/ranking/{id}", name="ranking", options={"expose"=true})
  25.      */
  26.     public function ranking($idCalculateRankingCached $calculateRankingCached): RedirectResponse|Response
  27.     {
  28.         $id intval($id);
  29.         $ranking $this->em->getRepository(Ranking::class)->find($id);
  30.         if (!$ranking) {
  31.             $this->addFlash(
  32.                     'error'"El ranking seleccionado no existe");
  33.             return $this->redirect($this->generateUrl('portada'));
  34.         }
  35.         $params $calculateRankingCached->__invoke($id);
  36.         return $this->render("frontend/Ranking/ranking.html.twig"$params);
  37.     }
  38.     /**
  39.      * F-123 Visualización detallada de un jugador en un ranking
  40.      *
  41.      * 2021-08-30 NO SE USA ACTUALMENTE
  42.      * @Route("/ranking/{id}/resultados/{idj}", name="ranking_resultados")
  43.      */
  44.     public function rankingResultados($id$idj) {
  45.         $ranking $this->em->getRepository(Ranking::class)->find($id);
  46.         $jugador $this->em->getRepository(Jugador::class)->find($idj);
  47.         $penalidad = array();
  48.         $bonus = array();
  49.         $puntos = array();
  50.         $puntosAux $this->em->getRepository(ClasificadoRanking::class)->getPuntosJugador($id$idj);
  51.         foreach ($puntosAux as $pa) {
  52.             $puntos[$pa["competicion"]] = ["puntos" => $pa["puntos"], "inscrito" => $pa["inscrito"]];
  53.         }
  54.         $penalidadAux $this->em->getRepository(PenalidadRanking::class)->findBy(["ranking" => $id]);
  55.         foreach ($penalidadAux as $pa) {
  56.             if (!$pa->getTotal()) {
  57.                 $comp $pa->getCompeticion()->getId();
  58.                 $puntos[$comp]["penalidad"] = $pa->getPuntos();
  59.                 $puntos["total"] -= $pa->getPuntos();
  60.             }
  61.         }
  62.         $bonusAux $this->em->getRepository(BonusRanking::class)->findBy(["ranking" => $id]);
  63.         foreach ($bonusAux as $bn) {
  64.             if (!$bn->getTotal()) {
  65.                 $comp $bn->getCompeticion()->getId();
  66.                 $puntos[$comp]["bonus"] = $bn->getPuntos();
  67.                 $puntos["total"] += $bn->getPuntos();
  68.             }
  69.         }
  70.         return $this->render("frontend/Ranking/resultados.html.twig", [
  71.                     "ranking"   => $ranking,
  72.                     "puntos"    => $puntos,
  73.                     "jugador"   => $jugador,
  74.                     "penalidad" => $penalidad,
  75.                     "bonus"     => $bonus
  76.         ]);
  77.     }
  78.     /**
  79.      * F-124 Listado de rankings a los que pertenece una competición [No se usa]
  80.      *
  81.      * @Route("/getListadoRankings", name="listado_rankings", options={"expose"=true})
  82.      */
  83.     public function listadoRanking(Request $requestCalculateRankingCached $calculateRankingCached) {
  84.         $id $request->request->get("id");
  85.         $competicion $this->em->getRepository(Competicion::class)->find($id);
  86.         $listado_rankings = [];
  87.         $rankings_competicion $competicion->getRankings();
  88.         foreach ($rankings_competicion as $rc) {
  89.             $rid $rc->getId();
  90.             $listado_rankings[$rid] = $calculateRankingCached->__invoke($rid);
  91.         }
  92.         return $this->render("frontend/Ranking/tabs_ranking.html.twig", [
  93.                     "listado_rankings" => $listado_rankings
  94.         ]);
  95.     }
  96. }