src/Controller/OficinasController.php line 133
- <?php
- namespace App\Controller;
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\Routing\Annotation\Route;
- use Symfony\Component\HttpFoundation\JsonResponse;
- use Symfony\Component\HttpFoundation\ResponseHeaderBag;
- use Symfony\Component\HttpFoundation\BinaryFileResponse;
- use Symfony\Contracts\Translation\TranslatorInterface;
- use Doctrine\ORM\EntityManagerInterface;
- use Knp\Component\Pager\PaginatorInterface;
- use Symfony\Component\HttpFoundation\Cookie;
- use Symfony\Component\HttpFoundation\RequestStack;
- use Doctrine\Persistence\ManagerRegistry as PersistenceManagerRegistry;
- use Symfony\Component\Cache\Adapter\FilesystemAdapter;
- use Symfony\Contracts\Cache\ItemInterface;
- use App\Entity\Contenido;
- class OficinasController extends AbstractController
- {
- #[Route(path: [
- 'es' => '/oficinas-cambio-moneda',
- 'en' => '/en/currency-exchange-offices'
- ], name: 'oficinas')]
- public function oficinas(Request $request, PersistenceManagerRegistry $doctrine): Response
- {
- $local=$request->getLocale();
- $em = $doctrine->getManager();
- $oficinas = $em->getRepository('App\Entity\Oficina')->findBy(['activo' => true]);
- $contenido = $em->getRepository('App\Entity\Pagina')->findOneByClave('Oficinas');
- $provincias = array();
- foreach($oficinas as $ofi){
- if(!in_array($ofi->getProvincia(), $provincias)){
- array_push($provincias, $ofi->getProvincia());
- }
- }
- $localidades = array();
- foreach($oficinas as $ofi){
- if(!in_array($ofi->getLocalidad(), $localidades)){
- array_push($localidades, $ofi->getLocalidad());
- }
- }
- // $provincias = $em->getRepository("App\Entity\Provincia")
- // ->createQueryBuilder('p')
- // ->leftJoin('p.localidades', 'l')
- // ->addSelect('COUNT(l.id) AS HIDDEN totalLocalidades')
- // ->groupBy('p.id')
- // //->orderBy('totalLocalidades', 'DESC')
- // ->orderBy('p.nombre', 'ASC')
- // ->getQuery()
- // ->getResult();
- // var_dump($cotizaciones);die();
- $returnArray = array(
- 'oficinas' => $oficinas,
- 'provincias' => $provincias,
- 'localidades' => $localidades,
- 'contenido' => $contenido
- );
- return $this->render('default/listado_oficinas.html.twig', $returnArray);
- }
- #[Route(path: [
- 'es' => '/oficinas-cambio-moneda/{slug}',
- 'en' => '/en/currency-exchange-offices/{slug}'
- ], name: 'listado_provincia')]
- public function listadoProvincia(Request $request, PersistenceManagerRegistry $doctrine, $slug): Response
- {
- $local=$request->getLocale();
- $em = $doctrine->getManager();
- $provinciaId = $em->getRepository("App\Entity\ProvinciaTranslation")->findOneBy(['slug' => $slug, 'locale' => $local]);
- $provincia = $em->getRepository("App\Entity\Provincia")->findOneBy(['id' => $provinciaId->getTranslatable()]);
- $localidades = $em->getRepository("App\Entity\Localidad")->findBy(['provincia' => $provincia->getId()],['peso' => 'DESC']);
- $oficinas = $em->getRepository('App\Entity\Oficina')->findBy(['provincia' => $provincia->getId(), 'activo' => true]);
- $returnArray = array(
- 'provincia' => $provincia,
- 'localidades' => $localidades,
- 'oficinas' => $oficinas,
- 'contenido' => $provincia
- // 'provinciaIdioma' => $provinciaIdioma
- );
- return $this->render('default/listado_provincia.html.twig', $returnArray);
- }
- #[Route(path: [
- 'es' => '/oficinas-cambio-moneda/{slugP}/{slugL}',
- 'en' => '/en/currency-exchange-offices/{slugP}/{slugL}'
- ], name: 'listado_localidad')]
- public function listadoLocalidad(Request $request, PersistenceManagerRegistry $doctrine, $slugP, $slugL): Response
- {
- $local=$request->getLocale();
- $em = $doctrine->getManager();
- $provinciaId = $em->getRepository("App\Entity\ProvinciaTranslation")->findOneBy(['slug' => $slugP, 'locale' => $local]);
- $provincia = $em->getRepository("App\Entity\Provincia")->findOneBy(['id' => $provinciaId->getTranslatable()]);
- $localidad = $em->getRepository("App\Entity\Localidad")->findOneBy(['slug' => $slugL]);
- $localidadIdioma = $em->getRepository("App\Entity\LocalidadTranslation")->findOneBy(['translatable' => $localidad->getId(), 'locale' => $local]);
- $oficinas = $em->getRepository('App\Entity\Oficina')->findBy(['localidad' => $localidad->getId(), 'activo' => true],['peso' => 'DESC']);
- $returnArray = array(
- 'provincia' => $provincia,
- 'localidad' => $localidad,
- 'localidadIdioma' => $localidadIdioma,
- 'oficinas' => $oficinas,
- 'contenido' => $localidad
- );
- return $this->render('default/listado_localidad.html.twig', $returnArray);
- }
- #[Route(path: [
- 'es' => '/oficinas-cambio-moneda/{slugP}/{slugL}/{slugO}',
- 'en' => '/en/currency-exchange-offices/{slugP}/{slugL}/{slugO}'
- ], name: 'ficha_oficina')]
- public function fichaOficina(Request $request, PersistenceManagerRegistry $doctrine, $slugP, $slugL, $slugO): Response
- {
- $local=$request->getLocale();
- $em = $doctrine->getManager();
- $provinciaId = $em->getRepository("App\Entity\ProvinciaTranslation")->findOneBy(['slug' => $slugP, 'locale' => $local]);
- $provincia = $em->getRepository("App\Entity\Provincia")->findOneBy(['id' => $provinciaId->getTranslatable()]);
- $localidad = $em->getRepository("App\Entity\Localidad")->findOneBy(['slug' => $slugL]);
- $oficinaId = $em->getRepository("App\Entity\OficinaTranslation")->findOneBy(['slug' => $slugO, 'locale' => $local]);
- $oficina = $em->getRepository('App\Entity\Oficina')->findOneBy(['id' => $oficinaId->getTranslatable()]);
- $oficinaIdioma = $em->getRepository("App\Entity\OficinaTranslation")->findOneBy(['translatable' => $oficina->getId(), 'locale' => $local]);
- $maxDia = $em->getRepository('App\Entity\Cotizaciones')->getMaxDia($oficina->getId());
- $fechaMax = new \DateTime($maxDia);
- $cotizaciones = $em->getRepository('App\Entity\Cotizaciones')->findAllOrdered($fechaMax, $oficina->getId());
- $returnArray = array(
- 'provincia' => $provincia,
- 'localidad' => $localidad,
- 'oficina' => $oficina,
- 'oficinaIdioma' => $oficinaIdioma,
- 'cotizaciones' => $cotizaciones,
- 'diaMax' => $maxDia
- );
- return $this->render('default/ficha_oficina.html.twig', $returnArray);
- }
- #[Route(path: [
- 'es' => '/oficina/ver/{slugO}',
- 'en' => '/en/office/see/{slugO}'
- ], name: 'ficha_oficina_ant')]
- public function fichaOficinaAnt(Request $request, PersistenceManagerRegistry $doctrine, $slugO): Response
- {
- $local=$request->getLocale();
- $em = $doctrine->getManager();
- $oficinaIdioma = $em->getRepository('App\Entity\OficinaTranslation')->findOneBy(['slug' => $slugO]);
- if (!$oficinaIdioma)
- throw $this->createNotFoundException('No existe la página');
- $oficina = $oficinaIdioma->getTranslatable();
- return $this->redirect($this->generateUrl('ficha_oficina',['slugP' => $oficina->getProvincia()->getSlug(), 'slugL' => $oficina->getLocalidad()->getSlug(), 'slugO' => $oficina->getSlug()]),301);
- }
- }