src/Controller/CotizacionesController.php line 100

  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\Security\Core\Authorization\AuthorizationCheckerInterface;
  17. // use Symfony\Component\Security\Core\Security;
  18. use Symfony\Component\Cache\Adapter\FilesystemAdapter;
  19. use Symfony\Contracts\Cache\ItemInterface;
  20. use App\Form\AlertaType;
  21. use App\Entity\Alerta;
  22. use App\Services\SettingsManager;
  23. class CotizacionesController extends AbstractController
  24. {
  25.     
  26. //     private $security;
  27. //     
  28. //     public function __construct(Security $security)
  29. //     {
  30. //         $this->security = $security;
  31. //     }
  32.     
  33.     #[Route(path: [
  34.         'es' => '/cotizaciones',
  35.         'en' => '/en/exchange-rates'
  36.     ], name'cotizaciones')]
  37.     public function cotizaciones(Request $requestPersistenceManagerRegistry $doctrine): Response
  38.     {
  39.         $local=$request->getLocale();
  40.         $em $doctrine->getManager();
  41.         $of $maxDia $ofi $cotizaciones null;
  42.         $divisas $em->getRepository('App\Entity\Divisa')->findBy(["visible" => 1]);
  43.         $oficinas $em->getRepository('App\Entity\Oficina')->findAll();
  44. //         $permiteCompra = 1;
  45.         $rep "";
  46.         if(isset($_COOKIE['cookieoficina']) && $_COOKIE['cookieoficina'] != 0){
  47.             $ofi = (integer)($_COOKIE['cookieoficina']);
  48.             
  49.             if($ofi == 1){
  50.                 $rep $em->getRepository('App\Entity\Oficina')->findOneById($this->getParameter('oficina_por_defecto'));
  51.                 $maxDia $em->getRepository('App\Entity\Cotizaciones')->getMaxDia($this->getParameter('oficina_por_defecto'));
  52.                 $fechaMax = new \DateTime($maxDia);
  53.                 $cotizaciones $em->getRepository('App\Entity\Cotizaciones')->findAllOrdered($fechaMax$this->getParameter('oficina_por_defecto'));
  54.             } else {
  55.                 $rep $em->getRepository('App\Entity\Oficina')->findOneById($_COOKIE['cookieoficina']);
  56.                 $maxDia $em->getRepository('App\Entity\Cotizaciones')->getMaxDia($ofi);
  57.                 $fechaMax = new \DateTime($maxDia);
  58.                 $cotizaciones $em->getRepository('App\Entity\Cotizaciones')->findAllOrdered($fechaMax$ofi);
  59.             }
  60.             
  61.         } else {
  62.             $ofi = (integer)0;
  63. //             $cotizaciones        = $em->getRepository('App\Entity\Cotizaciones')->getLastChanges($local);
  64.             $cotizaciones = (integer)0;
  65.         }
  66. //        dump($cotizaciones);die();
  67.         $contenido $em->getRepository('App\Entity\Pagina')->findOneByClave('Cotizaciones');
  68.         $returnArray = array(
  69. //             'pagina'     => $pagina,
  70.             'contenido'  => $contenido,
  71.             'oficinas' => $oficinas,
  72.             'cotizaciones' => $cotizaciones,
  73.             'diaMax' => $maxDia,
  74.             'ofi_var' => $ofi,
  75.             'of' => $rep,
  76.             //'provincias' => $provincias1,
  77.             //'permiteCompra' => $permiteCompra,
  78.             'divisas' => $divisas
  79.         );
  80.         return $this->render('default/cotizaciones.html.twig'$returnArray);
  81.     }
  82.     
  83.     #[Route(path: [
  84.         'es' => '/cotizaciones/{nombre}',
  85.         'en' => '/en/exchange-rates/{nombre}'
  86.     ], name'divisas')]
  87.     public function divisas(Request $requestPersistenceManagerRegistry $doctrine$nombre): Response
  88.     {
  89.         $local=$request->getLocale();
  90.         $em $doctrine->getManager();
  91.         $divisas $em->getRepository('App\Entity\Divisa')->findAll();
  92.         $divisaT $em->getRepository('App\Entity\DivisaTranslation')->findOneBy(['slug' => $nombre,'locale' => $local]);
  93.         
  94.         
  95.         
  96. //         $divisa = $em->getRepository('App\Entity\Divisa')->findOneBy(['shortName' => $nombre]);
  97.         
  98.         $conversionId $em->getRepository("App\Entity\DivisaConversionTranslation")->findOneBy(['slug' => $nombre'locale' => $local]);
  99.         if($conversionId != null){
  100.             $conversion $em->getRepository("App\Entity\DivisaConversion")->findOneBy(['id' => $conversionId->getTranslatable()]);
  101.         } else {
  102.             $conversion null;
  103.         }
  104.         
  105.         if (!$conversion and !$divisaT)
  106.             throw $this->createNotFoundException('404');
  107.             
  108.         if ($divisaT)
  109.             $divisa $divisaT->getTranslatable();
  110.         else
  111.             $divisa null;
  112.         
  113.         $oficinas $em->getRepository('App\Entity\Oficina')->findAll();
  114.         $cotizaciones $em->getRepository('App\Entity\Cotizaciones')->findAll();
  115.         
  116.         if(isset($_COOKIE['cookieoficina']) && $_COOKIE['cookieoficina'] != 0){
  117.             $ofi = (integer)($_COOKIE['cookieoficina']);
  118.             if($ofi == 1){
  119.                 $ofi $this->getParameter('oficina_por_defecto');
  120.             }
  121.             $oficina $em->getRepository('App\Entity\Oficina')->findOneBy(['id' => $ofi]);
  122.         }else{
  123.             $ofi = (integer)0;
  124.             $oficina 0;
  125.         }
  126.         if($divisa != null) {
  127.             $cotizacionesJson=json_encode($em->getRepository('App\Entity\Cotizaciones')->getUltimasCotizacionesOficina($divisa$ofi));
  128.         } elseif($conversion != null && $conversion->getDivisaOrigen()->getId() != 10) {
  129.             $cotizacionesJson=json_encode($em->getRepository('App\Entity\Cotizaciones')->getUltimasCotizacionesOficina($conversion->getDivisaOrigen(), $ofi));
  130.         } elseif($conversion != null && $conversion->getDivisaDestino()->getId() != 10) {
  131.             $cotizacionesJson=json_encode($em->getRepository('App\Entity\Cotizaciones')->getUltimasCotizacionesOficina($conversion->getDivisaDestino(), $ofi));
  132.         }
  133.         
  134.         $returnArray = array(
  135.             'oficinas' => $oficinas,
  136.             'oficina' => $oficina,
  137.             'cotizaciones' => $cotizaciones,
  138.             'cotizacionesJsonG' => $cotizacionesJson,
  139.             'divisas' => $divisas,
  140.             'divisa' => $divisa,
  141.             'ofi_var' => $ofi,
  142.             'conversion' => $conversion
  143.         );
  144.         return $this->render('default/divisas.html.twig'$returnArray);
  145.     }
  146.     
  147.     
  148.     
  149.     #[Route(path: [
  150.         'es' => '/createAlert',
  151.         'en' => '/en/createAlert'
  152.     ], name'create_alert')]
  153.     public function alerta(Request $requestPersistenceManagerRegistry $doctrineSettingsManager $smAuthorizationCheckerInterface $securityContext): Response
  154.     {
  155.         $local=$request->getLocale();
  156.         
  157.         
  158.         $ajax $request->isXmlHttpRequest();
  159.         
  160. //         $settings = $this->get('dinamic_settings.manager');
  161.         // Comprobamos que el usuario esté logueado
  162. //         $securityContext = $this->container->get('security.context');
  163.         if($ajax and !$securityContext->isGranted('IS_AUTHENTICATED_FULLY') || !$securityContext->isGranted('IS_AUTHENTICATED_FULLY')) {
  164.             return new JsonResponse(['state' => false'msg' => $sm->getValue('currency.alert.login')]);
  165.         }
  166.         
  167.         
  168.         // Creamos el formulario de alerta
  169.         $entity = new Alerta();
  170.         $form $this->createForm(AlertaType::class, $entity, array(
  171.             'action' => $this->generateUrl('create_alert'),
  172.             'method' => 'POST',
  173.             'settings' => $sm,
  174.         ));
  175.         if ($ajax) {
  176.             $form->handleRequest($request);
  177.             
  178.             if($form->isSubmitted() and $form->isValid()) {
  179.                 dump($form->get('tipo')->getData());
  180.                 
  181.                 $em $doctrine->getManager();
  182.                 $user=$this->getUser();
  183.                 $user->setIdiomaPreferido($local);
  184.                 // Buscamos que no tenga alertas creadas actualmente de esta divisa
  185.                 $currentlyCreated $em->getRepository('App\Entity\Alerta')->findOneBy(['usuario' => $this->getUser(), 'divisa' => $form->get('divisa')->getData()]);
  186.                 if(isset($_COOKIE['cookieoficina']) && $_COOKIE['cookieoficina'] != 0){
  187.                     $ofi = (integer)($_COOKIE['cookieoficina']);
  188.                     if($ofi == 1){
  189.                         $ofi $this->getParameter('oficina_por_defecto');
  190.                     }
  191.                 }else{
  192.                     $ofi = (integer)0;
  193.                 }
  194.                 $oficina $em->getRepository('App\Entity\Oficina')->findOneBy(['id' => $ofi]);
  195.                 if($currentlyCreated) {
  196.                     return new JsonResponse(['state' => false'msg' => $sm->getValue('currency.alert.hasalert')]);
  197.                 }
  198.                 $entity->setActivo(true)
  199.                     ->setOficina($oficina)
  200.                     ->setUsuario($this->getUser());
  201.                 $em->persist($entity);
  202.                 $em->flush();
  203.                 return new JsonResponse(['status' => true'msg' => $sm->getValue('currency.alert.newalert')]);
  204.             }
  205.         
  206.         }
  207.         
  208.          
  209.         $html $this->render('default/alerta.html.twig', [
  210.             'status' => false
  211.             'form' => $form
  212.         ]);
  213.         $returnArray = [
  214.             'html' => $html
  215.         ];
  216.         
  217. //         dump($html); die();
  218.         if ($ajax)
  219.             return new JsonResponse($returnArray200);
  220.             
  221.         return $html;
  222.     }
  223.     
  224.     
  225.     
  226.     
  227.     
  228.      #[Route(path: [
  229.         'es' => '/rates-table',
  230.         'en' => '/en/rates-table'
  231.     ], name'app_rates')]
  232.     public function ratesAction(Request $requestPersistenceManagerRegistry $doctrine): Response
  233.     {
  234.         $locale=$request->getLocale();
  235.         $em $doctrine->getManager();
  236.         
  237.         $fecha = new \DateTime();
  238.         $oficina $_GET['id'];
  239.         $cotizaciones $em->getRepository('App\Entity\Cotizaciones')->getLastChangesOffice($oficina$locale);
  240.         $objeto $em->getRepository('App\Entity\Oficina')->findOneBy(['id' => $oficina]);
  241.         if (!$objeto) {
  242.             throw $this->createNotFoundException('Oficina no encontrada');
  243.         }
  244.         $ofi_nom $objeto->getNombre();
  245.         return $this->render('admin/cotizacion/list_imprimir.html.twig', [
  246.             'entities' => $cotizaciones,
  247.             'oficina' => $ofi_nom
  248.         ]);
  249.     }    
  250.      #[Route(path: [
  251.         'es' => '/rates-screen',
  252.         'en' => '/en/rates-screen'
  253.     ], name'app_rates_screen')]
  254.     public function ratesScreenAction(Request $requestPersistenceManagerRegistry $doctrine): Response
  255.     {
  256.         $locale=$request->getLocale();
  257.         $em $doctrine->getManager();
  258.         
  259.         $fecha = new \DateTime();
  260.         $oficina $_GET['id'];
  261.         $cotizaciones $em->getRepository('App\Entity\Cotizaciones')->getLastChangesOffice($oficina$locale);
  262.         $objeto $em->getRepository('App\Entity\Oficina')->findOneBy(['id' => $oficina]);
  263.         if (!$objeto) {
  264.             throw $this->createNotFoundException('Oficina no encontrada');
  265.         }
  266.         $ofi_nom $objeto->getNombre();
  267.         return $this->render('admin/cotizacion/pantalla_list_imprimir.html.twig', [
  268.             'entities' => $cotizaciones,
  269.             'oficina' => $ofi_nom
  270.         ]);
  271.     }    
  272. }