src/Controller/OficinasController.php line 113

  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Symfony\Component\HttpFoundation\JsonResponse;
  8. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  9. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  10. use Symfony\Contracts\Translation\TranslatorInterface;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use Knp\Component\Pager\PaginatorInterface;
  13. use Symfony\Component\HttpFoundation\Cookie;
  14. use Symfony\Component\HttpFoundation\RequestStack;
  15. use Doctrine\Persistence\ManagerRegistry as PersistenceManagerRegistry;
  16. use Symfony\Component\Cache\Adapter\FilesystemAdapter;
  17. use Symfony\Contracts\Cache\ItemInterface;
  18. use App\Entity\Contenido;
  19. class OficinasController extends AbstractController
  20. {
  21.     #[Route(path: [
  22.         'es' => '/oficinas-cambio-moneda',
  23.         'en' => '/en/currency-exchange-offices'
  24.     ], name'oficinas')]
  25.     public function oficinas(Request $requestPersistenceManagerRegistry $doctrine): Response
  26.     {
  27.         $local=$request->getLocale();
  28.         $em $doctrine->getManager();
  29.         $oficinas $em->getRepository('App\Entity\Oficina')->findBy(['activo' => true]);
  30.         
  31.         $contenido $em->getRepository('App\Entity\Pagina')->findOneByClave('Oficinas');
  32.         
  33.         $provincias = array();
  34.         foreach($oficinas as $ofi){
  35.           if(!in_array($ofi->getProvincia(), $provincias)){
  36.               array_push($provincias$ofi->getProvincia());
  37.           }
  38.         }
  39.         
  40.         $localidades = array();
  41.         foreach($oficinas as $ofi){
  42.           if(!in_array($ofi->getLocalidad(), $localidades)){
  43.               array_push($localidades$ofi->getLocalidad());
  44.           }
  45.         }
  46. //         $provincias = $em->getRepository("App\Entity\Provincia")
  47. //             ->createQueryBuilder('p')
  48. //             ->leftJoin('p.localidades', 'l')
  49. //             ->addSelect('COUNT(l.id) AS HIDDEN totalLocalidades')
  50. //             ->groupBy('p.id')
  51. //             //->orderBy('totalLocalidades', 'DESC')
  52. //             ->orderBy('p.nombre', 'ASC')
  53. //             ->getQuery()
  54. //             ->getResult();
  55.         
  56.         //  var_dump($cotizaciones);die();
  57.         $returnArray = array(
  58.             'oficinas' => $oficinas,
  59.             'provincias' => $provincias,
  60.             'localidades' => $localidades,
  61.             'contenido' => $contenido
  62.         );
  63.         return $this->render('default/listado_oficinas.html.twig'$returnArray);
  64.     }
  65.     
  66.     #[Route(path: [
  67.         'es' => '/oficinas-cambio-moneda/{slug}',
  68.         'en' => '/en/currency-exchange-offices/{slug}'
  69.     ], name'listado_provincia')]
  70.     public function listadoProvincia(Request $requestPersistenceManagerRegistry $doctrine$slug): Response
  71.     {
  72.         $local=$request->getLocale();
  73.         $em $doctrine->getManager();
  74.         
  75.         $provinciaId $em->getRepository("App\Entity\ProvinciaTranslation")->findOneBy(['slug' => $slug'locale' => $local]);
  76.         $provincia $em->getRepository("App\Entity\Provincia")->findOneBy(['id' => $provinciaId->getTranslatable()]);
  77.         $localidades $em->getRepository("App\Entity\Localidad")->findBy(['provincia' => $provincia->getId()],['peso' => 'DESC']);
  78.         $oficinas $em->getRepository('App\Entity\Oficina')->findBy(['provincia' => $provincia->getId(), 'activo' => true]);
  79.         
  80.         $returnArray = array(
  81.             'provincia' => $provincia,
  82.             'localidades' => $localidades,
  83.             'oficinas' => $oficinas,
  84.             'contenido' => $provincia
  85. //             'provinciaIdioma' => $provinciaIdioma
  86.         );
  87.         return $this->render('default/listado_provincia.html.twig'$returnArray);
  88.     }
  89.     
  90.     #[Route(path: [
  91.         'es' => '/oficinas-cambio-moneda/{slugP}/{slugL}',
  92.         'en' => '/en/currency-exchange-offices/{slugP}/{slugL}'
  93.     ], name'listado_localidad')]
  94.     public function listadoLocalidad(Request $requestPersistenceManagerRegistry $doctrine$slugP$slugL): Response
  95.     {
  96.         $local=$request->getLocale();
  97.         $em $doctrine->getManager();
  98.         
  99.         $provinciaId $em->getRepository("App\Entity\ProvinciaTranslation")->findOneBy(['slug' => $slugP'locale' => $local]);
  100.         $provincia $em->getRepository("App\Entity\Provincia")->findOneBy(['id' => $provinciaId->getTranslatable()]);
  101.         $localidad $em->getRepository("App\Entity\Localidad")->findOneBy(['slug' => $slugL]);
  102.         $localidadIdioma $em->getRepository("App\Entity\LocalidadTranslation")->findOneBy(['translatable' => $localidad->getId(), 'locale' => $local]);
  103.         $oficinas $em->getRepository('App\Entity\Oficina')->findBy(['localidad' => $localidad->getId(), 'activo' => true],['peso' => 'DESC']);
  104.         
  105.         $returnArray = array(
  106.             'provincia' => $provincia,
  107.             'localidad' => $localidad,
  108.             'localidadIdioma' => $localidadIdioma,
  109.             'oficinas' => $oficinas,
  110.             'contenido' => $localidad
  111.         );
  112.         return $this->render('default/listado_localidad.html.twig'$returnArray);
  113.     }
  114.     
  115.     #[Route(path: [
  116.         'es' => '/oficinas-cambio-moneda/{slugP}/{slugL}/{slugO}',
  117.         'en' => '/en/currency-exchange-offices/{slugP}/{slugL}/{slugO}'
  118.     ], name'ficha_oficina')]
  119.     public function fichaOficina(Request $requestPersistenceManagerRegistry $doctrine$slugP$slugL$slugO): Response
  120.     {
  121.         $local=$request->getLocale();
  122.         $em $doctrine->getManager();
  123.         
  124.         $provinciaId $em->getRepository("App\Entity\ProvinciaTranslation")->findOneBy(['slug' => $slugP'locale' => $local]);
  125.         $provincia $em->getRepository("App\Entity\Provincia")->findOneBy(['id' => $provinciaId->getTranslatable()]);
  126.         $localidad $em->getRepository("App\Entity\Localidad")->findOneBy(['slug' => $slugL]);
  127.         $oficinaId $em->getRepository("App\Entity\OficinaTranslation")->findOneBy(['slug' => $slugO'locale' => $local]);
  128.         $oficina $em->getRepository('App\Entity\Oficina')->findOneBy(['id' => $oficinaId->getTranslatable()]);
  129.         $oficinaIdioma $em->getRepository("App\Entity\OficinaTranslation")->findOneBy(['translatable' => $oficina->getId(), 'locale' => $local]);
  130.         $maxDia $em->getRepository('App\Entity\Cotizaciones')->getMaxDia($oficina->getId());
  131.         $fechaMax = new \DateTime($maxDia);
  132.         $cotizaciones $em->getRepository('App\Entity\Cotizaciones')->findAllOrdered($fechaMax$oficina->getId());
  133.         
  134.         $returnArray = array(
  135.             'provincia' => $provincia,
  136.             'localidad' => $localidad,
  137.             'oficina' => $oficina,
  138.             'oficinaIdioma' => $oficinaIdioma,
  139.             'cotizaciones' => $cotizaciones,
  140.             'diaMax' => $maxDia
  141.         );
  142.         
  143.         
  144.         return $this->render('default/ficha_oficina.html.twig'$returnArray);
  145.     }
  146.     
  147.     
  148.     #[Route(path: [
  149.         'es' => '/oficina/ver/{slugO}',
  150.         'en' => '/en/office/see/{slugO}'
  151.     ], name'ficha_oficina_ant')]
  152.     public function fichaOficinaAnt(Request $requestPersistenceManagerRegistry $doctrine,  $slugO): Response
  153.     {
  154.         $local=$request->getLocale();
  155.         $em $doctrine->getManager();
  156.         
  157.         $oficinaIdioma $em->getRepository('App\Entity\OficinaTranslation')->findOneBy(['slug' => $slugO]);
  158.         
  159.         if (!$oficinaIdioma)
  160.             throw $this->createNotFoundException('No existe la página');
  161.             
  162.         $oficina $oficinaIdioma->getTranslatable();    
  163.         return $this->redirect($this->generateUrl('ficha_oficina',['slugP' => $oficina->getProvincia()->getSlug(), 'slugL' => $oficina->getLocalidad()->getSlug(), 'slugO' => $oficina->getSlug()]),301);
  164.             
  165.         
  166.     }
  167.     
  168.     
  169.