src/Controller/AbonamentsController.php line 4121

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Controller\CorreuController;
  4. use App\Controller\WebServicesCustomerAccountController;
  5. use App\Controller\WebServicesController;
  6. use App\Entity\Abonaments;
  7. use App\Entity\General;
  8. use App\Entity\Paisos;
  9. use App\Entity\Sidebar;
  10. use App\Entity\Sponsors;
  11. use App\Entity\Usuari;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  17. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  18. use Symfony\Component\Mailer\MailerInterface;
  19. use Symfony\Component\Security\Core\SecurityContext;
  20. use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
  21. use Symfony\Component\HttpFoundation\File\UploadedFile;
  22. use Symfony\Component\HttpFoundation\RequestStack;
  23. use Symfony\Component\DependencyInjection\ContainerInterface;
  24. use Symfony\Contracts\Translation\TranslatorInterface;
  25. use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
  26. use App\Entity\Comandes;
  27. use App\Entity\ComandesLinies;
  28. use App\Entity\Consumers;
  29. use App\Util\RedsysAPI;
  30. use App\Util\changeSize;
  31. use App\Entity\Rgpd;
  32. use App\Util\QRcode;
  33. use App\Util\Util;
  34. use App\Entity\ConsumersHasConsumers;
  35. use App\Controller\WebServicesCompanyController;
  36. class AbonamentsController extends AbstractController
  37. {
  38.     public $aEstacions = array( 'MAS'   => 'Masella',
  39.                                 'ALP'   => 'Alp',
  40.                                 'Extra' => 'Extra');
  41.     
  42.     public $aTipusAbonament = array (   'AD'    => 'adult',
  43.                                         'IN'    => 'infant',
  44.                                         'ME'    => 'menor',
  45.                                         'V1'    => 'vetera',
  46.                                         'V2'    => 'vetera2',
  47.                                         'UN'    => 'universitari',
  48.                                         'JO'    => 'jove',
  49.                                         'JU'    => 'junior',
  50.                                         'EN'    => 'entrenador');
  51.     protected $enSidebar;
  52.     protected $enGeneral;
  53.     protected $enSponsors;
  54.     private $em;
  55.     private $objUtil;
  56.     private $requestStack;
  57.     private $session;
  58.     private $translator;
  59.     private $params;
  60.     private $correuController;
  61.     private $phpmailer;
  62.     private $sPathUploads;
  63.     public function __construct(EntityManagerInterface $em,RequestStack $requestStack,TranslatorInterface $translatorContainerBagInterface $paramsCorreuController $correuController)
  64.     {
  65.         $this->em $em;
  66.         $this->objUtil = new Util($this->em);
  67.         $this->requestStack $requestStack;
  68.         $this->session $this->requestStack->getSession();
  69.         $this->translator $translator;
  70.         $this->params $params;
  71.         $this->correuController $correuController;
  72.         $this->phpmailer = new CorreuController();
  73.         $this->sPathUploads dirname(__FILE__) . "/../../public/uploads/";
  74.         $this->enSidebar $this->em->getRepository(Sidebar::class)->findBy(
  75.             array(   'general' => 1)
  76.         );
  77.         /////////////////////////
  78.         // Recoger dades generals
  79.         /////////////////////////
  80.         $this->enGeneral $this->em->getRepository(General::class)->findAll();
  81.         ///////////
  82.         // Sponsors
  83.         ///////////
  84.         $this->enSponsors $this->em->getRepository(Sponsors::class)->findBy(
  85.             array( 'visible'   => 1),
  86.             array('ordre' => 'ASC')
  87.         );
  88.     }
  89.     /**
  90.      * @param Request $peticion
  91.      * @return Response
  92.      *
  93.      */
  94.     public function indexAction(Request $peticion)
  95.     {
  96.         $aGeneral $this->enGeneral[0];
  97.         if (!$aGeneral->getBotigaAbonament())
  98.         {
  99.             // Obtenir la direcció IP del client
  100.             $clientIp $peticion->getClientIp();
  101.             if ($clientIp != '195.77.190.2'
  102.                 && $clientIp != '194.36.123.130'
  103.                 && $clientIp != '195.235.152.100'
  104.             )
  105.             {
  106.                 return $this->redirect($this->generateUrl('home'));
  107.             }
  108.         }
  109.         $session $peticion->getSession();
  110.         $session->start();
  111.         
  112.         $repository $this->em->getRepository(Abonaments::class);
  113.         
  114.         $aSort = array('ordre'      => 'ASC');
  115.         $aParam = array(    'estacio'       => 'MAS'
  116.                             'familiar'      => 0,
  117.                             'suplement'     => 0,
  118.                             'actiu'         => 1,
  119.                             'nomes_tablet'  => 0,
  120.                             //'club_esqui'    => 0,
  121.                             'promocio'      => 0,
  122.                             );
  123.         $objAbonaments_mas $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
  124.         $aParam = array(    'estacio'       => 'ALP',
  125.                             'familiar'      => 0,
  126.                             'suplement'     => 0
  127.                             'actiu'         => 1
  128.                             'nomes_tablet'  => 0
  129.                             //'club_esqui'    => 0,
  130.                             'promocio'      => 0);
  131.         $objAbonaments_alp $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
  132.         $aParam = array(    'familiar'      => 1
  133.                             'actiu'         => 1,
  134.                             'nomes_tablet'  => 0,
  135.                             //'club_esqui'    => 0
  136.                         );
  137.         $objAbonaments_familia $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
  138.                 
  139.         $objGeneral $this->em->getRepository(General::class)->findBy(array('id' => 1));
  140.         $blCistella false;
  141.         if ($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')) $blCistella true;
  142.         
  143.         $sessConsumer_id '';
  144.         if ($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'))
  145.         {
  146.             $sessConsumer_id $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id');
  147.         }
  148.         
  149.         return $this->render('abonaments.html.twig', array(
  150.             'objAbonaments_mas'     => $objAbonaments_mas,
  151.             'objAbonaments_alp'     => $objAbonaments_alp,
  152.             'fiOferta'              => $objGeneral[0]->getDataFiOferta(),
  153.             'blCistella'            => $blCistella,
  154.             'enSidebar'             => $this->enSidebar[0],
  155.             'enGeneral'             => $this->enGeneral,
  156.             'enSponsors'            => $this->enSponsors,
  157.             'abonamentsFamiliars'   => count($objAbonaments_familia),
  158.             'sessConsumer_id'       => $sessConsumer_id,
  159.             'util'                  => $this->objUtil
  160.         ));
  161.     }
  162.     /**
  163.      * @param Request $peticion
  164.      * @return Response
  165.      */
  166.     public function formAltaConsumerAction(Request $peticion)
  167.     {
  168.         $aRequest $peticion->query;
  169.         $aPost $aRequest->all();
  170.         return $this->render('alta_consumer.html.twig', array(
  171.             'enSidebar'             => $this->enSidebar[0],
  172.             'enGeneral'             => $this->enGeneral,
  173.             'enSponsors'            => $this->enSponsors,
  174.             'aPost'                 => $aPost
  175.             ));
  176.     }
  177.     /**
  178.      * @param Request $peticion
  179.      * @return Response
  180.      */
  181.     public function avisLegalAction(Request $peticion)
  182.     {
  183.         return $this->render('avisLegal.html.twig', array(
  184.             'enSidebar'             => $this->enSidebar[0],
  185.             'enGeneral'             => $this->enGeneral,
  186.             'enSponsors'            => $this->enSponsors
  187.             ));
  188.     }
  189.     /**
  190.      * @param Request $peticion
  191.      * @return Response
  192.      */
  193.     public function documentsAction(Request $peticion)
  194.     {
  195.         $aRequest $peticion->attributes;
  196.         $aRequest2 $peticion->request;
  197.         /////////////////////////////////////////////
  198.         /// Actualitzem consumer i wtp als suplements
  199.         /////////////////////////////////////////////
  200.         $aParam = array(    'comandes'  => $this->session->get('sessCol_id'),
  201.                             'suplement' => 1);
  202.         $objComandesLiniesSuplement $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
  203.         if ($objComandesLiniesSuplement)
  204.         {
  205.             foreach ($objComandesLiniesSuplement as $key => $objLinia)
  206.             {
  207.                 //dump($objLinia->getRelacionatComandesLinies()->getConsumers());
  208.                 $objComandesLiniesSuplementUpdate $this->em->getRepository(ComandesLinies::class)->find($objLinia->getId());
  209.                 $objComandesLiniesSuplementUpdate->setConsumers($objLinia->getRelacionatComandesLinies()->getConsumers());
  210.                 $objComandesLiniesSuplementUpdate->setXipIntroduitClient($objLinia->getRelacionatComandesLinies()->getXipIntroduitClient());
  211.                 $this->em->persist($objComandesLiniesSuplementUpdate);
  212.                 $this->em->flush();
  213.             }
  214.         }
  215.         //////////////////////////////////////////////////////////
  216.         // Recuperem les línies de la comanda que no són suplement
  217.         //////////////////////////////////////////////////////////
  218.         $aParam = array(    'comandes'  => $this->session->get('sessCol_id'),
  219.                             'suplement' => 0);
  220.         $objComandesLinies $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
  221.         if ($aRequest->has('backend'
  222.                 || $aRequest2->has('backend'))
  223.         {
  224.            /*
  225.             * Insertem informació a log
  226.             */
  227.             $this->objUtil->logAction($peticion$this->getUser());
  228.             return $this->render('Backend\Formulario\documents.html.twig', array(
  229.                 'objComandesLinies' => $objComandesLinies,
  230.                 'enGeneral'         => $this->enGeneral,
  231.                 'club_esqui'        => $this->session->get('club_esqui'),
  232.                 'util'              => $this->objUtil
  233.             ));
  234.         } else {
  235.             return $this->render('documents.html.twig', array(
  236.                 'objComandesLinies' => $objComandesLinies,
  237.                 'enSidebar'         => $this->enSidebar[0],
  238.                 'enGeneral'         => $this->enGeneral,
  239.                 'enSponsors'        => $this->enSponsors,
  240.                 'util'              => $this->objUtil
  241.             ));
  242.         }
  243.     }
  244.     /**
  245.      * @param Request $peticion
  246.      * @return Response
  247.      */
  248.     public function comprovarDadesAction(Request $peticion)
  249.     {
  250.         $aRequest2 $peticion->attributes;
  251.         $aRequest $peticion->query;
  252.         $repository $this->em->getRepository(Abonaments::class);
  253.         //////////////////////////////////////////////////////////
  254.         // Recuperem les linies de la comanda que no són suplement
  255.         //////////////////////////////////////////////////////////
  256.         $aParam = array(
  257.             'comandes'  => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'),
  258.             'suplement' => 0
  259.         );
  260.         $objComandesLinies $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
  261.         
  262.         $blConnexioAxess true;
  263.         $blAltaModificacioAxess true;
  264.         ///////////////////////////////////////////////////////////////////////////////////////////////
  265.         // S'ha de treure els consumers de les línies de comandes i crear-los a la taula dels consumers
  266.         ///////////////////////////////////////////////////////////////////////////////////////////////
  267.         if (count ($objComandesLinies) > )
  268.         {
  269.             foreach ($objComandesLinies as $key => $aComandesLinies)
  270.             {
  271.                 $aFamiliaDelPagador = array();
  272.                 $blComandaAmbConsumer false;
  273.                 $enComandes $this->em->getRepository(Comandes::class)->find($aComandesLinies->getComandes()->getId());
  274.                 if ($enComandes)
  275.                 {
  276.                     ///////////////////////////////////////////////////////////////////
  277.                     // Si la comanda s'ha fet abans de logar-se no te el id de consumer
  278.                     ///////////////////////////////////////////////////////////////////
  279.                     if ($enComandes->getConsumers())
  280.                     {
  281.                         $iIdConsumers $enComandes->getConsumers()->getId();
  282.                         $blComandaAmbConsumer true;
  283.                     } else {
  284.                         $iIdConsumers $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id');
  285.                     }
  286.                     $enConsumers $this->em->getRepository(Consumers::class)->find($iIdConsumers);
  287.                     $aFamiliaDelPagador = array(
  288.                         'fam_id_proj'   => $enConsumers->getCustomerIdProj(),
  289.                         'fam_id_pos'    => $enConsumers->getCustomerIdProj(),
  290.                         'fam_id_num'    => $enConsumers->getCustomerIdProj(),
  291.                     );
  292.                     /////////////////////////////////////////////
  293.                     /// actualitzar consumer pagador a la comanda
  294.                     /////////////////////////////////////////////
  295.                     if (!$blComandaAmbConsumer)
  296.                     {
  297.                         $enComandes->setConsumers($enConsumers);
  298.                         $this->em->persist($enComandes);
  299.                         $this->em->flush();
  300.                         $blComandaAmbConsumer true;
  301.                     }
  302.                 }
  303.                 $bEnviarAAxess true;
  304.                 $bEnviarAAxessNomesFoto false;
  305.                 if ($aComandesLinies->getConsumers())
  306.                 {
  307.                     $enConsumersUpdate $this->em->getRepository(Consumers::class)->find($aComandesLinies->getConsumers()->getId());
  308.                     ///////////////////////////////////////////
  309.                     // Comprivem si s'ha modificat el Consumers
  310.                     ///////////////////////////////////////////
  311.                     if ($enConsumersUpdate->getModificat() != 1
  312.                         && !is_null($aComandesLinies->getConsumers()->getCustomerIdNum())
  313.                         && $aComandesLinies->getConsumers()->getCustomerIdNum() != '')
  314.                     {
  315.                         $bEnviarAAxess false;
  316.                     }
  317.                     $enConsumersUpdate->setDataNaixement($aComandesLinies->getDataNaixement());
  318.                     if ($aComandesLinies->getImatge() != '')
  319.                     {
  320.                         $enConsumersUpdate->setImatge($aComandesLinies->getImatge());
  321.                         /////////////////////////
  322.                         // s'ha canviat la imatge
  323.                         /////////////////////////
  324.                         //$bEnviarAAxess = true;
  325.                         $bEnviarAAxessNomesFoto true;
  326.                     }
  327.                     if ($aComandesLinies->getDocumento() != '')
  328.                     {
  329.                         $enConsumersUpdate->setDocumento($aComandesLinies->getDocumento());
  330.                         ///////////////////////////
  331.                         // s'ha canviat el document
  332.                         ///////////////////////////
  333.                         //$bEnviarAAxess = true;
  334.                     }
  335.                     if ($aComandesLinies->getResident() != '')
  336.                     {
  337.                         $enConsumersUpdate->setResident($aComandesLinies->getResident());
  338.                     }
  339.                     if ($aComandesLinies->getFamiliaNombrosa() != '')
  340.                     {
  341.                         $enConsumersUpdate->setFamiliaNombrosa($aComandesLinies->getFamiliaNombrosa());
  342.                     }
  343.                     $enConsumersUpdate->setModificat(0);
  344.                     $this->em->persist($enConsumersUpdate);
  345.                     $this->em->flush();
  346.                     $con_id $aComandesLinies->getConsumers()->getId();
  347.                     ///////////////////////////////////////////////////////////////////////
  348.                     /// esborrem l'array per que no volem canviar la familia que te a Axess
  349.                     ///////////////////////////////////////////////////////////////////////
  350.                     $aFamiliaDelPagador = array();
  351.                 } else {
  352.                     /////////////////////////
  353.                     // Fem copia dels fitxers
  354.                     /////////////////////////
  355.                     if ($aComandesLinies->getImatge() != '')
  356.                     {
  357.                         $sOrigen $this->sPathUploads "comandeslinies/" $aComandesLinies->getImatge();
  358.                         $sDesti $this->sPathUploads "consumers/" $aComandesLinies->getImatge();
  359.                         if (file_exists($sOrigen)) copy($sOrigen$sDesti);
  360.                     }
  361.                     if ($aComandesLinies->getDocumento() != '')
  362.                     {
  363.                         $sOrigen $this->sPathUploads"comandeslinies/" $aComandesLinies->getDocumento();
  364.                         $sDesti =$this->sPathUploads "consumers/" $aComandesLinies->getDocumento();
  365.                         if (file_exists($sOrigen)) copy($sOrigen$sDesti);
  366.                     }
  367.                     if ($aComandesLinies->getResident() != '')
  368.                     {
  369.                         $sOrigen $this->sPathUploads"comandeslinies/" $aComandesLinies->getResident();
  370.                         $sDesti $this->sPathUploads "consumers/" $aComandesLinies->getResident();
  371.                         if (file_exists($sOrigen)) copy($sOrigen$sDesti);
  372.                     }
  373.                     if ($aComandesLinies->getFamiliaNombrosa() != '')
  374.                     {
  375.                         $sOrigen $this->sPathUploads "comandeslinies/" $aComandesLinies->getFamiliaNombrosa();
  376.                         $sDesti $this->sPathUploads "consumers/" $aComandesLinies->getFamiliaNombrosa();
  377.                         if (file_exists($sOrigen)) copy($sOrigen$sDesti);
  378.                     }
  379.                     $enComandes $this->em->getRepository(Comandes::class)->find($aComandesLinies->getComandes()->getId());
  380.                     /////////////////////////////////////////////////////////////////
  381.                     // Si la comanda s'ha fet abans de logar-se no te el id de client
  382.                     /////////////////////////////////////////////////////////////////
  383.                     if ($enComandes->getConsumers())
  384.                     {
  385.                         $iIdConsumers $enComandes->getConsumers()->getId();
  386.                     } else {
  387.                         $iIdConsumers $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id');
  388.                     }
  389.                     $aParams = array(
  390.                         'nom'               => $aComandesLinies->getNom(),
  391.                         'cognom1'           => $aComandesLinies->getCognom1(),
  392.                         'cognom2'           => $aComandesLinies->getCognom2(),
  393.                         'data_naixement'    => $aComandesLinies->getDataNaixement(),
  394.                         'historic'          => 0
  395.                     );
  396.                     $enConsumersAux $this->em->getRepository(Consumers::class)->findBy($aParams);
  397.                     if ($aComandesLinies->getCognom2() == ''
  398.                         && count($enConsumersAux) == 0)
  399.                     {
  400.                         $aParams = array(   
  401.                             'nom'               => $aComandesLinies->getNom(),
  402.                             'cognom1'           => $aComandesLinies->getCognom1(),
  403.                             'cognom2'           => null,
  404.                             'data_naixement'    => $aComandesLinies->getDataNaixement(),
  405.                             'historic'          => 0
  406.                         );
  407.                         $enConsumersAux $this->em->getRepository(Consumers::class)->findBy($aParams);
  408.                     }
  409.                     ///////////////////////////////////
  410.                     // Si no existeix creem el consumer
  411.                     ///////////////////////////////////
  412.                     if (count($enConsumersAux) == 0)
  413.                     {
  414.                         $enConsumers = new Consumers();
  415.                         $enConsumers->setNom($aComandesLinies->getNom());
  416.                         $enConsumers->setCognom1($aComandesLinies->getCognom1());
  417.                         $enConsumers->setCognom2($aComandesLinies->getCognom2());
  418.                         $enConsumers->setImatge($aComandesLinies->getImatge());
  419.                         $enConsumers->setDocumento($aComandesLinies->getDocumento());
  420.                         $enConsumers->setResident($aComandesLinies->getResident());
  421.                         $enConsumers->setFamiliaNombrosa($aComandesLinies->getFamiliaNombrosa());
  422.                         $enConsumers->setDataNaixement($aComandesLinies->getDataNaixement());
  423.                         $enConsumers->setOrigenEntrada('Alta Entor');
  424.                         $enConsumers->setTipus('Consumer');
  425.                         $this->em->persist($enConsumers);
  426.                         $this->em->flush();
  427.                         $con_id $enConsumers->getId();
  428.                     } else {
  429.                         $con_id $enConsumersAux[0]->getId();
  430.                         $enConsumersUpdate $this->em->getRepository(Consumers::class)->find($con_id);
  431.                         $enConsumersUpdate->setDataNaixement($aComandesLinies->getDataNaixement());
  432.                         $enConsumersUpdate->setImatge($aComandesLinies->getImatge());
  433.                         $enConsumersUpdate->setDocumento($aComandesLinies->getDocumento());
  434.                         $enConsumersUpdate->setOrigenEntrada('Modi Entor');
  435.                         $this->em->persist($enConsumersUpdate);
  436.                         $this->em->flush();
  437.                     }
  438.                     ///////////////////////////////////
  439.                     // El creem a la familia del pagado
  440.                     ///////////////////////////////////
  441.                     $blRes $this->forward('App\Controller\ConsumersHasConsumersController::addFamiliaAction', array(
  442.                         'aValues' => array( 
  443.                             'consumers'         => $iIdConsumers,
  444.                             'consumers_fill'    => $con_id
  445.                     )));
  446.                     //////////////////////////////
  447.                     // creem la seva familia també
  448.                     //////////////////////////////
  449.                     $blRes $this->forward('App\Controller\ConsumersHasConsumersController::addFamiliaAction', array(
  450.                         'aValues' => array( 
  451.                             'consumers'         => $con_id,
  452.                             'consumers_fill'    => $con_id
  453.                     )));
  454.                 }
  455.                 if ((isset($con_id)
  456.                     && $con_id != ''))
  457.                 {
  458.                     /////////////////////
  459.                     // TRACTAMENT A Axess
  460.                     /////////////////////
  461.                     $enConsumers $this->em->getRepository(Consumers::class)->find($con_id);
  462.                     if ($bEnviarAAxess == true)
  463.                     {
  464.                         $aDadesUpdate['iIdEntorno'] = $con_id;
  465.                         $aDadesUpdate['ConsumerIdProj'] = $enConsumers->getCustomerIdProj();
  466.                         $aDadesUpdate['ConsumerIdPos'] = $enConsumers->getCustomerIdPos();
  467.                         $aDadesUpdate['ConsumerIdNum'] = $enConsumers->getCustomerIdNum();
  468.                         ////////////////////
  469.                         // Recuperem la foto
  470.                         ////////////////////
  471.                         $sFoto '';
  472.                         if ($enConsumers->getImatge() != '')
  473.                         {
  474.                             $sFoto $enConsumers->getImatge();
  475.                         }
  476.                         //////////////////////////
  477.                         // ALTA O MODIFICACIÓ A Axess
  478.                         //////////////////////////
  479.                         $aDades = array();
  480.                         $aDades['nom'] = $enConsumers->getNom();
  481.                         $aDades['cognom1'] = $enConsumers->getCognom1();
  482.                         $aDades['cognom2'] = $enConsumers->getCognom2();
  483.                         $clsDataNaixement $enConsumers->getDataNaixement();
  484.                         $sData $clsDataNaixement->format("d/m/Y");
  485.                         $aDades['data_naixement'] = $sData;
  486.                         $aDades['idEntorno'] = $enConsumers->getId();
  487.                         if (!empty($aFamiliaDelPagador))
  488.                         {
  489.                             $aDades['IdFamilia'] = $aFamiliaDelPagador;
  490.                         }
  491.                         $aDades['Foto'] = $sFoto;
  492.                         /////////////////////////////////////////////////////////////////////////////////////////////////////////
  493.                         /// No controlem dni ni email per que son abonats i no pagadors, per tant no tenen informat aquests camps
  494.                         /////////////////////////////////////////////////////////////////////////////////////////////////////////
  495.                         $jsonResposta $this->forward('App\Controller\WebServicesController::altaModificacioConsumersAxessAction', array(
  496.                             'aDades'            => $aDades,
  497.                             'aNoValidacionsDe'  => array('DniClientExists''EmailClientExists'),
  498.                             'aDadesUpdate'      => $aDadesUpdate
  499.                         ));
  500.                         //$objWebServicesController = new WebServicesController($this->em,$this->requestStack,$this->params);
  501.                         //$objWebServicesController->setEnviroments($this->getParameter('kernel.environment'));
  502.                         //$jsonResposta = $objWebServicesController->altaModificacioConsumersAxessAction($aDades,array('DniClientExists', 'EmailClientExists'),$aDadesUpdate);
  503.                         $aResposta json_decode($jsonResposta->getContent(), true);
  504.                         if (!$aResposta['error']['AltaModificacioAxess']
  505.                             || !$aResposta['error']['ConnexioAxess'])
  506.                         {
  507.                             $blAltaModificacioAxess false;
  508.                             //$this->session->getFlashBag()->add('error', $this->translator->trans("Hi ha un problema amb les seves dades, reviseu les dades dels abonats (data de naixement, Foto, etc...), si l'error persisteix si us plau poseu-vos en contacte amb nosaltres"));
  509.                             $this->session->getFlashBag()->add('error'$this->translator->trans("Hi ha un problema amb les seves dades, reviseu les dades dels abonats (data de naixement, Foto, etc...), si l'error persisteix si us plau poseu-vos en contacte amb nosaltres"));
  510.                             ///////////////////////////////
  511.                             // TODO : Com gestionem l'error
  512.                             ///////////////////////////////
  513.                             $sMissatge 'ATENCIÓ HI HA HAGUT UN ERROR.<br>';
  514.                             $sMissatge .= print_r($aRespostatrue);
  515.                             $sMissatge .= print_r($aDadestrue);
  516.                             $this->correuController->EnviarAction(array(
  517.                                 'sMissatge' => $sMissatge,
  518.                                 'sFrom'     => $this->params->get('EMAIL_RESERVAS'),
  519.                                 'sTo'       => $this->params->get('EMAIL_RESERVAS'),
  520.                                 'sCc'       => $this->params->get('EMAIL_ERRORES'),
  521.                                 'sSubjecte' => "Consumer a comanda de Registre Masella Error (AbonamentsConstroller/comprovarDades)"
  522.                             ));
  523.                         } else {
  524.                             $enConsumersUpdate $this->em->getRepository(Consumers::class)->find($con_id);
  525.                             //dump($aResposta['aTotsCampsPerson']);
  526.                             //die('stop');
  527.                             if (!empty($aResposta['aTotsCampsPerson']))
  528.                             {
  529.                                 $enConsumersUpdate->setDireccio($aResposta['aTotsCampsPerson']['SZSTREET']);
  530.                                 $enConsumersUpdate->setCp($aResposta['aTotsCampsPerson']['SZZIPCODE']);
  531.                                 $enConsumersUpdate->setPoblacio($aResposta['aTotsCampsPerson']['SZCITY']);
  532.                                 $enConsumersUpdate->setTelefon($aResposta['aTotsCampsPerson']['SZPHONE']);
  533.                                 $enConsumersUpdate->setEmail($aResposta['aTotsCampsPerson']['SZEMAIL']);
  534.                                 $enConsumersUpdate->setDni($aResposta['aTotsCampsPerson']['SZTITLE']);
  535.                             }
  536.                             $enConsumersUpdate->setCustomerIdProj($aResposta['idAxess']['ConsumerIdProj']);
  537.                             $enConsumersUpdate->setCustomerIdPos($aResposta['idAxess']['ConsumerIdPos']);
  538.                             $enConsumersUpdate->setCustomerIdNum($aResposta['idAxess']['ConsumerIdNum']);
  539.                             $enConsumersUpdate->setResposta4i($aResposta['missatgeAxess']);
  540.                             $this->em->persist($enConsumersUpdate);
  541.                             $this->em->flush();
  542.                         }
  543.                         ///////////////////////////////////////////////
  544.                         // Actualitzem id d'consumer a la comandesLinies
  545.                         ///////////////////////////////////////////////
  546.                         $enComandesLiniesUpdate $this->em->getRepository(ComandesLinies::class)->find($aComandesLinies->getId());
  547.                         $enComandesLiniesUpdate->setConsumers($enConsumers);
  548.                         $this->em->persist($enComandesLiniesUpdate);
  549.                         $this->em->flush();
  550.                     }
  551.                     /////////////////////////////////////////////////////////////////
  552.                     /// Només s'ha actualitzat la foto, per tant només enviem la foto
  553.                     /////////////////////////////////////////////////////////////////
  554.                     /// AQUEST ANY ENVIEM SEMPRE LA FOTO A AXESS!!!!!!!!!!
  555.                     /////////////////////////////////////////////////////////////////
  556.                     $bEnviarAAxessNomesFoto true;
  557.                     if ($bEnviarAAxessNomesFoto)
  558.                     {
  559.                         $aElements['Foto'] = $enConsumers->getImatge();
  560.                         $aElements['ConsumerIdProj'] = $enConsumers->getCustomerIdProj();
  561.                         $aElements['ConsumerIdPos'] = $enConsumers->getCustomerIdPos();
  562.                         $aElements['ConsumerIdNum'] = $enConsumers->getCustomerIdNum();
  563.                         //$jsonResposta = $this->createFotoAxess($aElements);
  564.                         $jsonResposta $this->forward('App\Controller\WebServicesController::createFotoAxessAction', array(
  565.                             'aElements'   => $aElements
  566.                         ));
  567.                         //$objWebServicesController = new WebServicesController($this->em,$this->requestStack,$this->params);
  568.                         //$objWebServicesController->setEnviroments($this->getParameter('kernel.environment'));
  569.                         //$jsonResposta = $objWebServicesController->createFotoAxessAction($aElements);
  570.                         $aResposta json_decode($jsonResposta->getContent(), true);
  571.                         if ($aResposta['error'] != 0)
  572.                         {
  573.                            $this->session->getFlashBag()->add('error'$this->translator->trans("Hi ha un problema amb les fotos, si us plau poseu-vos en contacte amb nosaltres"));
  574.                             ///////////////////////////////
  575.                             // TODO : Com gestionem l'error
  576.                             ///////////////////////////////
  577.                             $sMissatge 'ATENCIÓ HI HA HAGUT UN ERROR.<br>';
  578.                             $sMissatge .= print_r($aRespostatrue);
  579.                             $sMissatge .= print_r($aElementstrue);
  580.                             $this->correuController->EnviarAction(array(
  581.                                 'sMissatge' => $sMissatge,
  582.                                 'sFrom'     => $this->params->get('EMAIL_RESERVAS'),
  583.                                 'sTo'       => $this->params->get('EMAIL_RESERVAS'),
  584.                                 'sCc'       => $this->params->get('EMAIL_ERRORES'),
  585.                                 'sSubjecte' => "Foto consumer a comanda de Registre Masella Error (AbonamentsConstroller/comprovarDades)"
  586.                             ));
  587.                         }
  588.                     }
  589.                 }
  590.             }
  591.         }
  592.         //////////////////////////////////////////////////
  593.         // Temporada 24/25
  594.         // S'ha de fer un 20% de descompte als que a la temporada anterior van comprar alp 1500
  595.         // Comprovem si hi ha algun comsumer amb descompte
  596.         //////////////////////////////////////////////////
  597. //        foreach ($objComandesLinies as $key => $val)
  598. //        {
  599. //            // Si té descompte marcat però no té cap descompte entrat manualment
  600. //            if ($val->getConsumers()->getDescompte() == 1
  601. //                && ($val->getDescompte() == ''
  602. //                    || $val->getDescompte() == 0))
  603. //            {
  604. //                // S'ha de mirar si és alp2500, a la importació tenim un camp que ens ho indica
  605. //                if ($val->getAbonaments()->getAlp2500() == 1)
  606. //                {
  607. //                    //echo '<br>' . $val->getAbonaments()->getTarifaId() . '<br>';
  608. //                    //echo $val->getConsumers()->getCognom1() . ' ' . $val->getConsumers()->getCognom2() . ' ' . $val->getConsumers()->getNom() . '<br>';
  609. //                    //echo $val->getPreu() . '<br>';
  610. //                    $iDescompte = 0;
  611. //                    if ($val->getPreu() > 0)
  612. //                    {
  613. //                        $iDescompte = ($val->getPreu() / 100) * 20;
  614. //                    }
  615. //                    // Si compleix els requisits s'ha de guardar el descompte a la línia amb un 20% de descompte
  616. //                    $objComandesLiniesUpdateDescompte = $this->em->getRepository(ComandesLinies::class)->find($val->getId());
  617. //                    $objComandesLiniesUpdateDescompte->setDescompte($iDescompte);
  618. //                    $objComandesLiniesUpdateDescompte->setTipusDescompte("desc2425");
  619. //                    $this->em->persist($objComandesLiniesUpdateDescompte);
  620. //                    $this->em->flush();
  621. //                }
  622. //            }
  623. //        }
  624.         //////////////////////////////////////////////////////////
  625.         // Comprovem si hi ha algun descompte: temporada 2020-2021
  626.         //////////////////////////////////////////////////////////
  627.         $bDescompte false;
  628.         foreach ($objComandesLinies as $key => $val)
  629.         {
  630.             if ($val->getDescompte() != '' 
  631.                     && $val->getDescompte() > 0)
  632.             {
  633.                 $bDescompte true;
  634.                 break;
  635.             }
  636.         }
  637.         /////////////////////////////////////////////
  638.         /// Actualitzem consumer i wtp als suplements
  639.         /////////////////////////////////////////////
  640.         $aParam = array(
  641.             'comandes'  => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'),
  642.             'suplement' => 1
  643.         );
  644.         $objComandesLiniesSuplement $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
  645.         if ($objComandesLiniesSuplement)
  646.         {
  647.             foreach ($objComandesLiniesSuplement as $key => $objLinia)
  648.             {
  649.                 //dump($objLinia->getRelacionatComandesLinies()->getConsumers());
  650.                 $objComandesLiniesSuplementUpdate $this->em->getRepository(ComandesLinies::class)->find($objLinia->getId());
  651.                 $objComandesLiniesSuplementUpdate->setConsumers($objLinia->getRelacionatComandesLinies()->getConsumers());
  652.                 $objComandesLiniesSuplementUpdate->setXipIntroduitClient($objLinia->getRelacionatComandesLinies()->getXipIntroduitClient());
  653.                 $this->em->persist($objComandesLiniesSuplementUpdate);
  654.                 $this->em->flush();
  655.             }
  656.         }
  657.         ///////////////////////////////////////////////////////
  658.         // Recuperem les linies de la comanda que són suplement
  659.         ///////////////////////////////////////////////////////
  660.         $aParam = array(
  661.             'comandes'  => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'),
  662.             'suplement' => 1
  663.         );
  664.         
  665.         $objComandesLiniesSuplement $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
  666.         $aSuplements = array();
  667.         foreach ($objComandesLiniesSuplement as $key => $val)
  668.         {
  669.             $aSuplements[] = $val->getRelacionatComandesLinies()->getId() . '-' $val->getId();
  670.         }
  671.         $objGeneral $this->em->getRepository(General::class)->findBy(array('id' => 1));
  672.         $total_cistella $this->_total_cistella();
  673.         /////////////////////////////////////////
  674.         // Si hi ha error a l'inserció del client
  675.         /////////////////////////////////////////
  676.         $blErrorInsertConsumer false;
  677.         
  678.         if ($aRequest->get('error') == 1$blErrorInsertConsumer true;
  679.         
  680.         $aPost $aRequest->all();
  681.         
  682.         $iRgpd 0;
  683.         $iCgat 0;
  684.         $iNewsletter 0;
  685.         ///////////////////////////////////////
  686.         // si ve acceptada de la plana anterior
  687.         ///////////////////////////////////////
  688.         if ($peticion->request->get('acepto'
  689.                 && $peticion->request->get('acepto') == 1)
  690.         {
  691.             $iRgpd 1;
  692.             // Ara només tenim un check
  693.             $iCgat 1;
  694.         }
  695.         ///////////////////////////////////////
  696.         // si ve acceptada de la plana anterior
  697.         ///////////////////////////////////////
  698. //        if ($peticion->request->get('acepto_cgat')
  699. //                && $peticion->request->get('acepto_cgat') == 1)
  700. //        {
  701. //            $iCgat = 1;
  702. //        }
  703.         
  704.         $sessConsumer_id $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id');
  705.         if ($sessConsumer_id)
  706.         {
  707.             $enConsumers $this->em->getRepository(Consumers::class)->find($sessConsumer_id);
  708.             $aPost['nom'] = $enConsumers->getNom();
  709.             $aPost['cognom1'] = $enConsumers->getCognom1();
  710.             $aPost['cognom2'] = $enConsumers->getCognom2();
  711.             $aPost['direccio'] = $enConsumers->getDireccio();
  712.             $aPost['cp'] = $enConsumers->getCp();
  713.             $aPost['poblacio'] = $enConsumers->getPoblacio();
  714.             $aPost['email'] = $enConsumers->getEmail();
  715.             $aPost['telefon'] = $enConsumers->getTelefon();
  716.             if ($enConsumers->getDataNaixement() != '')
  717.             {
  718.                 $aPost['datanaixement'] = date_format($enConsumers->getDataNaixement(), 'Y-m-d');
  719.             }
  720.             $aPost['dni'] = $enConsumers->getDni();
  721.             
  722.             //if ($aRequest->has('backend') 
  723.             //    || $aRequest2->has('backend'))
  724.             //{
  725.                 $aPost['nom_empresa'] = $enConsumers->getNomEmpresa();
  726.                 $aPost['pai_id'] = '';
  727.                 if ($enConsumers->getPaiId()) 
  728.                 {
  729.                     $aPost['pai_id'] = $enConsumers->getPaiId()->getId();
  730.                 }
  731.                 $aPost['nif_empresa'] = $enConsumers->getNifEmpresa();
  732.                 $aPost['direccio_empresa'] = $enConsumers->getDireccioEmpresa();
  733.                 $aPost['cp_empresa'] = $enConsumers->getCpEmpresa();
  734.                 $aPost['poblacio_empresa'] = $enConsumers->getPoblacioEmpresa();
  735.                 $aPost['provincia_empresa'] = $enConsumers->getProvinciaEmpresa();
  736.             //}
  737.             ///////
  738.             // Rgpd
  739.             ///////    
  740.             $enRgpd $this->em->getRepository(Rgpd::class)->findBy(
  741.                 array(
  742.                     'consumers' => $sessConsumer_id,
  743.                     'tipus'     => 'Clients'
  744.                 ),
  745.                 array(
  746.                     'id'    => 'DESC'
  747.                 )
  748.                 );
  749.             if ($enRgpd)
  750.             {
  751.                 if ($enRgpd[0]->getRgpd() == 1)
  752.                 {
  753.                     $iRgpd 1;
  754.                 }
  755.                 if ($enRgpd[0]->getCgat() == 1)
  756.                 {
  757.                     $iCgat 1;
  758.                 }
  759.                 if ($enRgpd[0]->getNewsletter() == 1)
  760.                 {
  761.                     $iNewsletter 1;
  762.                 }
  763.             } else {
  764.                 $enComandes $this->em->getRepository(Comandes::class)->findBy(array(   
  765.                         'consumers'     => $sessConsumer_id,
  766.                         'estat'         => '1'
  767.                 ));
  768.                 if ($enComandes)
  769.                 {
  770.                     $iRgpd 1;
  771.                 }
  772.             }
  773.             
  774.             if ($enConsumers->getUsuari()
  775.                     && $enConsumers->getUsuari()->getCodi() != '')
  776.             {
  777.                 $aPost['tipus_client'] = $enConsumers->getUsuari()->getCodi();
  778.             } else {
  779.                 $aPost['tipus_client'] = '';
  780.             }
  781.         }
  782.         $aPaisos $this->em->getRepository(Paisos::class)->findAll();
  783.         if ($aRequest->has('backend'
  784.                 || $aRequest2->has('backend'))
  785.         {
  786.             ///////////////////////////////////////////////////////////////
  787.             // Recuperem els valors de la comanda, per la forma de pagament
  788.             ///////////////////////////////////////////////////////////////
  789.             $objComandes $this->em->getRepository(Comandes::class)->findBy(array('id' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')));
  790.             $aPost['forma_pagament'] = $objComandes[0]->getFormaPagament();
  791.             $aPost['codi_descompte'] = $objComandes[0]->getCodiDescompte();
  792.             $sLlocVenda $objComandes[0]->getLlocVenda();
  793.             ////////////////////////////
  794.             // Insertem informació a log
  795.             ////////////////////////////
  796.             $this->objUtil->logAction($peticion$this->getUser());
  797.             //$objWebServicesCompany = new WebServicesCompanyController();
  798.             /////////////////////////////////////////////////////////////////////////////////////
  799.             /// Quan la cridem com una clase no te acces al getParameter, així li passem el valor
  800.             /////////////////////////////////////////////////////////////////////////////////////
  801.             //$objWebServicesCompany->setEnviroments($this->getParameter('kernel.environment'));
  802.             //$objWebServicesCompany->setObjContainer($this);
  803.             //$objWebServicesCompany->setObjGetMailer($this->get('mailer'));
  804.             //$aResposta = $objWebServicesCompany->get_company_estadistica();
  805.             $aCompanyEstadistica = array();
  806.             //if ($aResposta['iError'] == 0
  807.             //    && $aResposta['blExists'] === true)
  808.             //{
  809.             //    $aCompanyEstadistica = $aResposta['companies'];
  810.             //}
  811.             return $this->render('Backend\Formulario\comprovar_dades.html.twig', array( 
  812.                 'objComandesLinies'             => $objComandesLinies,
  813.                 'objComandesLiniesSuplement'    => $objComandesLiniesSuplement,
  814.                 'fiOferta'                      => $objGeneral[0]->getDataFiOferta(),
  815.                 'aSuplements'                   => $aSuplements,
  816.                 'total_cistella'                => $total_cistella,
  817.                 'blErrorInsertConsumer'         => $blErrorInsertConsumer,
  818.                 'aPost'                         => $aPost,
  819.                 'sessConsumer_id'               => $sessConsumer_id,
  820.                 'enGeneral'                     => $this->enGeneral,
  821.                 'iRgpd'                         => $iRgpd,
  822.                 'iCgat'                         => $iCgat,
  823.                 'iNewsletter'                   => $iNewsletter,
  824.                 'club_esqui'                    =>$this->session->get('club_esqui'),
  825.                 'bDescompte'                    => $bDescompte,
  826.                 'blConnexioAxess'               => $blConnexioAxess,
  827.                 'blAltaModificacioAxess'        => $blAltaModificacioAxess,
  828.                 'aPaisos'                       => $aPaisos,
  829.                 'aCompanyEstadistica'           => $aCompanyEstadistica,
  830.                 'util'                          => $this->objUtil,
  831.                 'sLlocVenda'                    => $sLlocVenda
  832.             ));
  833.         } else {
  834.             return $this->render('comprovar_dades.html.twig', array( 
  835.                 'objComandesLinies'             => $objComandesLinies,
  836.                 'objComandesLiniesSuplement'    => $objComandesLiniesSuplement,
  837.                 'fiOferta'                      => $objGeneral[0]->getDataFiOferta(),
  838.                 'aSuplements'                   => $aSuplements,
  839.                 'total_cistella'                => $total_cistella,
  840.                 'blErrorInsertConsumer'         => $blErrorInsertConsumer,
  841.                 'aPost'                         => $aPost,
  842.                 'sessConsumer_id'               => $sessConsumer_id,
  843.                 "enSidebar"                     => $this->enSidebar[0],
  844.                 'enGeneral'                     => $this->enGeneral,
  845.                 'enSponsors'                    => $this->enSponsors,
  846.                 'iRgpd'                         => $iRgpd,
  847.                 'iCgat'                         => $iCgat,
  848.                 'iNewsletter'                   => $iNewsletter,
  849.                 'bDescompte'                    => $bDescompte,
  850.                 'blConnexioAxess'               => $blConnexioAxess,
  851.                 'blAltaModificacioAxess'        => $blAltaModificacioAxess,
  852.                 'aPaisos'                       => $aPaisos,
  853.                 'util'                          => $this->objUtil
  854.             ));
  855.         }
  856.     }
  857.     public function temporadaAction(Request $peticion)
  858.     {
  859.         $aGeneral $this->enGeneral[0];
  860.         if (!$aGeneral->getComprarVisible())
  861.         {
  862.             // Obtenir la direcció IP del client
  863.             $clientIp $peticion->getClientIp();
  864.             if ($clientIp != '195.77.190.2'
  865.                 && $clientIp != '194.36.123.130'
  866.                 && $clientIp != '195.235.152.100'
  867.                 && $clientIp != '185.254.157.22'
  868.             )
  869.             {
  870.                 return $this->redirect($this->generateUrl('home'));
  871.             }
  872.         }
  873.         return $this->render('abonaments_temporada.html.twig', array(
  874.             'sessConsumer_id'   => $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'),
  875.             'enSidebar'         => $this->enSidebar[0],
  876.             'enGeneral'         => $this->enGeneral,
  877.             'enSponsors'        => $this->enSponsors,
  878.             'util'              => $this->objUtil
  879.         ));
  880.     }    
  881.     
  882.     public function classesAction(Request $peticion)
  883.     {
  884.         $aGeneral $this->enGeneral[0];
  885.         if (!$aGeneral->getBotigaClasses())
  886.         {
  887.             // Obtenir la direcció IP del client
  888.             $clientIp $peticion->getClientIp();
  889.             if ($clientIp != '195.77.190.2'
  890.                 && $clientIp != '194.36.123.130'
  891.                 && $clientIp != '195.235.152.100'
  892.             )
  893.             {
  894.                 return $this->redirect($this->generateUrl('home'));
  895.             }
  896.         }
  897.         return $this->render('abonaments_classes.html.twig', array(  
  898.             'sessConsumer_id'   => $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'),
  899.             'enSidebar'         => $this->enSidebar[0],
  900.             'enGeneral'         => $this->enGeneral,
  901.             'enSponsors'        => $this->enSponsors,
  902.             'util'              => $this->objUtil
  903.         ));
  904.     }        
  905.     public function botigaAction(Request $peticion)
  906.     {
  907.         $aGeneral $this->enGeneral[0];
  908.         if (!$aGeneral->getBotigaLloguer())
  909.         {
  910.             // Obtenir la direcció IP del client
  911.            $clientIp $peticion->getClientIp();
  912.            if ($clientIp != '195.77.190.2'
  913.                 && $clientIp != '194.36.123.130'
  914.                 && $clientIp != '195.235.152.100'
  915.             )
  916.             {
  917.                 return $this->redirect($this->generateUrl('home'));
  918.             }
  919.         }
  920.         return $this->render('abonaments_botiga.html.twig', array(
  921.             'sessConsumer_id'   => $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'),
  922.             'enSidebar'         => $this->enSidebar[0],
  923.             'enGeneral'         => $this->enGeneral,
  924.             'enSponsors'        => $this->enSponsors,
  925.             'util'              => $this->objUtil
  926.         ));
  927.     } 
  928.     
  929.     public function familiarAction(Request $peticion)
  930.     {
  931.         $aRequest2 $peticion->attributes;
  932.         $aRequest $peticion->query;
  933.         
  934.         $repository $this->em->getRepository(Abonaments::class);
  935.         
  936.         $aParam = array(    'actiu'         => 1,
  937.                             'familiar'      => 1,
  938.                             'club_esqui'    => 0
  939.                             );
  940.         $aParam['estacio'] = 'MAS';
  941.         if (!$aRequest->has('backend')
  942.             &&
  943.             !$aRequest2->has('backend'))
  944.         {
  945.             $aParam['nomes_tablet'] = ;
  946.         } else {
  947.             //$aParam['per_id'] = $this->getUser()->getPerfils();
  948.             switch ($this->getUser()->getPerfils()->getId())
  949.             {
  950.                 case 1// Administrador
  951.                 case 7// superadmin
  952.                     $aParam['admin'] = 1;
  953.                     break;
  954.                 case 10// Abonaments-oficines-fires
  955.                     $aParam['fires_oficina'] = 1;
  956.                     break;
  957.                 case 14// Club d'Esqui
  958.                     $aParam['per_id'] = $this->getUser()->getPerfils();
  959.                     break;
  960.                 default:
  961.                     // En principi tots els abonaments han de tenir abo_admin a 1 o 0, això ho fem per que si no es un dels perfils
  962.                     // anterior no volem que surti cap abonament
  963.                     $aParam['admin'] = 2;
  964.                     break;
  965.             }
  966.             // si el pulsa el botó d'abonament de familia nombrosa per clubs mostra les families nombroses de club
  967.             if (($aRequest->has('abonamentClub')
  968.                 && $aRequest->get('abonamentClub') == 1) ||
  969.                 ($aRequest2->has('abonamentClub')
  970.                 && $aRequest2->get('abonamentClub') == 1)
  971.             )
  972.             {
  973.                 $aParam['club_esqui'] = 1;
  974.             }
  975.         }
  976.         if ($this->session->get('club_esqui')
  977.             || $peticion->getSession()->get('sessLloc_venda') =='ClubEsqui')
  978.         {
  979.             $aParam['club_esqui'] = 1;
  980.         }
  981.         $objAbonaments_mas $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
  982.         $aParam2['desglossat'] = true;
  983.         $objAbonaments_desglossat_mas $this->em->getRepository(Abonaments::class)->getAbonamnets(array_merge($aParam$aParam2) );
  984.         $aAbonaments_desglossat_mas = array();
  985.         if ($objAbonaments_desglossat_mas)
  986.         {
  987.             foreach ($objAbonaments_desglossat_mas as $key => $val)
  988.             {
  989.                 $aAbonaments_desglossat_mas[$val['ticket_type_id']][$val['pool_id']][$val['tarifa_id']][$val['person_type_general_id']]['preu'] = $val['preu'];
  990.                 $aAbonaments_desglossat_mas[$val['ticket_type_id']][$val['pool_id']][$val['tarifa_id']][$val['person_type_general_id']]['person_type_id'] = $val['person_type_id'];
  991.                 $aAbonaments_desglossat_mas[$val['ticket_type_id']][$val['pool_id']][$val['tarifa_id']][$val['person_type_general_id']]['id'] = $val['id'];
  992.             }
  993.         }
  994.         //dump($aAbonaments_desglossat_mas);
  995.         //dump($objAbonaments_desglossat_mas);
  996.         //die('stop');
  997.         $aParam['estacio'] = 'ALP';
  998.         $objAbonaments_alp $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
  999.         $aParam2['desglossat'] = true;
  1000.         $objAbonaments_desglossat_alp $this->em->getRepository(Abonaments::class)->getAbonamnets(array_merge($aParam$aParam2));
  1001.         $aAbonaments_desglossat_alp = array();
  1002.         if ($objAbonaments_desglossat_alp)
  1003.         {
  1004.             foreach ($objAbonaments_desglossat_alp as $key => $val)
  1005.             {
  1006.                 $aAbonaments_desglossat_alp[$val['ticket_type_id']][$val['pool_id']][$val['tarifa_id']][$val['person_type_general_id']]['preu'] = $val['preu'];
  1007.                 $aAbonaments_desglossat_alp[$val['ticket_type_id']][$val['pool_id']][$val['tarifa_id']][$val['person_type_general_id']]['person_type_id'] = $val['person_type_id'];
  1008.                 $aAbonaments_desglossat_alp[$val['ticket_type_id']][$val['pool_id']][$val['tarifa_id']][$val['person_type_general_id']]['id'] = $val['id'];
  1009.             }
  1010.         }
  1011.         
  1012.         $objGeneral $this->em->getRepository(General::class)->findBy(array('id' => 1));
  1013.         $blCistella false;
  1014.         if ($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')) $blCistella true;
  1015.         if ($aRequest->has('backend'
  1016.                 || $aRequest2->has('backend'))
  1017.         {
  1018.             /*
  1019.             * Insertem informació a log
  1020.             */
  1021.             $this->objUtil->logAction($peticion$this->getUser());
  1022.             
  1023.             return $this->render('Backend\Formulario\abonaments_familiar.html.twig', array(   
  1024.                 'objAbonaments_mas'             => $objAbonaments_mas,
  1025.                 'aAbonaments_desglossat_mas'    => $aAbonaments_desglossat_mas,
  1026.                 'objAbonaments_alp'             => $objAbonaments_alp,
  1027.                 'aAbonaments_desglossat_alp'    => $aAbonaments_desglossat_alp,
  1028.                 'fiOferta'                      => $objGeneral[0]->getDataFiOferta(),
  1029.                 'blCistella'                    => $blCistella,
  1030.                 'util'                          => $this->objUtil
  1031.             ));
  1032.         } else {
  1033.             return $this->render('abonaments_familiar.html.twig', array(     
  1034.                 'objAbonaments_mas'             => $objAbonaments_mas,
  1035.                 'aAbonaments_desglossat_mas'    => $aAbonaments_desglossat_mas,
  1036.                 'objAbonaments_alp'             => $objAbonaments_alp,
  1037.                 'aAbonaments_desglossat_alp'    => $aAbonaments_desglossat_alp,
  1038.                 'fiOferta'                      => $objGeneral[0]->getDataFiOferta(),
  1039.                 'blCistella'                    => $blCistella,
  1040.                 'enSidebar'                     => $this->enSidebar[0],
  1041.                 'enGeneral'                     => $this->enGeneral,
  1042.                 'enSponsors'                    => $this->enSponsors,
  1043.                 'util'                          => $this->objUtil
  1044.             ));
  1045.         }
  1046.     }      
  1047.     
  1048.     public function tarifesAction(Request $peticion)
  1049.     {
  1050.         $aRequest $peticion->request;
  1051.         $iBackoffice = ($aRequest->has('iBackoffice')?$aRequest->get('iBackoffice'):0);
  1052.         $sQuery "SELECT p"
  1053.             " FROM App:Abonaments p "
  1054.             " WHERE p.ticket_type_id =:ticket_type_id "
  1055.             " AND p.pool_id =:pool_id "
  1056.             " AND p.tarifa_id =:tarifa_id "
  1057.             " AND p.data_inici <=:data_inici "
  1058.             " AND p.data_fi >=:data_fi "
  1059.             " AND p.actiu =:actiu "
  1060.             " ORDER BY p.person_type_general_id ASC"
  1061.         ;
  1062.         $aParamAux = array( ":ticket_type_id"   => $aRequest->get('ticket_type_id'),
  1063.                             ":pool_id"          => $aRequest->get('pool_id'),
  1064.                             ":tarifa_id"        => $aRequest->get('tarifa_id'),
  1065.                             ":data_inici"       => date("Y-m-d"),
  1066.                             ":data_fi"          => date("Y-m-d"),
  1067.                             ":actiu"            => 1,
  1068.         );
  1069.         $objAbonaments $this->em->createQuery($sQuery)->setParameters($aParamAux)->getResult();
  1070. /*
  1071.         $aParam = array('ticket_type_id'=> $aRequest->get('ticket_type_id'),
  1072.                         'pool_id'       => $aRequest->get('pool_id'));
  1073.         $objAbonaments = $this->em->getRepository(Abonaments::class)->findBy($aParam);
  1074.         */
  1075.         $objGeneral $this->em->getRepository(General::class)->findBy(array('id' => 1));
  1076.         
  1077.         //dump ($objAbonaments[0]);
  1078.         $fiOferta $objGeneral[0]->getDataFiOferta();
  1079.         if ($iBackoffice == "1")
  1080.         {
  1081.             $fiOferta $objGeneral[0]->getDataFiOfertaBackoffice();
  1082.         }
  1083.         return $this->render('inc_tarifes_persones.html.twig', array(    
  1084.             'objAbonaments' => $objAbonaments,
  1085.             'fiOferta'      => $fiOferta,
  1086.             'util'          => $this->objUtil
  1087.         ));
  1088.     }
  1089.     public function create_comandaAction($iFromBackend)
  1090.     {
  1091.         return new response($this->create_comanda($iFromBackend));
  1092.     }
  1093.     
  1094.     public function create_comanda($iFromBackend)
  1095.     {
  1096.         ///////////////////////////////////
  1097.         // Comprovem si existeix la sessió
  1098.         // Si no existeix creem la comanda
  1099.         ///////////////////////////////////
  1100.         if (!$this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'))
  1101.         {    
  1102.             $enComandes = new Comandes();
  1103.             if ($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'))
  1104.             {
  1105.                 ////////////////////////////////////////////////////////
  1106.                 // Si el client està logat ja el vinculem amb la comanda
  1107.                 ////////////////////////////////////////////////////////
  1108.                 $enConsumers $this->em->getRepository(Consumers::class)->find($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'));
  1109.                 $enComandes->setConsumers($enConsumers);
  1110.             } else {
  1111.                 $enComandes->setConsumers(NULL);
  1112.             }
  1113.             $enComandes->setEstat(0);
  1114.             //////////////////////////////////////////
  1115.             // Això si vens del formulari de la tablet
  1116.             //////////////////////////////////////////
  1117.             if ($iFromBackend == 
  1118.                     && $this->requestStack->getCurrentRequest()->getSession()->has('sessLloc_venda'))
  1119.             {
  1120.                 $enComandes->setLlocVenda($this->requestStack->getCurrentRequest()->getSession()->get('sessLloc_venda'));
  1121.             } else {
  1122.                 $this->requestStack->getCurrentRequest()->getSession()->set('sessLloc_venda''Web');
  1123.                 $enComandes->setLlocVenda('Web');
  1124.             }
  1125.             if ($iFromBackend == 1)
  1126.             {
  1127.                 if ($this->session->get('club_esqui') == 1)
  1128.                 {
  1129.                     ///////////////////////////////////////
  1130.                     // Si és un club el posser a la comanda
  1131.                     ///////////////////////////////////////
  1132.                     $enUsuari $this->em->getRepository(Usuari::class)->find($this->getUser()->getId());
  1133.                     $enComandes->setUsuari($enUsuari);
  1134.                 } else {
  1135.                     ///////////////////////////////////////////////////////////////////////////////////////////////
  1136.                     /// Si el consumer comprador és el comprador vinculat al club s'ha d'enviar a la caixa de clubs
  1137.                     ///////////////////////////////////////////////////////////////////////////////////////////////
  1138.                     if (isset($enConsumers)
  1139.                         && !is_null($enConsumers->getUsuari())
  1140.                         && $enConsumers->getUsuari()->getClubEsqui() == 1)
  1141.                     {
  1142.                         $enComandes->setUsuari($enConsumers->getUsuari());
  1143.                         $enComandes->setLlocVenda("ClubEsqui");
  1144.                         $enComandes->setFormaPagament("Credit");
  1145.                     }
  1146.                 }
  1147.             }
  1148.             ///////////////////////////////////////////
  1149.             // Comprovem si ve del fomulari del backend
  1150.             ///////////////////////////////////////////
  1151.             if ($iFromBackend == 1)
  1152.             {
  1153.                 /*
  1154.                 * Insertem informació a log
  1155.                 */
  1156.                 $this->objUtil->logAction($this->requestStack->getCurrentRequest(), $this->getUser());
  1157.             }
  1158.             $this->em->persist($enComandes);
  1159.             $this->em->flush();
  1160.             $id $enComandes->getId();
  1161.             /////////////////////////
  1162.             // Grabem el localitzador
  1163.             /////////////////////////
  1164.             //$enComandes->setLocalitzador(date('my') . $id);
  1165.             $enComandes->setLocalitzador($this->objUtil->createLocalitzador($id));
  1166.             $this->em->persist($enComandes);
  1167.             $this->em->flush();
  1168.             $this->requestStack->getCurrentRequest()->getSession()->set('sessCol_id'$id);
  1169.         }
  1170.         return $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id');
  1171.     }
  1172.     public function insert_comandes_liniesAction(Request $peticion)
  1173.     {
  1174.         $aRequest $peticion->request;
  1175.         /////////////////////////////
  1176.         // Mirem data de fi d'oferta
  1177.         /////////////////////////////
  1178.         $blOferta false;
  1179.         $objGeneral $this->em->getRepository(General::class)->findBy(array('id' => 1));
  1180.         /////////////////////////////////////////////////////////////////////////////////////////
  1181.         // Comprovem si ve del fomulari del backend ja que tenen una data de fi d'oferta diferent
  1182.         /////////////////////////////////////////////////////////////////////////////////////////
  1183.         if ($aRequest->has('backend'))
  1184.         {
  1185.             if ($objGeneral[0]->getDataFiOfertaBackoffice()->format('Y-m-d') >= date("Y-m-d")) $blOferta true;
  1186.         } else {
  1187.             if ($objGeneral[0]->getDataFiOferta()->format('Y-m-d') >= date("Y-m-d")) $blOferta true;
  1188.         }
  1189.         $iFromBackend 0;
  1190.         if ($aRequest->has('backend')) $iFromBackend 1;
  1191.         ///////////////////////////////
  1192.         // Recuperem d'id de la comanda
  1193.         ///////////////////////////////
  1194.         $iComanda $this->create_comanda($iFromBackend);
  1195.         ////////////////////////////////////
  1196.         // Recuperem les dades de la comanda
  1197.         ////////////////////////////////////
  1198.         $aParam = array('id' => $iComanda);
  1199.         $enComandes $this->em->getRepository(Comandes::class)->findBy($aParam);
  1200.         if ($aRequest->has('abonament'))
  1201.         {
  1202.             /////////////////////////////////////
  1203.             // Recuperem les dades de l'abonament
  1204.             /////////////////////////////////////
  1205.             $aParam = array('id'                => $aRequest->all('abonament')[0],
  1206.                             'actiu'             => 1
  1207.                             );
  1208.             $enAbonaments $this->em->getRepository(Abonaments::class)->findOneBy($aParam);
  1209.             foreach ($this->aTipusAbonament as $key => $val)
  1210.             {
  1211.                 if ($aRequest->get($val) > 0)
  1212.                 {
  1213.                     $sQuery "SELECT p"
  1214.                         " FROM App:Abonaments p "
  1215.                         " WHERE p.ticket_type_id =:ticket_type_id "
  1216.                         " AND p.pool_id =:pool_id "
  1217.                        // . " AND p.tarifa_id =:tarifa_id "
  1218.                         " AND p.data_inici <=:data_inici "
  1219.                         " AND p.person_type_id =:person_type_id "
  1220.                         " AND p.data_fi >=:data_fi "
  1221.                         " AND p.actiu =:actiu "
  1222.                         " ORDER BY p.person_type_general_id ASC"
  1223.                     ;
  1224.                     //echo '-' . $aRequest->get('tarifa_id') . '-';
  1225.                     $aParamAux = array( 
  1226.                         ":ticket_type_id"   => $enAbonaments->getTicketTypeId(),
  1227.                         ":person_type_id"   => $aRequest->get($val '_person_type_id'),
  1228.                         ":pool_id"          => $enAbonaments->getPoolId(),
  1229.                         ":data_inici"       => date("Y-m-d"),
  1230.                         ":data_fi"          => date("Y-m-d"),
  1231.                         ":actiu"            => 1,
  1232.                     );
  1233.                     $objAbonaments $this->em->createQuery($sQuery)->setParameters($aParamAux)->getResult();
  1234.                     /*
  1235.                     dump($aParamAux);
  1236.                     dump($objAbonaments);
  1237.                     echo '-' . $objAbonaments[0]->getID();
  1238.                     die('stop');
  1239.                     */
  1240.                     /*
  1241.                     $aParam = array('pool_id'           => $enAbonaments->getPoolId(),
  1242.                                     'ticket_type_id'    => $enAbonaments->getTicketTypeId(),
  1243.                                     'person_type_id'    => $aRequest->get($val . '_person_type_id'),
  1244.                                     'actiu'             => 1
  1245.                                     );
  1246.                     $enAbonamentsAux = $this->em->getRepository(Abonaments::class)->findOneBy($aParam);
  1247.                     */
  1248.                     $enAbonamentsAux $this->em->getRepository(Abonaments::class)->find(array('id' => $objAbonaments[0]->getID()));
  1249.                     for ($iCon 0$iCon <$aRequest->get($val); $iCon++)
  1250.                     {
  1251.                         $Preu $enAbonamentsAux->getPreu();
  1252.                         $AbonamentsTipus $key;
  1253.                         $this->_insert_comandes_lines($this->em$enComandes$enAbonamentsAux$Preu$AbonamentsTipus''$peticion);
  1254.                     }
  1255.                 }
  1256.             }
  1257.         }
  1258.         
  1259.         $aParameter = array('util' => $this->objUtil);
  1260.         // Comprovem si ve del fomulari del backend
  1261.         if ($aRequest->has('backend'))
  1262.         {
  1263.             /*
  1264.             * Insertem informació a log
  1265.             */
  1266.             $this->objUtil->logAction($peticion$this->getUser());
  1267.             
  1268.             $aParameter['backend'] = 1;
  1269.             $sUrl 'formulario_new';
  1270.             if ($aRequest->get('comprar') == 'S')
  1271.             {
  1272.                 $sUrl 'backend_abonaments_cistella';
  1273.             }
  1274.         } else {
  1275.             $sUrl 'abonaments_front';
  1276.             if ($aRequest->get('comprar') == 'S')
  1277.             {
  1278.                 //////////////////////////
  1279.                 // Si el client està logat
  1280.                 //////////////////////////
  1281.                 if ($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'))
  1282.                 {
  1283.                     $sUrl 'abonaments_cistella';
  1284.                 } else {
  1285.                     $sUrl 'abonaments_form_alta_consumer';
  1286.                 }
  1287.             }
  1288.         }
  1289.         
  1290.         return  $this->redirect($this->generateUrl($sUrl,$aParameter));
  1291.     }
  1292.     public function _insert_comandes_lines($em$enComandes$enAbonaments$Preu$AbonamentsTipus$sDetall,Request $peticion)
  1293.     {
  1294.         $enComandesLinies = new ComandesLinies();
  1295.         $enComandesLinies->setComandes($enComandes[0]);
  1296.         $enComandesLinies->setAbonaments($enAbonaments);
  1297.         $enComandesLinies->setQuantitat(1);
  1298.         $enComandesLinies->setPreu($Preu);
  1299.         $enComandesLinies->setTotal($Preu);
  1300.         $enComandesLinies->setAbonamentsTipus($AbonamentsTipus);
  1301.         
  1302.         $sFunctionName 'getNom' ucfirst(($peticion->attributes->has('_locale')?$peticion->attributes->get('_locale'):'Ca'));
  1303.         if ($enAbonaments->getEstacio() == 'Extra')
  1304.         {
  1305.             //$enComandesLinies->setDetall($enAbonaments->$sFunctionName() . ' ' . ($sDetall != ''?$sDetall . ' ':'') . $this->aEstacions[$enAbonaments->getEstacio()]);
  1306.             $enComandesLinies->setDetall($enAbonaments->$sFunctionName() . ' ' . ($sDetall != ''?$sDetall ' ':''));
  1307.         } else {
  1308.             //$enComandesLinies->setDetall($this->aTipusAbonament[$AbonamentsTipus] . ' ' . $enAbonaments->$sFunctionName() . ' ' . ($sDetall != ''?$sDetall . ' ':'') . $this->aEstacions[$enAbonaments->getEstacio()]);
  1309.             $enComandesLinies->setDetall($this->aTipusAbonament[$AbonamentsTipus] . ' ' $enAbonaments->$sFunctionName() . ' ' . ($sDetall != ''?$sDetall ' ':''));
  1310.         }
  1311.         $enComandesLinies->setSuplement($enAbonaments->getSuplement());
  1312.         $enComandesLinies->setConsumers();
  1313.         
  1314.         // Comprovem si ve del fomulari del backend
  1315.         if ($this->getUser())
  1316.         {
  1317.             /*
  1318.             * Insertem informació a log
  1319.             */
  1320.             $this->objUtil->logAction($peticion$this->getUser());
  1321.         }
  1322.         $this->em->persist($enComandesLinies);
  1323.         $this->em->flush();
  1324.     }
  1325.     
  1326.     public function insert_comandes_linies_familiarAction(Request $peticion)
  1327.     {
  1328.         $aRequest $peticion->request;
  1329.         /////////////////////////////
  1330.         // Mirem data de fi d'oferta
  1331.         /////////////////////////////
  1332.         $blOferta false;
  1333.         $objGeneral $this->em->getRepository(General::class)->findBy(array('id' => 1));
  1334.         if ($objGeneral[0]->getDataFiOferta()->format('Y-m-d') >= date("Y-m-d")) $blOferta true;
  1335.         $iFromBackend 0;
  1336.         if ($aRequest->has('backend')) $iFromBackend 1;
  1337.         ///////////////////////////////
  1338.         // Recuperem d'id de la comanda
  1339.         ///////////////////////////////
  1340.         $iComanda $this->create_comanda($iFromBackend);
  1341.         $aParam = array('id' => $iComanda);
  1342.         $enComandes $this->em->getRepository(Comandes::class)->findBy($aParam);
  1343.         ///////////////////////////////////////////////
  1344.         // Linies de la comanda per abonaments Familiar
  1345.         ///////////////////////////////////////////////
  1346.         if ($aRequest->has('abonament') != '')
  1347.         {
  1348.             //dump($aRequest->get('abonament'));
  1349.             foreach($aRequest->all('abonament') as $key => $val)
  1350.             {
  1351.                 $iNumeroPersones 1;
  1352.                 if ($val != && $val !=10 && $val !=110)
  1353.                 {
  1354.                     $iAbonamentId $aRequest->get('persones_' $val);
  1355.                 } else {
  1356.                     $iAbonamentId $aRequest->get('adult_id_abonament_' $val);
  1357.                     //////////////////////////////////////////////////////////////////
  1358.                     // Si és el 5 abonament pot tenir més d'una persona per abonament,
  1359.                     // així que generem tantes linies com persones
  1360.                     //////////////////////////////////////////////////////////////////
  1361.                     if ($aRequest->get('adult_' $val) > 0
  1362.                         || $aRequest->get('infant_' $val) > 0)
  1363.                     {
  1364.                         $iNumeroPersones $aRequest->get('adult_' $val) + $aRequest->get('infant_' $val);
  1365.                     }
  1366.                 }
  1367.                 for ($iCon 0$iCon<$iNumeroPersones$iCon++)
  1368.                 {
  1369.                     if ($val == || $val == 10 || $val == 110)
  1370.                     {
  1371.                         if ($aRequest->get('adult_' $val) > $iCon)
  1372.                         {
  1373.                             $iAbonamentId $aRequest->get('adult_id_abonament_' $val);
  1374.                         } else {
  1375.                             $iAbonamentId $aRequest->get('infant_id_abonament_' $val);
  1376.                         }
  1377.                     }
  1378.                     // Recuperem les dades de l'abonament
  1379.                     $enAbonaments $this->em->getRepository(Abonaments::class)->find($iAbonamentId);
  1380.                     $enComandesLinies = new ComandesLinies();
  1381.                     $enComandesLinies->setComandes($enComandes[0]);
  1382.                     $enComandesLinies->setAbonaments($enAbonaments);
  1383.                     $enComandesLinies->setQuantitat(1);
  1384.                     $enComandesLinies->setPreu($enAbonaments->getPreu());
  1385.                     $enComandesLinies->setTotal($enAbonaments->getPreu());
  1386.                     $enComandesLinies->setAbonamentsTipus($enAbonaments->getPersonTypeGeneralId()==1?'AD':'IN');
  1387.                     $sFunctionName 'getNom' ucfirst(($peticion->attributes->has('_locale')?$peticion->attributes->get('_locale'):'Ca'));
  1388.                     $enComandesLinies->setDetall($enAbonaments->$sFunctionName() . ' ' $this->aEstacions[$enAbonaments->getEstacio()]);
  1389.                     $enComandesLinies->setSuplement($enAbonaments->getSuplement());
  1390.                     $enComandesLinies->setConsumers();
  1391.                     $this->em->persist($enComandesLinies);
  1392.                     $this->em->flush();
  1393.                 }
  1394.             }
  1395.         }
  1396.         $aParameter = array('util' => $this->objUtil);
  1397.         ///////////////////////////////////////////
  1398.         // Comprovem si ve del fomulari del backend
  1399.         ///////////////////////////////////////////
  1400.         if ($aRequest->has('backend'))
  1401.         {
  1402.             /*
  1403.             * Insertem informació a log
  1404.             */
  1405.             $this->objUtil->logAction($peticion$this->getUser());
  1406.             
  1407.             $aParameter['backend'] = 1;
  1408.             $sUrl 'formulario_new';
  1409.             if ($aRequest->get('comprar') == 'S')
  1410.             {
  1411.                 $sUrl 'backend_abonaments_cistella';
  1412.             }  
  1413.         } else {
  1414.             $sUrl 'abonaments_front';
  1415.             if ($aRequest->get('comprar') == 'S')
  1416.             {
  1417.                 $sUrl 'abonaments_cistella';
  1418.             }
  1419.         }
  1420.         return $this->redirect($this->generateUrl($sUrl,$aParameter));
  1421.         //return $this->indexAction($peticion);
  1422.     }
  1423.     
  1424.     public function insertDocumentsAction(Request $peticion)
  1425.     {
  1426.         // Comprovem si ve del fomulari del backend
  1427.         if ($this->getUser())
  1428.         {
  1429.             /*
  1430.             * Insertem informació a log
  1431.             */
  1432.             $this->objUtil->logAction($peticion$this->getUser());
  1433.         }
  1434.         $aRequest $peticion->request;
  1435.         $emAux $this->em;
  1436.         $aFotoAllowed = array(
  1437.             "image/jpeg"
  1438.             "image/gif"
  1439.             "image/png"
  1440.             "image/tiff"
  1441.         );
  1442.         $aDocumentAllowed = array(
  1443.             "application/pdf"
  1444.             "application/x-pdf"
  1445.             "application/vnd.oasis.opendocument.text"
  1446.             "application/msword"
  1447.             "image/jpeg"
  1448.             "image/gif"
  1449.             "image/png"
  1450.             "image/tiff"
  1451.         );
  1452.         /////////////////////////////////////////
  1453.         // devuelve el tipo mime de su extensión
  1454.         /////////////////////////////////////////
  1455.         $finfo finfo_open(FILEINFO_MIME_TYPE);
  1456.         if ($aRequest->has('id'))
  1457.         {    
  1458.             foreach($aRequest->all('id') as $key => $val)
  1459.             {
  1460.                 $enComandesLinies $this->em->getRepository(ComandesLinies::class)->find($val);
  1461.                 $bFotoCorrecta true;
  1462.                 if ($peticion->files->get('foto_' $val) != '')
  1463.                 {
  1464.                     $file $peticion->files->get('foto_' $val);
  1465.                     if (in_array(finfo_file($finfo$file), $aFotoAllowed))
  1466.                     {
  1467.                         $enComandesLinies->setImatgeAux($file);
  1468.                     } else {
  1469.                         $bFotoCorrecta false;
  1470.                         $this->session->getFlashBag()->add('error'$this->translator->trans("El format d'alguna imatge no és correcte: formats permesos(jpeg, gif, png, tiff)"));
  1471.                     }
  1472.                 }
  1473.                 $bFotoDocument true;
  1474.                 if ($peticion->files->get('document_' $val) != '')
  1475.                 {
  1476.                     $document $peticion->files->get('document_' $val);
  1477.                     if (in_array(finfo_file($finfo$document), $aDocumentAllowed))
  1478.                     {
  1479.                         $enComandesLinies->setDocumentoAux($document);
  1480.                     } else {
  1481.                         $bFotoDocument false;
  1482.                         $this->session->getFlashBag()->add('error'$this->translator->trans("El format d'alguns documents no és correcte: formats permesos(pdf, x-pdf, text, msword, jpeg, gif, png, tiff)"));
  1483.                     }
  1484.                 }
  1485.                 $bFotoResident true;
  1486.                 if ($peticion->files->get('resident_' $val) != '')
  1487.                 {
  1488.                     $resident $peticion->files->get('resident_' $val);
  1489.                     if (in_array(finfo_file($finfo$resident), $aDocumentAllowed)) 
  1490.                     {
  1491.                         $enComandesLinies->setResidentAux($resident);
  1492.                     } else {
  1493.                         $bFotoResident false;
  1494.                        $this->session->getFlashBag()->add('error'$this->translator->trans("El format d'alguns documents no és correcte: formats permesos(pdf, x-pdf, text, msword, jpeg, gif, png, tiff)"));
  1495.                     }
  1496.                 }
  1497.                 $bFotoFamilia true;
  1498.                 if ($peticion->files->get('familia_nombrosa_' $val) != '')
  1499.                 {
  1500.                     $familia_nombrosa $peticion->files->get('familia_nombrosa_' $val);
  1501.                     if (in_array(finfo_file($finfo$familia_nombrosa), $aDocumentAllowed)) 
  1502.                     {
  1503.                         $enComandesLinies->setFamiliaNombrosaAux($familia_nombrosa);
  1504.                     } else {
  1505.                         $bFotoFamilia false;
  1506.                        $this->session->getFlashBag()->add('error'$this->translator->trans("El format d'alguns documents no és correcte: formats permesos(pdf, x-pdf, text, msword, jpeg, gif, png, tiff)"));
  1507.                     }
  1508.                 }
  1509.                 $this->em->persist($enComandesLinies);
  1510.                 $this->em->flush();
  1511.                 if ($enComandesLinies->getConsumers()
  1512.                     && method_exists($enComandesLinies->getConsumers(), 'getId'))
  1513.                 {        
  1514.                     $enConsumers $emAux->getRepository(Consumers::class)->find($enComandesLinies->getConsumers()->getId());
  1515.                     if ($enConsumers)
  1516.                     {
  1517.                         $sPath dirname(__FILE__) . '/../../public/uploads/';
  1518.                         // Fem copia dels fitxers
  1519.                         if ($enComandesLinies->getImatge() != '' && $bFotoCorrecta)
  1520.                         {
  1521.                             $sOrigen $sPath 'comandeslinies/' $enComandesLinies->getImatge();
  1522.                             $sDesti $sPath 'consumers/' $enComandesLinies->getImatge();
  1523.                             if (file_exists($sOrigen) && !file_exists($sDesti)) 
  1524.                             {
  1525.                                 copy($sOrigen$sDesti);
  1526.                                 $miObjSize = new changeSize;
  1527.                                 $miObjSize->canviTamanyImatge($sDesti2500);
  1528.                                 $enConsumers->setImatge($enComandesLinies->getImatge());
  1529.                             }
  1530.                         }
  1531.                         if ($enComandesLinies->getDocumento() != '' && $bFotoDocument)
  1532.                         {
  1533.                             $sOrigen $sPath 'comandeslinies/' $enComandesLinies->getDocumento();
  1534.                             $sDesti $sPath 'consumers/' $enComandesLinies->getDocumento();
  1535.                             if (file_exists($sOrigen) && !file_exists($sDesti)) 
  1536.                             {
  1537.                                 copy($sOrigen$sDesti);
  1538.                                 $enConsumers->setDocumento($enComandesLinies->getDocumento());
  1539.                             }
  1540.                         }
  1541.                         if ($enComandesLinies->getResident() != '' && $bFotoResident)
  1542.                         {
  1543.                             $sOrigen $sPath 'comandeslinies/' $enComandesLinies->getResident();
  1544.                             $sDesti $sPath 'consumers/' $enComandesLinies->getResident();
  1545.                             if (file_exists($sOrigen) && !file_exists($sDesti))
  1546.                             {
  1547.                                 copy($sOrigen$sDesti);
  1548.                                 $enConsumers->setResident($enComandesLinies->getResident());
  1549.                             }
  1550.                         }
  1551.                         if ($enComandesLinies->getFamiliaNombrosa() != '' && $bFotoFamilia)
  1552.                         {
  1553.                             $sOrigen $sPath 'comandeslinies/' $enComandesLinies->getFamiliaNombrosa();
  1554.                             $sDesti $sPath 'consumers/' $enComandesLinies->getFamiliaNombrosa();
  1555.                             if (file_exists($sOrigen) && !file_exists($sDesti))
  1556.                             {
  1557.                                 copy($sOrigen$sDesti);
  1558.                                 $enConsumers->setFamiliaNombrosa($enComandesLinies->getFamiliaNombrosa());
  1559.                             }
  1560.                         }
  1561.                         $emAux->persist($enConsumers);
  1562.                         $emAux->flush();
  1563.                     }
  1564.                 }
  1565.             }
  1566.         }
  1567.         finfo_close($finfo);
  1568.         return $this->documentsAction($peticion);
  1569.     }
  1570.     
  1571.     public function documentDeteleAction(Request $peticion)
  1572.     {
  1573.         // Comprovem si ve del fomulari del backend
  1574.         if ($this->getUser())
  1575.         {
  1576.             /*
  1577.             * Insertem informació a log
  1578.             */
  1579.             $this->objUtil->logAction($peticion$this->getUser());
  1580.         }
  1581.         $aRequest $peticion->attributes;
  1582.         
  1583.         $enComandesLiniesAux $this->em->getRepository(ComandesLinies::class)->findBy(array('id' => $aRequest->get('id'), 'comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')));
  1584.         if (count ($enComandesLiniesAux) > 0)
  1585.         {
  1586.             $enComandesLinies $this->em->getRepository(ComandesLinies::class)->find($aRequest->get('id'));
  1587.             
  1588.             //$path = $this->get('kernel')->getRootDir() . '/../web/uploads/comandeslinies/';
  1589.             $path $enComandesLinies->getUploadRootDir();
  1590.             $sFunctionName 'get' ucfirst($aRequest->get('tipo'));
  1591.             
  1592.             $sRutaImatge $path $enComandesLinies->$sFunctionName();
  1593.             
  1594.             if (file_exists($sRutaImatge))
  1595.             {
  1596.                 unlink($sRutaImatge);
  1597.             }
  1598.             
  1599.             $sFunctionName 'set' ucfirst($aRequest->get('tipo'));
  1600.             $enComandesLinies->$sFunctionName(null);
  1601.             $this->em->persist($enComandesLinies);
  1602.             $this->em->flush();
  1603.         }
  1604.         return $this->documentsAction($peticion);
  1605.     }
  1606.     
  1607.     public function cistellaAction(Request $peticion)
  1608.     {
  1609.         $aRequest $peticion->attributes;
  1610.         $repository $this->em->getRepository(Abonaments::class);
  1611.         ////////////////////////////////
  1612.         // Recuperem dades de la comanda
  1613.         ////////////////////////////////
  1614.         $aParam = array(
  1615.             'id'  => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')
  1616.         );
  1617.         $objComandes $this->em->getRepository(Comandes::class)->findBy($aParam);
  1618.         //////////////////////////////////////////////////////////
  1619.         // Recuperem les linies de la comanda que no són suplement
  1620.         //////////////////////////////////////////////////////////
  1621.         $aParam = array(
  1622.             'comandes'  => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'),
  1623.             'suplement' => 0
  1624.         );
  1625.         $objComandesLinies $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
  1626.         ///////////////////////////////////////////////////////
  1627.         // Recuperem les linies de la comanda que són suplement
  1628.         ///////////////////////////////////////////////////////
  1629.         $aParam = array(
  1630.             'comandes'      => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'),
  1631.             'suplement'     => 1
  1632.         );
  1633.         
  1634.         $objComandesLiniesSuplement $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
  1635.         $aSuplements = array();
  1636.         foreach ($objComandesLiniesSuplement as $key => $val)
  1637.         {
  1638.             $aSuplements[] = $val->getRelacionatComandesLinies()->getId() . '-' .$val->getAbonaments()->getId();
  1639.         }
  1640.         ////////////////////////////
  1641.         /// Recuperem els suplements
  1642.         ////////////////////////////
  1643.         $aPersons = array(
  1644.             1   => 'AD',
  1645.             2   => 'IN',
  1646.             6   => 'ME',
  1647.             7   => 'V1',
  1648.             8   => 'V2'
  1649.         );
  1650.         foreach ($aPersons as $key => $val)
  1651.         {
  1652.             $aParam = array(
  1653.                 'estacio'                   => 'MAS',
  1654.                 'suplement'                 => 1,
  1655.                 'club_esqui'                => 0,
  1656.                 'desglossat'                => true,
  1657.                 'person_type_general_id'    => $key,
  1658.                 'nomes_tablet'              => 0
  1659.             );
  1660.             if ($aRequest->has('backend'))
  1661.             {
  1662.                 $aParam['per_id'] = $this->getUser()->getPerfils();
  1663.                 unset($aParam['nomes_tablet']);
  1664.                 unset($aParam['club_esqui']);
  1665.                 switch ($this->getUser()->getPerfils()->getId())
  1666.                 {
  1667.                     case 1// Administrador
  1668.                     case 7// superadmin
  1669.                         $aParam['admin'] = 1;
  1670.                         unset($aParam['per_id']);
  1671.                         break;
  1672.                     case 10// Abonaments-oficines-fires
  1673.                         $aParam['fires_oficina'] = 1;
  1674.                         unset($aParam['per_id']);
  1675.                         break;
  1676.                     default:
  1677.                         // En principi tots els abonaments han de tenir abo_admin a 1 o 0, això ho fem per que si no es un dels perfils
  1678.                         // anterior no volem que surti cap abonament
  1679.                         $aParam['admin'] = 2;
  1680.                         break;
  1681.                 }
  1682.             }
  1683.             if ($this->session->get('club_esqui'))
  1684.             {
  1685.                 unset($aParam['admin']);
  1686.                 $aParam['club_esqui'] = 1;
  1687.             }
  1688.             $objAbonaments_mas[$val] = $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
  1689.             $aParam['estacio'] = 'ALP';
  1690.             $objAbonaments_alp[$val] = $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
  1691.             $aParam['estacio'] = 'Extra';
  1692.             $objAbonaments_extra[$val] = $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
  1693.         }
  1694.         $objGeneral $this->em->getRepository(General::class)->findBy(array('id' => 1));
  1695.         $enConsumers = array();
  1696.         $aAbonatsAmbAbonaments = array();
  1697.         $sNom '';
  1698.         $sCognom '';
  1699.         $sCognom2 '';
  1700.         
  1701.         if ($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'))
  1702.         {
  1703.             ///////////////////////////////////////////////////////////////////////////////
  1704.             // Si el consumer pagador està logat, carregem els consumers de la seva familia
  1705.             ///////////////////////////////////////////////////////////////////////////////
  1706.             $enConsumers $this->em->getRepository(Consumers::class)->getConsumersOfConsumer($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'));
  1707.             //$aParam = array('clients' => $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'));
  1708.             if (!$enConsumers)
  1709.             {
  1710.                 $enConsumers $this->em->getRepository(Consumers::class)->findById($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'));
  1711.                 $sNom $enConsumers[0]->getNom();
  1712.                 $sCognom $enConsumers[0]->getCognom1();
  1713.                 $sCognom2 $enConsumers[0]->getCognom2();
  1714.             } else {
  1715.                 /////////////////////////////////////////////////////////////////////////////
  1716.                 // Si la compra es fa des de clubs d'esquí, oficines o fires no es permete 
  1717.                 // més d'un abonament per temporada
  1718.                 // A les tablets (Vendes des d’Oficinies i Fires) i a Clubs d’esquí un 
  1719.                 // titular no pugui comprar dos productes diferents, la mateixa persona i en 
  1720.                 // la mateixa temporada. Volem que sigui així, però amb els següents matisos: 
  1721.                 // -Excepte que ho puguin fer del Departament d’Administració (Ari i Jessica).
  1722.                 // -Que l’únic producte afegit que pugui comprar el mateix titular només sigui 
  1723.                 // el producte del suplement de l’Esquí Nocturn i, també òbviament, altres 
  1724.                 // productes que siguin serveis complementaris (Ex. Guardaesquís)
  1725.                 //////////////////////////////////////////////////////////////////////////////
  1726.                 /// Temporada 2022-2023: la restricció s'ha ampliat també a les comandes fetes
  1727.                 ///  des de el frontoffices
  1728.                 //////////////////////////////////////////////////////////////////////////////
  1729.                 /// Temporada 2025-2026: ara tampoc es pot per administració (ara es diu central)
  1730.                 ///  que un titular pugui comprar dos productes diferents, la mateixa persona i en
  1731.                 ///  la mateixa temporada
  1732.                 //////////////////////////////////////////////////////////////////////////////
  1733.                 if ($this->session->get('club_esqui') == ||
  1734.                         ($this->requestStack->getCurrentRequest()->getSession()->has('sessLloc_venda') &&
  1735.                             ($this->requestStack->getCurrentRequest()->getSession()->get('sessLloc_venda') == 'Oficina' || 
  1736.                             $this->requestStack->getCurrentRequest()->getSession()->get('sessLloc_venda') == 'Fira' || 
  1737.                             $this->requestStack->getCurrentRequest()->getSession()->get('sessLloc_venda') == 'ClubEsqui' ||
  1738.                             $this->requestStack->getCurrentRequest()->getSession()->get('sessLloc_venda') == '' ||
  1739.                             $this->requestStack->getCurrentRequest()->getSession()->get('sessLloc_venda') == 'Web' ||
  1740.                             $this->requestStack->getCurrentRequest()->getSession()->get('sessLloc_venda') == 'Administracio' // ara te el nom de central
  1741.                             )
  1742.                         )
  1743.                     )
  1744.                 {
  1745.                     $iAny date('Y');
  1746.                     $sDataNow date('m-d');
  1747.                     if ($sDataNow '07-01'$iAny--;
  1748.                     $enConsumersAbonats $this->em->getRepository(ConsumersHasConsumers::class)->findBy(array('consumer' => $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id')));
  1749.                     foreach ($enConsumersAbonats as $key => $val)
  1750.                     {
  1751.                         $abonat =  $val->getConsumerFill()->getId();
  1752.                         $sql '
  1753.                         SELECT p FROM 
  1754.                         App:ComandesLinies p 
  1755.                         JOIN App:Comandes c
  1756.                         WHERE p.comandes = c.id
  1757.                         AND c.id != :com_id'
  1758.                         //AND c.consumers = :con_id
  1759.                         ' AND c.data >= :data
  1760.                         AND p.suplement = :suplement
  1761.                         AND c.estat = :estat
  1762.                         AND c.devolucio != :devolucio
  1763.                         AND p.anulada != :anulada
  1764.                         AND p.consumers = :abonat
  1765.                         ';
  1766.                         $stmt $this->em->createQuery($sql);
  1767.                         $stmt->setParameter('com_id'$this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
  1768.                         //$stmt->setParameter('con_id', $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'));
  1769.                         $stmt->setParameter('data'$iAny '-07-01');
  1770.                         $stmt->setParameter('suplement'0);
  1771.                         $stmt->setParameter('estat'1);
  1772.                         $stmt->setParameter('devolucio'1);
  1773.                         $stmt->setParameter('anulada'1);
  1774.                         $stmt->setParameter('abonat'$abonat);
  1775.                         //$stmt->setParameter('estacio', 'Extra');
  1776.                         ///////////////////////////////////////////////////
  1777.                         // returns an array of arrays (i.e. a raw data set)
  1778.                         ///////////////////////////////////////////////////
  1779.                         $a $stmt->getResult();
  1780.                        // dump($a);
  1781.                        // die('stop');
  1782.                         foreach ($a as $key => $val
  1783.                         {
  1784.                             ////////////////////////////////////
  1785.                             /// Si la línia te consumer associat
  1786.                             ////////////////////////////////////
  1787.                             if ($val->getConsumers()) 
  1788.                             {
  1789.                                 if ($val->getAbonaments()->getEstacio() != 'Extra'
  1790.                                 {
  1791.                                     if ($val->getAbonaments()->getNocturn() == 1
  1792.                                     {
  1793.                                         $aAbonatsAmbAbonaments[$val->getConsumers()->getId()]['nocturn'] = 1;
  1794.                                     } else {
  1795.                                         $aAbonatsAmbAbonaments[$val->getConsumers()->getId()]['diurn'] = 1;
  1796.                                     }
  1797.                                 }
  1798.                             }
  1799.                         }
  1800.                     }
  1801.                 }
  1802.             }
  1803.         }
  1804.         ///////////////////////////////////////////
  1805.         // Comprovem si ve del fomulari del backend
  1806.         ///////////////////////////////////////////
  1807.         if ($aRequest->has('backend'))
  1808.         {
  1809.             /*
  1810.             * Insertem informació a log
  1811.             */
  1812.             $this->objUtil->logAction($peticion$this->getUser());
  1813.             
  1814.             return $this->render('Backend\Formulario\cistella.html.twig', array(    
  1815.                 'objComandesLinies' => $objComandesLinies,
  1816.                 'objAbonaments_mas'     => $objAbonaments_mas,
  1817.                 'objAbonaments_alp'     => $objAbonaments_alp,
  1818.                 'objAbonaments_extra'   => $objAbonaments_extra,
  1819.                 'fiOferta'              => $objGeneral[0]->getDataFiOferta(),
  1820.                 'aSuplements'           => $aSuplements,
  1821.                 'enConsumers'           => $enConsumers,
  1822.                 'enGeneral'             => $this->enGeneral,
  1823.                 'Nom'                   => $sNom,
  1824.                 'Cognom'                => $sCognom,
  1825.                 'Cognom2'               => $sCognom2,
  1826.                 'aAbonatsAmbAbonaments' => $aAbonatsAmbAbonaments,
  1827.                 'club_esqui'            =>$this->session->get('club_esqui'),
  1828.                 'objComandes'           => $objComandes,
  1829.                 'util'                  => $this->objUtil
  1830.             ));
  1831.         } else {
  1832.             return $this->render('cistella.html.twig', array(    
  1833.                 'objComandesLinies'     => $objComandesLinies,
  1834.                 'objAbonaments_mas'     => $objAbonaments_mas,
  1835.                 'objAbonaments_alp'     => $objAbonaments_alp,
  1836.                 'fiOferta'              => $objGeneral[0]->getDataFiOferta(),
  1837.                 'aSuplements'           => $aSuplements,
  1838.                 'enConsumers'           => $enConsumers,
  1839.                 'enSidebar'             => $this->enSidebar[0],
  1840.                 'enGeneral'             => $this->enGeneral,
  1841.                 'enSponsors'            => $this->enSponsors,
  1842.                 'aAbonatsAmbAbonaments' => $aAbonatsAmbAbonaments,
  1843.                 'util'                  => $this->objUtil
  1844.             ));
  1845.         }
  1846.     }
  1847.     public function _total_cistella()
  1848.     {
  1849.         $iTotal 0;
  1850.         if ($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'))
  1851.         {
  1852.             $aParam = array('comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
  1853.             $objComandesLinies $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
  1854.             
  1855.             foreach ($objComandesLinies as $key => $val)
  1856.             {
  1857.                 $iTotal $iTotal $val->getTotal() - $val->getDescompte();
  1858.             }
  1859.         }
  1860.         return $iTotal;
  1861.     }
  1862.     
  1863.     public function total_cistellaAction()
  1864.     {
  1865.         return new Response($this->_total_cistella());
  1866.     }
  1867.     
  1868.     public function getDataNaixementAction(Request $peticion)
  1869.     {
  1870.         $aRequest $peticion->attributes;
  1871.         $enConsumers $this->em->getRepository(Consumers::class)->find($aRequest->get('val'));
  1872.         $data '';
  1873.         if ($enConsumers)
  1874.         {
  1875.             $data $enConsumers->getDataNaixement();
  1876.         }
  1877.         
  1878.         if ($data != '')
  1879.         {
  1880.             echo $data->format('Y-m-d');
  1881.         } else {
  1882.             echo '*';
  1883.         }
  1884.         return new Response('');
  1885.     }
  1886. /*
  1887.     public function getDescompteAction(Request $peticion)
  1888.     {
  1889.         $aRequest = $peticion->attributes;
  1890.         $enAbonats = $this->em->getRepository(Abonats::class)->find($aRequest->get('val'));
  1891.         $data = '';
  1892.         if ($enAbonats)
  1893.         {
  1894.             //////////////////////////////////////////////////////////
  1895.             // Comprovem si ja s'ha utilitzat el descompte de l'abonat
  1896.             //////////////////////////////////////////////////////////
  1897.             if ($enAbonats->getDescompteUtilitzat() != 1)
  1898.             {
  1899.                 $data = $enAbonats->getDescompte();
  1900.             }
  1901.         }
  1902.         
  1903.         echo $data;
  1904.         return new Response('');
  1905.     }
  1906.     public function getDescompteAndUpdateAction(Request $peticion)
  1907.     {
  1908.         $aRequest = $peticion->attributes;
  1909.         $enConsumers = $this->em->getRepository(Consumers::class)->find($aRequest->get('val'));
  1910.         $data = '';
  1911.         if ($enConsumers)
  1912.         {
  1913.             //////////////////////////////////////////////////////////
  1914.             // Comprovem si ja s'ha utilitzat el descompte de l'abonat
  1915.             //////////////////////////////////////////////////////////
  1916.             if ($enConsumers->getDescompteUtilitzat() != 1
  1917.                     && $enConsumers->getDescompteEstacio() == $aRequest->get('estacio'))
  1918.             {
  1919.                 $data = $enConsumers->getDescompte();
  1920.             }
  1921.         }
  1922.         
  1923.         $enComandesLiniesAux = $this->em->getRepository(ComandesLinies::class)->findBy(array('id'        => $aRequest->get('id'), 
  1924.                                                                                             'comandes'  => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')));
  1925.         if (count ($enComandesLiniesAux) > 0)
  1926.         {
  1927.             $enComandesLinies = $this->em->getRepository(ComandesLinies::class)->find($aRequest->get('id'));
  1928.             if ($data > 0)
  1929.             {
  1930.                 $enComandesLinies->setDescompte($data);
  1931.                 $enComandesLinies->setTipusDescompte('C');
  1932.             } else {
  1933.                 $enComandesLinies->setDescompte(0);
  1934.                 $enComandesLinies->setTipusDescompte('');
  1935.             }
  1936.             $this->em->persist($enComandesLinies);
  1937.             $this->em->flush();
  1938.         }
  1939.         
  1940.         echo $data;
  1941.         return new Response('');
  1942.     }
  1943.   */
  1944.     public function netDescompteLiniaAction(Request $peticion)
  1945.     {
  1946.         $aRequest $peticion->attributes;
  1947.         $enComandesLiniesAux $this->em->getRepository(ComandesLinies::class)->findBy(array('id' => $aRequest->get('id'), 'comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')));
  1948.         if (count ($enComandesLiniesAux) > 0)
  1949.         {
  1950.             $enComandesLinies $this->em->getRepository(ComandesLinies::class)->find($aRequest->get('id'));
  1951.             $enComandesLinies->setDescompte(0);
  1952.             $enComandesLinies->setTipusDescompte('');
  1953.             $this->em->persist($enComandesLinies);
  1954.             $this->em->flush();
  1955.             echo 'ok';
  1956.         } else {
  1957.             echo 'ko';
  1958.         }
  1959.         
  1960.         return new Response('');
  1961.     }
  1962.     
  1963.     public function updateConsumersAction(Request $peticion)
  1964.     {
  1965.         // Comprovem si ve del fomulari del backend
  1966.         if ($this->getUser())
  1967.         {
  1968.             /*
  1969.             * Insertem informació a log
  1970.             */
  1971.             $this->objUtil->logAction($peticion$this->getUser());
  1972.         }
  1973.         $aRequest $peticion->attributes;
  1974.         $em2 $this->em;
  1975.         
  1976.         if ($aRequest->get('val') == '_*_')
  1977.         {
  1978.             $aRequest->set('val''');
  1979.         }
  1980.         //dump ($aRequest);
  1981.         //die();
  1982.         
  1983.         $enComandesLiniesAux $this->em->getRepository(ComandesLinies::class)->findBy(array('id' => $aRequest->get('id'), 'comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')));
  1984.         if (count ($enComandesLiniesAux) > 0)
  1985.         {
  1986.             $enComandesLinies $this->em->getRepository(ComandesLinies::class)->find($aRequest->get('id'));
  1987.             
  1988.             if ($aRequest->get('type') == 'consumer')
  1989.             {
  1990.                 if ($aRequest->get('val') != '')
  1991.                 {
  1992.                     $enConsumers $this->em->getRepository(Consumers::class)->find($aRequest->get('val'));
  1993.                     $enComandesLinies->setConsumers($enConsumers);
  1994.                     $enComandesLinies->setNom($enConsumers->getNom());
  1995.                     $enComandesLinies->setCognom1($enConsumers->getCognom1());
  1996.                     $enComandesLinies->setCognom2($enConsumers->getCognom2());
  1997.                 } else {
  1998.                     $enComandesLinies->setConsumers(null);
  1999.                     $enComandesLinies->setNom('');
  2000.                     $enComandesLinies->setCognom1('');
  2001.                     $enComandesLinies->setCognom2('');
  2002.                 }
  2003.             } else {
  2004.                 $sNomFunction 'set' ucfirst($aRequest->get('type'));
  2005.                 if ($aRequest->get('type') == 'dataNaixement')
  2006.                 {
  2007.                     if ($aRequest->get('val') != '')
  2008.                     {
  2009.                         $dateTime = new \DateTime();
  2010.                         $enComandesLinies->$sNomFunction($dateTime->setTimestamp(strtotime($aRequest->get('val'))));
  2011.                         if ($enComandesLinies->getConsumers())
  2012.                         {
  2013.                             // S'actualitza la data de naixement al registre de consumer
  2014.                             $enConsumers $em2->getRepository(Consumers::class)->find($enComandesLinies->getConsumers());
  2015.                             //////////////////////////////////////
  2016.                             // Comprovem si s'ha modificat la data
  2017.                             //////////////////////////////////////
  2018.                             $dateTime = new \DateTime();
  2019.                             if ($enConsumers->getDataNaixement() != $dateTime->setTimestamp(strtotime($aRequest->get('val'))))
  2020.                             {
  2021.                                 $enConsumers->setModificat(1);
  2022.                             }
  2023.                             $enConsumers->setDataNaixement($dateTime->setTimestamp(strtotime($aRequest->get('val'))));
  2024.                             $em2->persist($enConsumers);
  2025.                             $em2->flush();
  2026.                         }
  2027.                     }
  2028.                 } else {
  2029.                     $enComandesLinies->$sNomFunction($aRequest->get('val'));
  2030.                 }
  2031.             }
  2032.             $this->em->persist($enComandesLinies);
  2033.             $this->em->flush();
  2034.         
  2035.             // Actualitzem el nom i cognoms del suplement si en te
  2036.             if ($aRequest->get('type') == 'nom' 
  2037.                     or $aRequest->get('type') == 'cognom1' 
  2038.                     or $aRequest->get('type') == 'cognom2')
  2039.             {
  2040.                 $enComandesLiniesSuplementAux $this->em->getRepository(ComandesLinies::class)->findBy(array('relacionat_comandes_linies' => $aRequest->get('id')));
  2041.                 if (count($enComandesLiniesSuplementAux) > 0)
  2042.                 {
  2043.                     $enComandesLiniesSuplement $this->em->getRepository(ComandesLinies::class)->find($enComandesLiniesSuplementAux[0]->getId());
  2044.                     $sNomFunction 'set' ucfirst($aRequest->get('type'));
  2045.                     $enComandesLiniesSuplement->$sNomFunction($aRequest->get('val'));
  2046.                     $this->em->persist($enComandesLiniesSuplement);
  2047.                     $this->em->flush();
  2048.                 }
  2049.             }
  2050.             return new Response('ok');
  2051.         } else {
  2052.             return new Response('ko');
  2053.         }
  2054.     }
  2055.     /*
  2056.      * Actualitza els camps de les comandes
  2057.      * 
  2058.      */
  2059.     public function updateComandaAction(Request $peticion)
  2060.     {
  2061.         ///////////////////////////////////////////
  2062.         // Comprovem si ve del fomulari del backend
  2063.         ///////////////////////////////////////////
  2064.         if ($this->getUser())
  2065.         {
  2066.             ////////////////////////////
  2067.             // Insertem informació a log
  2068.             ////////////////////////////
  2069.             $this->objUtil->logAction($peticion$this->getUser());
  2070.         }
  2071.         $aRequest $peticion->attributes;
  2072.         
  2073.         if ($aRequest->get('val') == '_*_')
  2074.         {
  2075.             $aRequest->set('val''');
  2076.         }
  2077.         
  2078.         if ($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id') == $aRequest->get('id'))
  2079.         {
  2080.             $enComandesAux $this->em->getRepository(Comandes::class)->findBy(array('id' => $aRequest->get('id')));
  2081.             if (count ($enComandesAux) > 0)
  2082.             {
  2083.                 $enComandes $this->em->getRepository(Comandes::class)->find($aRequest->get('id'));
  2084.             
  2085.                 $sNomFunction 'set' ucfirst($aRequest->get('type'));
  2086.                 $enComandes->$sNomFunction($aRequest->get('val'));
  2087.                 $this->em->persist($enComandes);
  2088.                 $this->em->flush();
  2089.                 
  2090.                 return new Response('ok');
  2091.             } else {
  2092.                 return new Response('ko');
  2093.             }
  2094.         } else {
  2095.             return new Response('ko');
  2096.         }
  2097.     }
  2098.     
  2099.     public function insertSuplementsAction(Request $peticion)
  2100.     {
  2101.         // Comprovem si ve del fomulari del backend
  2102.         if ($this->getUser())
  2103.         {
  2104.             /*
  2105.             * Insertem informació a log
  2106.             */
  2107.             $this->objUtil->logAction($peticion$this->getUser());
  2108.         }
  2109.         $aRequest $peticion->attributes;
  2110.         
  2111.         // Mirem data de fi d'oferta
  2112.         $blOferta false;
  2113.         $objGeneral $this->em->getRepository(General::class)->findBy(array('id' => 1));
  2114.         if ($objGeneral[0]->getDataFiOferta()->format('Y-m-d') >= date("Y-m-d")) $blOferta true;
  2115.         $enComandesLiniesAux $this->em->getRepository(ComandesLinies::class)->findBY(
  2116.             array(
  2117.                 'id'        => $aRequest->get('id_related'),
  2118.                 'comandes'  => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')
  2119.             ));
  2120.         if (count ($enComandesLiniesAux) > 0)
  2121.         {
  2122.             $enComandesLinies $this->em->getRepository(ComandesLinies::class)->find($aRequest->get('id_related'));
  2123.             $enAbonaments $this->em->getRepository(Abonaments::class)->find($aRequest->get('id_own'));
  2124.             
  2125.             $enComandesLiniesNew = new ComandesLinies();
  2126.             $enComandesLiniesNew->setComandes($enComandesLinies->getComandes());
  2127.             $enComandesLiniesNew->setAbonaments($enAbonaments);
  2128.             $enComandesLiniesNew->setRelacionatComandesLinies($enComandesLinies);
  2129.             $enComandesLiniesNew->setQuantitat(1);
  2130.             $enComandesLiniesNew->setNom($enComandesLiniesAux[0]->getNom());
  2131.             $enComandesLiniesNew->setCognom1($enComandesLiniesAux[0]->getCognom1());
  2132.             $enComandesLiniesNew->setCognom2($enComandesLiniesAux[0]->getCognom2());
  2133.             /*
  2134.             $sFunctionName = 'getPreu' . ucfirst($this->aTipusAbonament[$enComandesLinies->getAbonamentsTipus()]) . ($blOferta?'Promo':'');
  2135.             if ($blOferta 
  2136.                     && is_null($enAbonaments->$sFunctionName()))
  2137.             {
  2138.                 $sFunctionName = 'getPreu' . ucfirst($this->aTipusAbonament[$enComandesLinies->getAbonamentsTipus()]);
  2139.             }
  2140.             //mail ('jramon@entorno.es', 'restored.masella', '-' . $sFunctionName . '-');
  2141.             $enComandesLiniesNew->setPreu($enAbonaments->$sFunctionName());
  2142.             $enComandesLiniesNew->setTotal($enAbonaments->$sFunctionName());
  2143.             */
  2144.             $enComandesLiniesNew->setPreu($enAbonaments->getPreu());
  2145.             $enComandesLiniesNew->setTotal($enAbonaments->getPreu());
  2146.             $sFunctionName 'getNom' ucfirst(($peticion->attributes->has('_locale')?$peticion->attributes->get('_locale'):'Ca'));
  2147.             //$enComandesLiniesNew->setDetall($enAbonaments->$sFunctionName() . ' ' . $this->aEstacions[$enAbonaments->getEstacio()]);
  2148.             $enComandesLiniesNew->setDetall($enAbonaments->$sFunctionName());
  2149.             $enComandesLiniesNew->setAbonamentsTipus($enComandesLinies->getAbonamentsTipus());
  2150.             $enComandesLiniesNew->setSuplement($enAbonaments->getSuplement());
  2151.             $enComandesLiniesNew->setConsumers();
  2152.             
  2153.             $this->em->persist($enComandesLiniesNew);
  2154.             $this->em->flush();
  2155.             return new Response('ok');
  2156.         }
  2157.         return new Response('ko');
  2158.     }
  2159.     public function deleteSuplementAction(Request $peticion)
  2160.     {
  2161.         // Comprovem si ve del fomulari del backend
  2162.         if ($this->getUser())
  2163.         {
  2164.             /*
  2165.             * Insertem informació a log
  2166.             */
  2167.             $this->objUtil->logAction($peticion$this->getUser());
  2168.         }
  2169.         $aRequest $peticion->attributes;
  2170.         $enComandesLiniesAux $this->em->getRepository(ComandesLinies::class)->findBY(array('abonaments' => $aRequest->get('id_own'), 'relacionat_comandes_linies' => $aRequest->get('id_related'),'comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')));
  2171.         if (count ($enComandesLiniesAux) > 0)
  2172.         {
  2173.             $enComandesLinies $this->em->getRepository(ComandesLinies::class)->find($enComandesLiniesAux[0]->getId());
  2174.             
  2175.             if (!$enComandesLinies)
  2176.             {
  2177.                 throw $this->createNotFoundException("No es troba l'abonament");
  2178.             }
  2179.             
  2180.             $this->em->remove($enComandesLinies);
  2181.             $this->em->flush();
  2182.             return new Response('ok');            
  2183.         }
  2184.         return new Response('ko');
  2185.     }
  2186.     
  2187.     public function deleteAbonamentAction(Request $peticion)
  2188.     {
  2189.         // Comprovem si ve del fomulari del backend
  2190.         if ($this->getUser())
  2191.         {
  2192.             /*
  2193.             * Insertem informació a log
  2194.             */
  2195.             $this->objUtil->logAction($peticion$this->getUser());
  2196.         }
  2197.         $aRequest $peticion->attributes;
  2198.         
  2199.         $enComandesLiniesAux $this->em->getRepository(ComandesLinies::class)->findBY(array('id' => $aRequest->get('id')));
  2200.         
  2201.         if (count ($enComandesLiniesAux) > 0)
  2202.         {
  2203.             // Mirem si t'he suplements associats
  2204.             $enComandesLiniesAux2 $this->em->getRepository(ComandesLinies::class)->findBY(array('relacionat_comandes_linies' => $aRequest->get('id')));
  2205.             foreach ($enComandesLiniesAux2 as $key => $val)
  2206.             {
  2207.                 $enComandesLiniesSuplement $this->em->getRepository(ComandesLinies::class)->find($val->getId());
  2208.                 $this->em->remove($enComandesLiniesSuplement);
  2209.                 $this->em->flush();
  2210.             }
  2211.             // esborrem la linia de comanda
  2212.             $enComandesLinies $this->em->getRepository(ComandesLinies::class)->find($enComandesLiniesAux[0]->getId());
  2213.             
  2214.             if (!$enComandesLinies)
  2215.             {
  2216.                 throw $this->createNotFoundException("No es troba l'abonament");
  2217.             }
  2218.             
  2219.             $this->em->remove($enComandesLinies);
  2220.             $this->em->flush();
  2221.             
  2222.             return new Response('ok');
  2223.         }
  2224.         return new Response('ko');
  2225.     }
  2226.     public function altaConsumerAction(Request $peticion)
  2227.     {
  2228.         $aRequest $peticion->request;
  2229.         $aParam = array();
  2230.         if (!$this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'))
  2231.         {
  2232.             if ($aRequest->get('nom') != ''
  2233.                 && $aRequest->get('cognom1') != ''
  2234.                 && $aRequest->get('data_naixement') != ''
  2235.                 && $aRequest->get('email') != '')
  2236.             {
  2237.                 $id '';
  2238.                 /////////////////////////////////////////////////////
  2239.                 /// Comprovem si existeix com a consumer consumer
  2240.                 /////////////////////////////////////////////////////
  2241.                 $sDataGirada trim($aRequest->get('data_naixement'));
  2242.                 if (strpos($aRequest->get('data_naixement'),'/' ) !== false)
  2243.                 {
  2244.                     $sDataGirada $this->objUtil->dataFormatYYYYMMDD(trim($aRequest->get('data_naixement')));
  2245.                 }
  2246.                 $aParams = array(   'Nombre'            => substr(trim($aRequest->get('nom')), 050),
  2247.                                     'cognom1'           => trim($aRequest->get('cognom1')),
  2248.                                     'cognom2'           => trim($aRequest->get('cognom2')),
  2249.                                     'dataNaixement'     => $sDataGirada
  2250.                 );
  2251.                 $aDadesUpdate = array();
  2252.                 $response $this->forward('App\Controller\ConsumersController::check_exist_consumerAction', array(
  2253.                     'aParams' => $aParams
  2254.                 ));
  2255.                 if ($response->getContent() == 0)
  2256.                 {
  2257.                     $enConsumers = new Consumers();
  2258.                 } else {
  2259.                     ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  2260.                     // Si el consumer existeix com a consumer s'ha s'actualitzar com a pagador i afegir a la familia ell mateix
  2261.                     ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  2262.                     $enConsumers $this->em->getRepository(Consumers::class)->find($response->getContent());
  2263.                     if ($enConsumers->GetTipus() == 'Consumer')
  2264.                     {
  2265.                         $aDadesUpdate = array(
  2266.                             'iIdEntorno'    => $enConsumers->getId(),
  2267.                             'ConsumerIdProj'=> $enConsumers->getCustomerIdProj(),
  2268.                             'ConsumerIdPos' => $enConsumers->getCustomerIdPos(),
  2269.                             'ConsumerIdNum' => $enConsumers->getCustomerIdNum()
  2270.                         );
  2271.                     } else {
  2272.                         $enConsumers = new Consumers();
  2273.                     }
  2274.                 }
  2275.                 $jsonResposta $this->forward('App\Controller\WebServicesController::checkConsumersAmbEmailAxessAction', array(
  2276.                     'aDades' => $aRequest->all()
  2277.                 ));
  2278.                 //$objWebServicesController = new WebServicesController($this->em,$this->requestStack,$this->params);
  2279.                 //$objWebServicesController->setEnviroments($this->getParameter('kernel.environment'));
  2280.                 //$jsonResposta = $objWebServicesController->checkConsumersAmbEmailAxessAction($aRequest->all());
  2281.                 $aResposta json_decode($jsonResposta->getContent(), true);
  2282.                 $aNoValidacionsDe = array();
  2283.                 if ($aResposta['error']['ConnexioAxess']
  2284.                     && $aResposta['error']['ConsumerExistsAxess'])
  2285.                 {
  2286.                     $aDadesUpdate = array(  
  2287.                         'iIdEntorno'        => NULL,
  2288.                         'ConsumerIdProj'    =>  $aResposta['idAxess']['ConsumerIdProj'],
  2289.                         'ConsumerIdPos'     => $aResposta['idAxess']['ConsumerIdPos'],
  2290.                         'ConsumerIdNum'     => $aResposta['idAxess']['ConsumerIdNum'],
  2291.                     );
  2292.                     //////////////////////////////
  2293.                     /// No em de comprovar l'email
  2294.                     //////////////////////////////
  2295.                     $aNoValidacionsDe = array('EmailClientExists');
  2296.                 }
  2297.                 $jsonResposta $this->forward('App\Controller\WebServicesController::altaModificacioConsumersAxessAction', array(
  2298.                     'aDades'            => $aRequest->all(),
  2299.                     'aNoValidacionsDe'  => $aNoValidacionsDe,
  2300.                     'aDadesUpdate'      => $aDadesUpdate));
  2301.                 //$objWebServicesController = new WebServicesController($this->em,$this->requestStack,$this->params);
  2302.                 //$objWebServicesController->setEnviroments($this->getParameter('kernel.environment'));
  2303.                 //$jsonResposta = $objWebServicesController->altaModificacioConsumersAxessAction($aRequest->all(),$aNoValidacionsDe,$aDadesUpdate);
  2304.                 $aResposta json_decode($jsonResposta->getContent(), true);
  2305.                 if ($aResposta['error']['AltaModificacioAxess']) 
  2306.                 {
  2307.                     ///////////////////////////////////////////////
  2308.                     // Si no existeix creem/actualitzem el consumer
  2309.                     ///////////////////////////////////////////////
  2310.                     $enConsumers->setNom($aRequest->get('nom'));
  2311.                     $enConsumers->setCognom1($aRequest->get('cognom1'));
  2312.                     $enConsumers->setCognom2($aRequest->get('cognom2'));
  2313.                     $enConsumers->setDireccio($aRequest->get('direccio'));
  2314.                     $enConsumers->setCp($aRequest->get('cp'));
  2315.                     $enConsumers->setPoblacio($aRequest->get('poblacio'));
  2316.                     $dateTime = new \DateTime();
  2317.                     $enConsumers->setDataNaixement($dateTime->setTimestamp(strtotime($aRequest->get('data_naixement'))));
  2318.                     $enConsumers->setTelefon($aRequest->get('telefon'));
  2319.                     $enConsumers->setEmail($aRequest->get('email'));
  2320.                     $enConsumers->setClau($this->objUtil->texto_aleatorio());
  2321.                     $enConsumers->setDni($aRequest->get('dni'));
  2322.                     $enConsumers->setNomEmpresa($aRequest->get('nom_empresa'));
  2323.                     $enConsumers->setNifEmpresa($aRequest->get('nif_empresa'));
  2324.                     $enConsumers->setDireccioEmpresa($aRequest->get('direccio_empresa'));
  2325.                     $enConsumers->setCpEmpresa($aRequest->get('cp_empresa'));
  2326.                     $enConsumers->setPoblacioEmpresa($aRequest->get('poblacio_empresa'));
  2327.                     $enConsumers->setProvinciaEmpresa($aRequest->get('provincia_empresa'));
  2328.                     $enConsumers->setOrigenEntrada('Alta Entor');
  2329.                     $enConsumers->setTipus('Pagador');
  2330.                     $enConsumers->setCustomerIdProj($aResposta['idAxess']['ConsumerIdProj']);
  2331.                     $enConsumers->setCustomerIdPos($aResposta['idAxess']['ConsumerIdPos']);
  2332.                     $enConsumers->setCustomerIdNum($aResposta['idAxess']['ConsumerIdNum']);
  2333.                     $enConsumers->setResposta4i($aResposta['missatgeAxess']);
  2334.                     $this->em->persist($enConsumers);
  2335.                     $this->em->flush();
  2336.                     $id $enConsumers->getId();
  2337.                     //////////////////////////
  2338.                     // Creem Familia
  2339.                     //////////////////////////
  2340.                     $blRes $this->forward('App\Controller\ConsumersHasConsumersController::addFamiliaAction', array(
  2341.                         'aValues' => array(
  2342.                             'consumers'     => $id,
  2343.                             'consumers_fill'=> $id
  2344.                     )));
  2345.                     ////////////////////////////////////
  2346.                     /// Creem la entrada a la taula RGPD
  2347.                     ////////////////////////////////////
  2348.                     $enRgpd = new Rgpd();
  2349.                     $enRgpd->setTipus('Clients');
  2350.                     if ($aRequest->get('acepto'))
  2351.                     {
  2352.                         $enRgpd->setRgpd(1);
  2353.                         $enRgpd->setCgat(1);
  2354.                     }
  2355.                     //if ($aRequest->get('acepto_cgat')) $enRgpd->setCgat(1);
  2356.                     $dateTime = new \DateTime();
  2357.                     $enRgpd->setData($dateTime->setTimestamp(strtotime(date('d-m-Y H:i:s'))));
  2358.                     $enRgpd->setIp($this->objUtil->getIpConsumer());
  2359.                     $enRgpd->setEmail($aRequest->get('email'));
  2360.                     $enRgpd->setConsumers($enConsumers);
  2361.                     // afegit l'idioma
  2362.                     $enRgpd->setIdioma('ca');
  2363.                     if ($peticion->attributes->has('_locale'))
  2364.                     {
  2365.                         $enRgpd->setIdioma($peticion->attributes->get('_locale'));
  2366.                     }
  2367.                     $this->em->persist($enRgpd);
  2368.                     $this->em->flush();
  2369.                     //////////////////////////////////////////
  2370.                     /// Creem el CustomerAccount
  2371.                     //////////////////////////////////////////
  2372.                     $objWebServicesCustomerAccount = new WebServicesCustomerAccountController();
  2373.                     /////////////////////////////////////////////////////////////////////////////////////
  2374.                     /// Quan la cridem com una clase no te acces al getParameter, així li passem el valor
  2375.                     /////////////////////////////////////////////////////////////////////////////////////
  2376.                     $objWebServicesCustomerAccount->setEnviroments($this->getParameter('kernel.environment'));
  2377.                     $objWebServicesCustomerAccount->setObjContainer($this);
  2378.                     $objWebServicesCustomerAccount->setObjGetMailer($this->phpmailer);
  2379.                     $aElements = array( 'i_nPersProjNo' => $enConsumers->getCustomerIdProj(),
  2380.                                         'i_nPersPosNo'  => $enConsumers->getCustomerIdPos(),
  2381.                                         'i_nPersPersNo' => $enConsumers->getCustomerIdNum(),
  2382.                                         'i_szUserName'  => $enConsumers->getEmail(),
  2383.                                         'i_szPassword'  => $enConsumers->getClau(),
  2384.                                         'i_encryptmail'  => 0,
  2385.                     );
  2386.                     $jsonReturn $objWebServicesCustomerAccount->createCustomerAccount($aElements);
  2387.                     $aReturnCreateCustomerAccount json_decode($jsonReturn->getContent(), true);
  2388.                     if ($aReturnCreateCustomerAccount['error']['CreateCustomerFromPerson'])
  2389.                     {
  2390.                         $enConsumers->setCustomerAccountNo($aReturnCreateCustomerAccount['aCustomerAccount']['NCUSTOMERACCOUNTNO']);
  2391.                         $enConsumers->setValidateHash($aReturnCreateCustomerAccount['aCustomerAccount']['SZVALIDATEHASH']);
  2392.                         $enConsumers->setValidateToken($aReturnCreateCustomerAccount['aCustomerAccount']['SZLOGINTOKEN']);
  2393.                     } else {
  2394.                         ///////////////////////////////////////////////////////////////////////////
  2395.                         // l'Error -3 segurament és per que ja existeix Account per aquest customer
  2396.                         ///////////////////////////////////////////////////////////////////////////
  2397.                         if ($aReturnCreateCustomerAccount['error']['NERRORNO'] != -3)
  2398.                         {
  2399.                             if (!$aReturnCreateCustomerAccount['error']['CreateCustomerFromPerson']) $this->addFlash('warning'"S'ha produit un error de a l'hora de crear el customer account Axess");
  2400.                             if (!$aReturnCreateCustomerAccount['error']['ConnexioConnectAxess']) $this->addFlash('warning'"S'ha produit un error de comunicació amb Axess DCI4ConnectCRM") . ':' $aResposta['error']['SZERRORMESSAGE'];
  2401.                         }
  2402.                     }
  2403.                     $enConsumers->setRespostaDci4Connect(print_r($aReturnCreateCustomerAccount,true));
  2404.                     $this->em->persist($enConsumers);
  2405.                     $this->em->flush();
  2406.                 }
  2407.                 $sMissatgeError '';
  2408.                 if (!$aResposta['error']['ConsumerExistsEntorno']) {
  2409.                     if (!$aResposta['error']['ConsumerExistAxessAmbDiferentDNI']) {
  2410.                         if (!$aResposta['error']['ConsumerExistAxessAmbDiferentEmail']) {
  2411.                             if ($aResposta['error']['AltaModificacioAxess']) {
  2412.                                 if ($aResposta['error']['ConnexioAxess']) {
  2413.                                     if ($aResposta['error']['DniClientExists']) {
  2414.                                         $sMissatgeError "El DNI ja existeix a una altre fitxa de consumer";
  2415.                                     }
  2416.                                 } else {
  2417.                                     $sMissatgeError "S'ha produit un error de comunicació amb Axess";
  2418.                                 }
  2419.                             } else {
  2420.                                 $sMissatgeError "S'ha produit un error de a l'hora de insertar/modificar el consumer a Axess";
  2421.                             }
  2422.                         } else {
  2423.                             $sMissatgeError "El nom, cognoms i data de naixement ja existeix a Axess però amb un altre Email";
  2424.                         }
  2425.                     } else {
  2426.                         $sMissatgeError "El nom, cognoms i data de naixement ja existeix a Axess però amb un altre DNI";
  2427.                     }
  2428.                 } else {
  2429.                     $sMissatgeError "El nom, cognoms i data de naixement ja existeix";
  2430.                 }
  2431.                 ////////////////////////////////////////////////////
  2432.                 // Si existeix comprovem que el DNI no està informat
  2433.                 ////////////////////////////////////////////////////
  2434.                 if ($sMissatgeError != '')
  2435.                 {
  2436.                    $this->session->getFlashBag()->add('error'$this->translator->trans("Hi ha un problema amb les seves dades, si us plau poseu-vos en contacte amb nosaltres"));
  2437.                     $sMissatge '\n\nATENCIÓ HI HA HAGUT UN ERROR.' $sMissatgeError;
  2438.                     $sMissatge .= print_r($aRequesttrue);
  2439.                     if (isset($aResposta)) {
  2440.                         $sMissatge .= print_r($aRespostatrue);
  2441.                     }
  2442.                     $this->phpmailer->EnviarAction(array(
  2443.                         'sMissatge' => $sMissatge,
  2444.                         'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  2445.                         'sTo'       => $this->getParameter('EMAIL_RESERVAS'),
  2446.                         'sCc'       => $this->getParameter('EMAIL_ERRORES'),
  2447.                         'sSubjecte' => "Solicitud de Registre Masella Error"
  2448.                     ));
  2449.                 }
  2450.                 if ($aResposta['error']['AltaModificacioAxess'] === false)
  2451.                 {
  2452.                     $this->requestStack->getCurrentRequest()->getSession()->set('sessConsumer_id''');
  2453.                     $aParam = array('nom'               => $aRequest->get('nom'),
  2454.                                     'cognom1'           => $aRequest->get('cognom1'),
  2455.                                     'cognom2'           => $aRequest->get('cognom2'),
  2456.                                     'direccio'          => $aRequest->get('direccio'),
  2457.                                     'cp'                => $aRequest->get('cp'),
  2458.                                     'poblacio'          => $aRequest->get('poblacio'),
  2459.                                     'data_naixement'    => $aRequest->get('data_naixement'),
  2460.                                     'telefon'           => $aRequest->get('telefon'),
  2461.                                     'email'             => $aRequest->get('email'),
  2462.                                     'dni'               => $aRequest->get('dni'),
  2463.                                     'error'             => true
  2464.                     );
  2465.                     $aParam['nom_empresa'] = $aRequest->get('nom_empresa');
  2466.                     $aParam['nif_empresa'] = $aRequest->get('nif_empresa');
  2467.                     $aParam['direccio_empresa'] = $aRequest->get('direccio_empresa');
  2468.                     $aParam['cp_empresa'] = $aRequest->get('cp_empresa');
  2469.                     $aParam['poblacio_empresa'] = $aRequest->get('poblacio_empresa');
  2470.                     $aParam['factura'] = $aRequest->get('factura');
  2471.                     $sUrl 'abonaments_form_alta_consumer';
  2472. ;
  2473.                     if ($aResposta['error']['DniClientExists']) {
  2474.                        $this->session->getFlashBag()->add('error'$this->translator->trans("El dni ja existeix a la base de dades de clients, logis o posis en contacte amb nosaltres"));
  2475.                     } elseif ( $aResposta['error']['EmailClientExists']) {
  2476.                        $this->session->getFlashBag()->add('error'$this->translator->trans("El email ja existeix a la base de dades de clients, logis o posis en contacte amb nosaltres"));
  2477.                     } elseif ($aResposta['error']['ConsumerExistAxessAmbDiferentEmail']) {
  2478.                        $this->session->getFlashBag()->add('error'$this->translator->trans("Aquest client ja existeix a Masella però amb un altre Email"));
  2479.                     } elseif ( $aResposta['error']['ConsumerExistsEntorno']){
  2480.                        $this->session->getFlashBag()->add('error'$this->translator->trans("Aquest client ja existeix a Masella"));
  2481.                     } else {
  2482.                        $this->session->getFlashBag()->add('error'$this->translator->trans("S'ha produit un error a l'hora de guardar la comanda, torna-ho a prova en uns moment"));
  2483.                     }
  2484.                 } else {
  2485.                     ///////////////////////////////
  2486.                     // Omplim  la sessió del client
  2487.                     ///////////////////////////////
  2488.                     $this->requestStack->getCurrentRequest()->getSession()->set('sessConsumer_id'$id);
  2489.                     ////////////////////////////////////
  2490.                     // Recuperem les dades de la comanda
  2491.                     ////////////////////////////////////
  2492.                     $enComandes $this->em->getRepository(Comandes::class)->find($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
  2493.                     ////////////////////////////////////////////////////////////////////////////////////////////////////////
  2494.                     // Guardem el client per si es no ho si s'ha tingut que registrà a posteriori per ha vist que ja existia
  2495.                     ////////////////////////////////////////////////////////////////////////////////////////////////////////
  2496.                     $enComandes->setConsumers($enConsumers);
  2497.                     $this->em->persist($enComandes);
  2498.                     $this->em->flush();
  2499.                     $enComandes $this->em->getRepository(Comandes::class)->find($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
  2500.                     if ($aRequest->get('newsletter') == 1) {
  2501.                         $aDades['nom'] = $aRequest->get('nom');
  2502.                         //$aDades['cognoms'] = $aRequest->get('cognoms');
  2503.                         $aDades['cognoms'] = $aRequest->get('cognom1') . ' ' $aRequest->get('cognom2');
  2504.                         $aDades['email'] = $aRequest->get('email');
  2505.                         $aDades['adreca'] = $aRequest->get('direccio');
  2506.                         $aDades['poblacio'] = $aRequest->get('poblacio');
  2507.                         $sResp $this->viamailing($aDades);
  2508.                     }
  2509.                     /////////////////////////////
  2510.                     // Enviem les dades al client
  2511.                     /////////////////////////////
  2512.                     $sMissatge $this->translator->trans("DADES D'ACCÉS") . "\n\n";
  2513.                     $sMissatge .= $this->translator->trans("Aquestes sòn les seves dades d'accés, a partir d'ara podrà accedir a l'Àrea de client, i en les següents compres no haurà d'omplir de nou les dades") . "\n";
  2514.                     $sMissatge .= $this->translator->trans("Email: ") . $enConsumers->getEmail() . "\n";
  2515.                     $sMissatge .= $this->translator->trans("Clau: ") . $enConsumers->getClau() . "\n";
  2516.                     $sMissatge .= $this->translator->trans("Per seguretat recomanem canviar la clau.") . "\n";
  2517.                     $this->phpmailer->EnviarAction(array(
  2518.                         'sSubjecte' => "Dades d'accés",
  2519.                         'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  2520.                         'sTo'       => $enConsumers->getEmail(),
  2521.                         //'sCc'       => $this->getParameter('EMAIL_ERRORES'),
  2522.                         'sMissatge' => $sMissatge,
  2523.                     ));
  2524.                     //$sUrl = 'abonaments_insert_comandes_linies';
  2525.                     $sUrl 'abonaments_cistella';
  2526.                 }
  2527.             } else {
  2528.                 $sUrl 'abonaments_form_alta_consumer';
  2529.                $this->session->getFlashBag()->add('error'$this->translator->trans("Hi ha un problema amb les seves dades, si us plau poseu-vos en contacte amb nosaltres"));
  2530.             }
  2531.         } else {
  2532.             $sUrl 'area_privada_dades';
  2533.         }
  2534.         return $this->redirect($this->generateUrl($sUrl$aParam));
  2535.     }
  2536.     public function guardarClientAction(Request $peticion)
  2537.     {
  2538.         $aRequest $peticion->request;
  2539.         $iError 0;
  2540.         $aMissatgeError = array(0   => 'Operació correcte',
  2541.                                 1   => "S'ha produït un error al login, torneu-vos a logar i torneu a realitzar la comanda. Si el problema persisteix poseu-vos en contacte amb nosaltres.",
  2542.                                 2   => "El nom, cognoms i data de naixement ja existeix.",
  2543.                                 3   => "El nom, cognoms i data de naixement ja existeix a Axess però amb un altre DNI",
  2544.                                 7   => "El nom, cognoms i data de naixement ja existeix a Axess però amb un altre Email",
  2545.                                 4   => "El DNI ja existeix a una altre fitxa de consumer",
  2546.                                 5   => "S'ha produït un error a l'hora de guardar la comanda, torna-ho a prova en uns moment",
  2547.                                 6   => "El Nif de la Company ja existeix en una altre company",
  2548.                                 //10  => "S'ha produit un error de comunicació amb Axess"
  2549.                                 10  => "S'ha produït un error a l'hora de guardar la comanda, contacteu amb nosaltres.",
  2550.                                 11  => "S'ha produït un error a l'hora de guardar la comanda, contacteu amb nosaltres."
  2551.         );
  2552.         $aParam = array();
  2553.         if ($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'))
  2554.         {
  2555.             $id $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id');
  2556.             $enConsumers $this->em->getRepository(Consumers::class)->find($id);
  2557.             if ($enConsumers)
  2558.             {
  2559.                 if ($aRequest->get('dadesModificades') == 1)
  2560.                 {
  2561.                     //////////////////////////////
  2562.                     // Comprovació i envar a Axess
  2563.                     //////////////////////////////
  2564.                     $jsonResposta $this->forward('App\Controller\WebServicesController::altaModificacioConsumersAxessAction', array(
  2565.                         'aDades'            => $aRequest->all(),
  2566.                         'aNoValidacionsDe'  => array('EmailClientExists'),
  2567.                         'aDadesUpdate'      => array(
  2568.                             'iIdEntorno'    => $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'),
  2569.                             'ConsumerIdProj'=> $enConsumers->getCustomerIdProj(),
  2570.                             'ConsumerIdPos' => $enConsumers->getCustomerIdPos(),
  2571.                             'ConsumerIdNum' => $enConsumers->getCustomerIdNum(),
  2572.                         )));
  2573.                     /*
  2574.                     $aDadesUpdate = array(
  2575.                         'iIdEntorno'    => $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'),
  2576.                         'ConsumerIdProj'=> $enConsumers->getCustomerIdProj(),
  2577.                         'ConsumerIdPos' => $enConsumers->getCustomerIdPos(),
  2578.                         'ConsumerIdNum' => $enConsumers->getCustomerIdNum(),
  2579.                     );
  2580.                     $objWebServicesController = new WebServicesController($this->em,$this->requestStack,$this->params);
  2581.                     $objWebServicesController->setEnviroments($this->getParameter('kernel.environment'));
  2582.                     $jsonResposta = $objWebServicesController->altaModificacioConsumersAxessAction($aRequest->all(),array('EmailClientExists'),$aDadesUpdate);
  2583.                     */
  2584.                     $aResposta json_decode($jsonResposta->getContent(), true);
  2585.                     if ($aResposta['error']['AltaModificacioAxess'])
  2586.                     {
  2587.                         //////////////////////////////////
  2588.                         // Si te el dni buit s'ha d'omplir
  2589.                         //////////////////////////////////
  2590.                         if ($enConsumers->getDni() == '')
  2591.                         {
  2592.                             $enConsumers->setDni($aRequest->get('dni'));
  2593.                         }
  2594.                         if ($enConsumers->getDireccio() == '') {
  2595.                             $enConsumers->setDireccio($aRequest->get('direccio'));
  2596.                         }
  2597.                         if ($enConsumers->getCp() == '') {
  2598.                             $enConsumers->setCp($aRequest->get('cp'));
  2599.                         }
  2600.                         if ($enConsumers->getPoblacio() == '') {
  2601.                             $enConsumers->setPoblacio($aRequest->get('poblacio'));
  2602.                         }
  2603.                         if ($enConsumers->getTelefon() == '') {
  2604.                             $enConsumers->setTelefon($aRequest->get('telefon'));
  2605.                         }
  2606.                         $sTipusOld $enConsumers->getTipus();
  2607.                         if ($aRequest->has('backend'))
  2608.                         {
  2609.                             $enConsumers->setNom($aRequest->get('nom'));
  2610.                             $enConsumers->setCognom1($aRequest->get('cognom1'));
  2611.                             $enConsumers->setCognom2($aRequest->get('cognom2'));
  2612.                             $dateTime = new \DateTime();
  2613.                             $enConsumers->setDataNaixement($dateTime->setTimestamp(strtotime($aRequest->get('data_naixement'))));
  2614.                             $enConsumers->setTipus('Pagador');
  2615.                             if ($enConsumers->getClau() == '')
  2616.                             {
  2617.                                 $enConsumers->setClau($this->objUtil->texto_aleatorio());
  2618.                             }
  2619.                         }
  2620.                     } else {
  2621.                         $iError 5;
  2622.                         if ($aResposta['error']['ConsumerExistsEntorno']) $iError 2;
  2623.                         if ($aResposta['error']['ConsumerExistAxessAmbDiferentDNI']) $iError 3;
  2624.                         if ($aResposta['error']['ConsumerExistAxessAmbDiferentEmail']) $iError 7;
  2625.                         if ($aResposta['error']['DniClientExists']) $iError 4;
  2626.                         if ($aResposta['error']['ConnexioAxess']) $iError 10;
  2627.                     }
  2628.                 }
  2629.                 if ($iError==0)
  2630.                 {
  2631.                     //if ($aRequest->get('dadesModificadesFacturacio') == 1) {
  2632.                         $enConsumers->setNomEmpresa($aRequest->get('nom_empresa'));
  2633.                         $sPaisIso2 '';
  2634.                         if ($aRequest->get('pai_id') != ''
  2635.                         {
  2636.                             $objPais $this->em->getRepository(Paisos::class)->find($aRequest->get('pai_id'));
  2637.                             if ($objPais)
  2638.                             {
  2639.                                 $enConsumers->setPaiId($objPais);
  2640.                                 $sPaisIso2 $objPais->getIso2();
  2641.                             }
  2642.                         }
  2643.                         $enConsumers->setNifEmpresa($aRequest->get('nif_empresa'));
  2644.                         $enConsumers->setDireccioEmpresa($aRequest->get('direccio_empresa'));
  2645.                         $enConsumers->setCpEmpresa($aRequest->get('cp_empresa'));
  2646.                         $enConsumers->setPoblacioEmpresa($aRequest->get('poblacio_empresa'));
  2647.                         $enConsumers->setProvinciaEmpresa($aRequest->get('provincia_empresa'));
  2648.                         ////////////////////////////////////////////////////////
  2649.                         /// Si trien una companyia per estadistiques de la combo
  2650.                         ////////////////////////////////////////////////////////
  2651.                         if ($aRequest->has('companyia_estadistica')
  2652.                             && $aRequest->get('companyia_estadistica') != '')
  2653.                         {
  2654.                             $aIdCompanyia explode('-'$aRequest->get('companyia_estadistica'));
  2655.                             $enConsumers->setCompanyProjNo($aIdCompanyia[0]);
  2656.                             $enConsumers->setCompanyPosNo($aIdCompanyia[1]);
  2657.                             $enConsumers->setCompanyNum($aIdCompanyia[2]);
  2658.                             $CompanyProjNo $aIdCompanyia[0];
  2659.                             $CompanyPosNo $aIdCompanyia[1];
  2660.                             $CompanyNum $aIdCompanyia[2];
  2661.                         }
  2662.                     //}
  2663.                     if (!$aRequest->has('companyia_estadistica')
  2664.                         || ($aRequest->has('companyia_estadistica')
  2665.                             &&  $aRequest->get('companyia_estadistica') == ''))
  2666.                     {
  2667.                         ///////////////////////////////////////////////////////////////////////////////////////////
  2668.                         /// Si es demana dades de facturació i no tenen els id D'axess o s'ha modificat alguna dada
  2669.                         /// busquem si existeix a la base de dades de masella
  2670.                         ///////////////////////////////////////////////////////////////////////////////////////////
  2671.                         $CompanyProjNo $enConsumers->getCompanyProjNo();
  2672.                         $CompanyPosNo $enConsumers->getCompanyPosNo();
  2673.                         $CompanyNum $enConsumers->getCompanyNum();
  2674.                         if ($aRequest->get('factura') == 1
  2675.                             && ($enConsumers->getCompanyProjNo() == ''
  2676.                                 || $enConsumers->getCompanyPosNo() == ''
  2677.                                 || $enConsumers->getCompanyNum() == ''
  2678.                                 || $aRequest->get('dadesModificadesFacturacio') == 1
  2679.                             ))
  2680.                         {
  2681.                             $aElements = array(
  2682.                                 'nom_empresa'       => $aRequest->get('nom_empresa'),
  2683.                                 'pai_id'            => $sPaisIso2,
  2684.                                 'nif_empresa'       => $aRequest->get('nif_empresa'),
  2685.                                 'direccio_empresa'  => $aRequest->get('direccio_empresa'),
  2686.                                 'cp_empresa'        => $aRequest->get('cp_empresa'),
  2687.                                 'poblacio_empresa'  => $aRequest->get('poblacio_empresa'),
  2688.                                 'provincia_empresa' => $aRequest->get('provincia_empresa')
  2689.                             );
  2690.                             $aDadesUpdate = array();
  2691.                             $objWebServicesCompany = new WebServicesCompanyController();
  2692.                             /////////////////////////////////////////////////////////////////////////////////////
  2693.                             /// Quan la cridem com una clase no te acces al getParameter, així li passem el valor
  2694.                             /////////////////////////////////////////////////////////////////////////////////////
  2695.                             $objWebServicesCompany->setEnviroments($this->getParameter('kernel.environment'));
  2696.                             $objWebServicesCompany->setObjContainer($this);
  2697.                             $objWebServicesCompany->setObjGetMailer($this->phpmailer);
  2698.                             $jsonResposta $objWebServicesCompany->altaModificacioCompanyAxessAction($aElements, array(''), $aDadesUpdate);
  2699.                             /*
  2700.                             $jsonResposta = $this->forward('App\Controller\WebServicesCompanyController::altaModificacioCompanyAxessAction', array(
  2701.                                 'aDades'            => $aElements,
  2702.                                 'aNoValidacionsDe'  => array(''),
  2703.                                 'aDadesUpdate'      => $aDadesUpdate
  2704.                             ));
  2705.                             */
  2706.                             //dump ($jsonResposta);
  2707.                             $aResposta json_decode($jsonResposta->getContent(), true);
  2708.                             if ($aResposta['error']['AltaModificacioAxess'])
  2709.                             {
  2710.                                 $enConsumers->setCompanyProjNo($aResposta['idAxess']['NCOMPANYPROJNR']);
  2711.                                 $enConsumers->setCompanyPosNo($aResposta['idAxess']['NCOMPANYPOSNR']);
  2712.                                 $enConsumers->setCompanyNum($aResposta['idAxess']['NCOMPANYNR']);
  2713.                                 $CompanyProjNo $aResposta['idAxess']['NCOMPANYPROJNR'];
  2714.                                 $CompanyPosNo $aResposta['idAxess']['NCOMPANYPOSNR'];
  2715.                                 $CompanyNum $aResposta['idAxess']['NCOMPANYNR'];
  2716.                             } else {
  2717.                                 $iError 5;
  2718.                                 if ($aResposta['error']['NifCompanyExists']) $iError 6;
  2719.                                 if (!$aResposta['error']['ConnexioAxess']) $iError 10;
  2720.                                 if (!$aResposta['error']['ConnexioSQLSelver']) $iError 11;
  2721.                             }
  2722.                         }
  2723.                     }
  2724.                     if ($aRequest->get('dadesModificades') == 1
  2725.                         || $aRequest->get('dadesModificadesFacturacio') == 1)
  2726.                     {
  2727.                         $this->em->persist($enConsumers);
  2728.                         $this->em->flush();
  2729.                         if ($aRequest->get('dadesModificades') == 1)
  2730.                         {
  2731.                             //////////////////////////////////////////
  2732.                             /// Si és pagador creem el CustomerAccount
  2733.                             //////////////////////////////////////////
  2734.                             if ($enConsumers->getTipus() == 'Pagador'
  2735.                                 && $sTipusOld == 'Consumer')
  2736.                             {
  2737.                                 //*****************
  2738.                                 $objWebServicesCustomerAccount = new WebServicesCustomerAccountController();
  2739.                                 /////////////////////////////////////////////////////////////////////////////////////
  2740.                                 /// Quan la cridem com una clase no te acces al getParameter, així li passem el valor
  2741.                                 /////////////////////////////////////////////////////////////////////////////////////
  2742.                                 $objWebServicesCustomerAccount->setEnviroments($this->getParameter('kernel.environment'));
  2743.                                 $objWebServicesCustomerAccount->setObjContainer($this);
  2744.                                 $objWebServicesCustomerAccount->setObjGetMailer($this->phpmailer);
  2745.                                 $aElements = array(
  2746.                                     'i_nPersProjNo' => $enConsumers->getCustomerIdProj(),
  2747.                                     'i_nPersPosNo'  => $enConsumers->getCustomerIdPos(),
  2748.                                     'i_nPersPersNo' => $enConsumers->getCustomerIdNum(),
  2749.                                     'i_szUserName'  => $enConsumers->getEmail(),
  2750.                                     'i_szPassword'  => $enConsumers->getClau(),
  2751.                                     'i_encryptmail'  => 0,
  2752.                                 );
  2753.                                 $jsonReturn $objWebServicesCustomerAccount->createCustomerAccount($aElements);
  2754.                                 $aReturnCreateCustomerAccount json_decode($jsonReturn->getContent(), true);
  2755.                                 if ($aReturnCreateCustomerAccount['error']['CreateCustomerFromPerson'])
  2756.                                 {
  2757.                                     $enConsumers->setCustomerAccountNo($aReturnCreateCustomerAccount['aCustomerAccount']['NCUSTOMERACCOUNTNO']);
  2758.                                     $enConsumers->setValidateHash($aReturnCreateCustomerAccount['aCustomerAccount']['SZVALIDATEHASH']);
  2759.                                     $enConsumers->setValidateToken($aReturnCreateCustomerAccount['aCustomerAccount']['SZLOGINTOKEN']);
  2760.                                 } else {
  2761.                                     ///////////////////////////////////////////////////////////////////////////
  2762.                                     // l'Error -3 segurament és per que ja existeix Account per aquest customer
  2763.                                     ///////////////////////////////////////////////////////////////////////////
  2764.                                     if ($aReturnCreateCustomerAccount['error']['NERRORNO'] != -3)
  2765.                                     {
  2766.                                         if (!$aReturnCreateCustomerAccount['error']['CreateCustomerFromPerson']) $this->addFlash('warning'"S'ha produit un error de a l'hora de crear el customer account Axess");
  2767.                                         if (!$aReturnCreateCustomerAccount['error']['ConnexioConnectAxess']) $this->addFlash('warning'"S'ha produit un error de comunicació amb Axess DCI4ConnectCRM") . ':' $aResposta['error']['SZERRORMESSAGE'];
  2768.                                     }
  2769.                                 }
  2770.                                 $enConsumers->setRespostaDci4Connect(print_r($aReturnCreateCustomerAccount,true));
  2771.                                 $this->em->persist($enConsumers);
  2772.                                 $this->em->flush();
  2773.                             }
  2774.                         }
  2775.                     }
  2776.                     if ($aRequest->get('acepto') == 1)
  2777.                     {
  2778.                         $id $enConsumers->getId();
  2779.                         $enRgpd = new Rgpd();
  2780.                         $enRgpd->setTipus('Clients');
  2781.                         if ($aRequest->get('acepto'))
  2782.                         {
  2783.                             $enRgpd->setRgpd(1);
  2784.                             $enRgpd->setCgat(1);
  2785.                         }
  2786.                         //if ($aRequest->get('acepto_cgat')) $enRgpd->setCgat(1);
  2787.                         if ($aRequest->get('newsletter')) $enRgpd->setNewsletter(1);
  2788.                         // afegit l'idioma
  2789.                         if ($peticion->attributes->has('_locale'))
  2790.                         {
  2791.                             $enRgpd->setIdioma($peticion->attributes->get('_locale'));
  2792.                         }
  2793.                         $dateTime = new \DateTime();
  2794.                         $enRgpd->setData($dateTime->setTimestamp(strtotime(date('d-m-Y H:i:s'))));
  2795.                         $enRgpd->setIp($this->objUtil->getIpConsumer());
  2796.                         $enRgpd->setEmail($enConsumers->getEmail());
  2797.                         $enRgpd->setConsumers($enConsumers);
  2798.                         $this->em->persist($enRgpd);
  2799.                         $this->em->flush();
  2800.                     }
  2801.                     if ($aRequest->get('newsletter') == 1)
  2802.                     {
  2803.                         $aDades['nom'] = $aRequest->get('nom');
  2804.                         $aDades['cognoms'] = $aRequest->get('cognom1') . ' ' $aRequest->get('cognom2');
  2805.                         $aDades['email'] = $aRequest->get('email');
  2806.                         $aDades['adreca'] = $aRequest->get('direccio');
  2807.                         $aDades['poblacio'] = $aRequest->get('poblacio');
  2808.                         $sResp $this->viamailing($aDades);
  2809.                     }
  2810.                     /////////////////////////////////////////////
  2811.                     /// Guardem si el client vol rebre newletters
  2812.                     /// !!! SEMBLA QUR NO ÉS EL MÈTODE CORRECTE !!! PENDENT DE QUE AXESS ENS DIGUI QUELCOM
  2813.                     /////////////////////////////////////////////
  2814.                     /*
  2815.                     $aElements = array( 'BMARKETING'                => ($aRequest->get('newsletter') == 1 ? '-1' : '0'),
  2816.                                         'BRETRANSMISSION3RDPARTY'   => 0,
  2817.                                         'BSTORAGE'                  => ($aRequest->get('acepto') == 1 ? '-1' : '0'),
  2818.                                         'BTRANSACTRETRANSMISSION'   => 0,
  2819.                                         'NPERSPOSNO'                => $enConsumers->getCustomerIdPos(),
  2820.                                         'NPERSNO'                   => $enConsumers->getCustomerIdNum(),
  2821.                                         'NPERSPROJNO'               => $enConsumers->getCustomerIdProj());
  2822.                     $jsonReturn = $this->forward('App\Controller\WebServicesController::marcaNewsletteriAcceptacio', array(
  2823.                         'aElements'         => $aElements,
  2824.                     ));
  2825.                     $aReturn = json_decode($jsonReturn->getContent(), true);
  2826.                     /////////////////////////////////////////////////////////////////////////
  2827.                     /// TODO: que fem si dona error, de moment s'envia un mail i continua....
  2828.                     /////////////////////////////////////////////////////////////////////////
  2829.                     */
  2830.                     $enComandes $this->em->getRepository(Comandes::class)->find($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
  2831.                     ////////////////////////////////////
  2832.                     // Si ve del backend (del formulari)
  2833.                     ////////////////////////////////////
  2834.                     if ($aRequest->has('backend'))
  2835.                     {
  2836.                         //$enComandes->setObservacionsPagament($aRequest->get('observacions_pagament'));
  2837.                         $enComandes->setPagamentTargeta($aRequest->get('pagament_targeta'));
  2838.                         $enComandes->setPagamentEfectiu($aRequest->get('pagament_efectiu'));
  2839.                         $enComandes->setCodiDescompte($aRequest->get('codi_descompte'));
  2840.                         $enComandes->setDescompte($aRequest->get('descompte'));
  2841.                         $enComandes->setObservacionsInternas($aRequest->get('observacions_internas'));
  2842.                         $enComandes->setFirmaCodi($aRequest->get('firma_codi'));
  2843.                         $enComandes->setTipusClient($aRequest->get('tipus_client'));
  2844.                         $enComandes->setEstat(1);
  2845.                     } else {
  2846.                         $enComandes->setLlocVenda('Web');
  2847.                     }
  2848.                     $enComandes->setFormaPagament($aRequest->get('forma_pagament'));
  2849.                     $enComandes->setNomEmpresa($aRequest->get('nom_empresa'));
  2850.                     $enComandes->setNifEmpresa($aRequest->get('nif_empresa'));
  2851.                     $enComandes->setDireccioEmpresa($aRequest->get('direccio_empresa'));
  2852.                     $enComandes->setCpEmpresa($aRequest->get('cp_empresa'));
  2853.                     $enComandes->setPoblacioEmpresa($aRequest->get('poblacio_empresa'));
  2854.                     $enComandes->setProvinciaEmpresa($aRequest->get('provincia_empresa'));
  2855.                     if ($aRequest->get('pai_id') != '')
  2856.                     {
  2857.                         $objPais $this->em->getRepository(Paisos::class)->find($aRequest->get('pai_id'));
  2858.                         if ($objPais)
  2859.                         {
  2860.                             $enComandes->setPaiIdEmpresa($objPais);
  2861.                         }
  2862.                     }
  2863.                     $enComandes->setFactura($aRequest->get('factura'));
  2864.                     if ($aRequest->get('factura') == 1)
  2865.                     {
  2866.                         $enComandes->setCompanyProjNo($CompanyProjNo);
  2867.                         $enComandes->setCompanyPosNo($CompanyPosNo);
  2868.                         $enComandes->setCompanyNum($CompanyNum);
  2869.                     }
  2870.                     $this->em->persist($enComandes);
  2871.                     $this->em->flush();
  2872.                     if ($aRequest->has('backend'))
  2873.                     {
  2874.                         ////////////////////////////
  2875.                         // Insertem informació a log
  2876.                         ////////////////////////////
  2877.                         $this->objUtil->logAction($peticion$this->getUser());
  2878.                         $sUrl 'backend_formulario_fitxa';
  2879.                     } else {
  2880.                         if ($aRequest->get('forma_pagament') == 'Transferencia')
  2881.                         {
  2882.                             $sUrl 'abonaments_transferencia';
  2883.                         } else {
  2884.                             $sUrl 'abonaments_enviar_tpv';
  2885.                         }
  2886.                     }
  2887.                 }
  2888.             } else {
  2889.                 $iError 1;
  2890.             }
  2891.         } else {
  2892.             $iError 1;
  2893.         }
  2894.         if ($iError != 0)
  2895.         {
  2896.             $sMissatge 'ATENCIÓ HI HA HAGUT UN ERROR' "\n\n";
  2897.             $sMissatge .= 'controller/AbonamentsController function guardarClientAction' "\n\n";
  2898.             $sMissatge .= (isset($aResposta)?print_r($aRespostatrue):'') . ' Error code:' $iError "\n\n";
  2899.             $sMissatge .= print_r($aRequest->all(), true) . "\n\n";
  2900.             $sMissatge .= 'Id comanda: ' $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id');
  2901.             $this->phpmailer->EnviarAction(array(
  2902.                 'sSubjecte' => "Solicitud de Registre Masella Error",
  2903.                 'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  2904.                 'sTo'       => $this->getParameter('EMAIL_RESERVAS'),
  2905.                 'sCc'       => $this->getParameter('EMAIL_ERRORES'),
  2906.                 'sMissatge' => $sMissatge,
  2907.             ));
  2908.             $aParam = array(    'nom'           => $aRequest->get('nom'),
  2909.                                 'cognom1'       => $aRequest->get('cognom1'),
  2910.                                 'cognom2'       => $aRequest->get('cognom2'),
  2911.                                 'direccio'      => $aRequest->get('direccio'),
  2912.                                 'cp'            => $aRequest->get('cp'),
  2913.                                 'poblacio'      => $aRequest->get('poblacio'),
  2914.                                 'datanaixement' => $aRequest->get('datanaixement'),
  2915.                                 'telefon'       => $aRequest->get('telefon'),
  2916.                                 'email'         => $aRequest->get('email'),
  2917.                                 'dni'           => $aRequest->get('dni'),
  2918.                                 'error'         => true
  2919.             );
  2920.             $aParam['nom_empresa'] = $aRequest->get('nom_empresa');
  2921.             $aParam['nif_empresa'] = $aRequest->get('nif_empresa');
  2922.             $aParam['direccio_empresa'] = $aRequest->get('direccio_empresa');
  2923.             $aParam['cp_empresa'] = $aRequest->get('cp_empresa');
  2924.             $aParam['poblacio_empresa'] = $aRequest->get('poblacio_empresa');
  2925.             $aParam['factura'] = $aRequest->get('factura');
  2926.             if ($aRequest->has('backend'))
  2927.             {
  2928.                 //$aParam['forma_pagament'] = $aRequest->get('forma_pagament');
  2929.                 //$aParam['observacions_pagament'] = $aRequest->get('observacions_pagament');
  2930.                 //$aParam['pagament_targeta'] = $aRequest->get('pagament_targeta');
  2931.                 //$aParam['pagament_efectiu'] = $aRequest->get('pagament_efectiu');
  2932.                 //$aParam['codi_descompte'] = $aRequest->get('codi_descompte');
  2933.                 //$aParam['descompte'] = $aRequest->get('descompte');
  2934.                 $aParam['observacions_internas'] = $aRequest->get('observacions_internas');
  2935.                 //$aParam['firma_codi'] = $aRequest->get('firma_codi');
  2936.                 $aParam['backend'] = 1;
  2937.             }
  2938.             if ($aRequest->has('backend')) {
  2939.                 $sUrl 'backend_comandes_comprovar_dades';
  2940.             } else {
  2941.                 $sUrl 'comandes_comprovar_dades';
  2942.             }
  2943.            $this->session->getFlashBag()->add('error'$this->translator->trans($aMissatgeError[$iError]));
  2944.         }
  2945.         return $this->redirect($this->generateUrl($sUrl$aParam));
  2946.     }
  2947.     public function viamailing($aDades)
  2948.     {
  2949.         $sURL $this->getParameter('URL_NEWSLETTER');
  2950.         
  2951.         $sXML "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
  2952.             <command>
  2953.                 <data>
  2954.                     <nombre>" utf8_encode($aDades['nom']) . "</nombre>
  2955.                     <apellidos>" utf8_encode($aDades['cognoms']) . "</apellidos>
  2956.                     <email>" utf8_encode($aDades['email']) . "</email>
  2957.                     <cp></cp>
  2958.                     <direccion>" utf8_encode($aDades['adreca']) . "</direccion>
  2959.                     <poblacion>" utf8_encode($aDades['poblacio']) . "</poblacion>
  2960.                     <provincia></provincia>
  2961.                     <telefono1></telefono1>
  2962.                     <telefono2></telefono2>
  2963.                     <fax></fax>
  2964.                     <pais></pais>
  2965.                     <observaciones>IP: " $this->objUtil->getIpConsumer() . "</observaciones>
  2966.                     <empresa></empresa>
  2967.                     <actualizar>s</actualizar>
  2968.                     <activo>1</activo>
  2969.                 </data>
  2970.         ";
  2971.         $sXML .= "<login>";    
  2972.         $sXML .= "<email_administrador>" $this->getParameter('EMAIL_VIAMAILING') . "</email_administrador>
  2973.                     <password>" $this->getParameter('CLAVE_VIAMAILING') . "</password>";
  2974.         $sXML .= "</login></command>";
  2975.         $sResposta $this->llamada($sXML$sURL);
  2976.          // Enviem de les dades del contacte
  2977.         $sMissatge "SOLICITUD DE REGISTRE\n\n";
  2978.         $sMissatge .= "Nom: " $aDades['nom'] . "\n" ;
  2979.         $sMissatge .= "Cognoms: " $aDades['cognoms'] . "\n" ;
  2980.         $sMissatge .= "Adreça: " $aDades['adreca'] . "\n" ;
  2981.         $sMissatge .= "Població: " $aDades['poblacio'] . "\n" ;
  2982.         $sMissatge .= "E-mail: " $aDades['email'] . "\n" ;
  2983.         $sMissatge .= "Data d'aceptació de condicions: " date('d-m-Y H:i:s') . "\n" ;
  2984.         $sMissatge .= "Ip: " $this->objUtil->getIpConsumer()  . "\n" ;
  2985.         $p xml_parser_create();
  2986.         xml_parse_into_struct($p$sResposta$aVals$aIndex);
  2987.         if ($aVals[2]['value'] != 0
  2988.         {
  2989.             $sMissatge .= '\n\nATENCIÓ HI HA HAGUT UN ERROR ' $aVals[2]['value'] . ', si us plau contacti amb entorno digital';
  2990.             
  2991.             $sMissatge2 print_r($sRespostatrue);
  2992.             $this->phpmailer->EnviarAction(array(
  2993.                 'sSubjecte' => "Solicitud de Registre Masella(viamailig",
  2994.                 'sFrom'     => $this->getParameter('EMAIL_NEWSLETTER'),
  2995.                 'sTo'       => $this->getParameter('EMAIL_ERRORES'),
  2996.                 //'sCc'       => $this->getParameter('EMAIL_ERRORES'),
  2997.                 'sMissatge' => $sMissatge $sMissatge2,
  2998.             ));
  2999.         }
  3000.         $this->phpmailer->EnviarAction(array(
  3001.             'sSubjecte' => "Solicitud de Registre",
  3002.             'sFrom'     => $this->getParameter('EMAIL_NEWSLETTER'),
  3003.             'sTo'       => $this->getParameter('EMAIL_NEWSLETTER'),
  3004.             //'sCc'       => $this->getParameter('EMAIL_ERRORES'),
  3005.             'sMissatge' => $sMissatge,
  3006.         ));
  3007.         return $sMissatge;
  3008.     }
  3009.     
  3010.     function llamada($sSend$sURL$iTimeOut=30
  3011.     {
  3012.         $ch curl_init();
  3013.         curl_setopt($chCURLOPT_URL$sURL);
  3014.         curl_setopt($chCURLOPT_POST1);
  3015.         curl_setopt($chCURLOPT_VERBOSE1);
  3016.         curl_setopt($chCURLOPT_TIMEOUT$iTimeOut);
  3017.         curl_setopt($chCURLOPT_SSL_VERIFYHOST0);
  3018.         curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
  3019.         curl_setopt($chCURLOPT_RETURNTRANSFER1);
  3020.         curl_setopt($chCURLOPT_HTTPHEADER, array("Content-type: text/xml; charset=UTF-8"));
  3021.         curl_setopt($chCURLOPT_POSTFIELDS$sSend);
  3022.         $server_response curl_exec($ch);
  3023.         if (is_null($server_response))
  3024.         {
  3025.             $server_response "Error en la comunicaci&oacute;n con Entorno. Intentelo de nuevo m&aacute;s tarde.";
  3026.         }
  3027.         curl_close ($ch);
  3028.         return ($server_response);
  3029.     }
  3030.     
  3031.     public function enviarTpvAction(Request $peticion)
  3032.     {
  3033.         // TPV sha1
  3034.         $aTpv = array();
  3035.         $aTpv['url'] = $this->getParameter('TPV_DIRECCION_PAGO');
  3036.         $aTpv['Ds_Merchant_Amount'] = number_format($this->_total_cistella() * 100,0,'','');
  3037.         ///////////////////////
  3038.         // Recuperem la comanda
  3039.         ///////////////////////
  3040.         $enComandes $this->em->getRepository(Comandes::class)->find($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
  3041.         $aTpv['Ds_Merchant_Order'] = $enComandes->getLocalitzador();
  3042.         $aTpv['Ds_Merchant_MerchantCode'] = $this->getParameter('TPV_CODIGO_COMERCIO');
  3043.         $aTpv['Ds_Merchant_Currency'] = $this->getParameter('TPV_CURRENCY');
  3044.         $aTpv['Ds_Merchant_TransactionType'] = $this->getParameter('TPV_TIPO_OPERACION');
  3045.         $aTpv['Ds_Merchant_MerchantURL'] = $this->getParameter('TPV_NOTIFICACION');
  3046.         $aTpv['Ds_Merchant_Terminal'] = $this->getParameter('TPV_TERMINAL');
  3047.         $aTpv['Ds_Merchant_UrlOK'] = $this->getParameter('TPV_OK');
  3048.         $aTpv['Ds_Merchant_UrlKO'] = $this->getParameter('TPV_KO');
  3049.         $message $aTpv['Ds_Merchant_Amount'] . $aTpv['Ds_Merchant_Order'] . $this->getParameter('TPV_CODIGO_COMERCIO') . $this->getParameter('TPV_CURRENCY') . $this->getParameter('TPV_TIPO_OPERACION') . $this->getParameter('TPV_NOTIFICACION') . $this->getParameter('TPV_CLAVE');
  3050.         $aTpv['Ds_Merchant_MerchantSignature'] = (sha1($message));
  3051.         $aTpv['Ds_Merchant_MerchantName'] = $this->getParameter('TPV_NOMBRE_COMERCIO');
  3052.         $aTpv['Ds_Merchant_ProductDescription'] = $this->getParameter('TPV_NOMBRE_PRODUCTO');
  3053.         $aTpv['Ds_Merchant_Titular'] = $enComandes->getConsumers();
  3054.         $aTpv['TPV_CLAVE_SHA256'] = $this->getParameter('TPV_CLAVE_SHA256');
  3055.         
  3056.         //////////////////////////////////////
  3057.         // Dades de proves
  3058.         // https://sis-t.redsys.es:25443/sis/realizarPago
  3059.         //////////////////////////////////////
  3060.         if ($_SERVER['SERVER_NAME'] == 'beta.masella.com'
  3061.                 || $_SERVER['SERVER_NAME'] == 'masella015.developer.entorno.es'
  3062.                 || $_SERVER['SERVER_NAME'] == 'dev23.masella.com'
  3063.                 || $_SERVER['SERVER_NAME'] == 'sf6.masella.com'
  3064.                 || $_SERVER['SERVER_NAME'] == 'new.masella.com'
  3065.         )
  3066.         {
  3067.             $aTpv['url'] = 'https://sis-t.redsys.es:25443/sis/realizarPago';
  3068.             $aTpv['Ds_Merchant_MerchantURL'] = 'https://' $_SERVER['SERVER_NAME'] . '/notificacion';
  3069.             $aTpv['Ds_Merchant_UrlOK'] = 'https://' $_SERVER['SERVER_NAME'] . '/retornOk';
  3070.             $aTpv['Ds_Merchant_UrlKO'] = 'https://' $_SERVER['SERVER_NAME'] . '/retornKo';
  3071.             $aTpv['Ds_Merchant_MerchantCode'] = "322005760";
  3072.             $aTpv['Ds_Merchant_Terminal'] = "1";
  3073.             $aTpv['Ds_Merchant_Currency'] = "978";
  3074.             $aTpv['TPV_CLAVE_SHA256'] = "sq7HjrUOBfKmC576ILgskD5srU870gJ7";
  3075.         }
  3076.         switch ($peticion->attributes->get('_locale'))
  3077.         {
  3078.             case 'es'$aTpv['Ds_Merchant_ConsumerLanguage'] = '001'; break;
  3079.             case 'en'$aTpv['Ds_Merchant_ConsumerLanguage'] = '002'; break;
  3080.             case 'ca'$aTpv['Ds_Merchant_ConsumerLanguage'] = '003'; break;
  3081.             case 'fr'$aTpv['Ds_Merchant_ConsumerLanguage'] = '004'; break;
  3082.             case 'pt'$aTpv['Ds_Merchant_ConsumerLanguage'] = '009'; break;
  3083.             default: $aTpv['Ds_Merchant_ConsumerLanguage'] = '001';
  3084.         }
  3085.         
  3086.         // TPV sha256
  3087.         // Se crea Objeto
  3088.             
  3089.             $miObj = new RedsysAPI;
  3090.             // Se Rellenan los campos
  3091.             $miObj->setParameter("DS_MERCHANT_AMOUNT"$aTpv['Ds_Merchant_Amount']);
  3092.             $miObj->setParameter("DS_MERCHANT_ORDER"$aTpv['Ds_Merchant_Order']);
  3093.             $miObj->setParameter("DS_MERCHANT_MERCHANTCODE"$aTpv['Ds_Merchant_MerchantCode']);
  3094.             $miObj->setParameter("DS_MERCHANT_CURRENCY"$aTpv['Ds_Merchant_Currency']);
  3095.             $miObj->setParameter("DS_MERCHANT_TRANSACTIONTYPE"$aTpv['Ds_Merchant_TransactionType']);
  3096.             $miObj->setParameter("DS_MERCHANT_TERMINAL"$aTpv['Ds_Merchant_Terminal']);
  3097.             $miObj->setParameter("DS_MERCHANT_MERCHANTURL"$aTpv['Ds_Merchant_MerchantURL']);
  3098.             $miObj->setParameter("DS_MERCHANT_URLOK"$aTpv['Ds_Merchant_UrlOK']);        
  3099.             $miObj->setParameter("DS_MERCHANT_URLKO"$aTpv['Ds_Merchant_UrlKO']);
  3100.             $miObj->setParameter("DS_MERCHANT_CONSUMERLANGUAGE"$aTpv['Ds_Merchant_ConsumerLanguage']);
  3101.             //$miObj->setParameter("DS_MERCHANT_PAYMETHODS", 'T');
  3102.             $aTpvSHA255 = array();
  3103.             //Datos de configuración
  3104.             $aTpvSHA255['Ds_SignatureVersion'] = "HMAC_SHA256_V1";
  3105.             $kc $aTpv['TPV_CLAVE_SHA256'];//Clave recuperada de CANALES
  3106.             // Se generan los parámetros de la petición
  3107.             $request "";
  3108.             $aTpvSHA255['Ds_MerchantParameters'] = $miObj->createMerchantParameters();
  3109.             $aTpvSHA255['Ds_Signature'] = $miObj->createMerchantSignature($kc);
  3110.             
  3111.             //3DS2
  3112.             /*
  3113.             $aTpvSHA255_3DS2 = new \stdClass();
  3114.             $aTpvSHA255_3DS2->DS_MERCHANT_MERCHANTCODE = $aTpv['Ds_Merchant_MerchantCode'];
  3115.             $aTpvSHA255_3DS2->DS_MERCHANT_TERMINAL = $aTpv['Ds_Merchant_Terminal'];
  3116.             $aTpvSHA255_3DS2->DS_MERCHANT_TRANSACTIONTYPE = $aTpv['Ds_Merchant_TransactionType'];
  3117.             $aTpvSHA255_3DS2->DS_MERCHANT_AMOUNT = $aTpv['Ds_Merchant_Amount'];
  3118.             $aTpvSHA255_3DS2->DS_MERCHANT_CURRENCY = $aTpv['Ds_Merchant_Currency'];
  3119.             $aTpvSHA255_3DS2->DS_MERCHANT_ORDER = $aTpv['Ds_Merchant_Order'];
  3120.             $aTpvSHA255_3DS2->DS_MERCHANT_MERCHANTURL = $aTpv['Ds_Merchant_MerchantURL'];
  3121.             $aTpvSHA255_3DS2->DS_MERCHANT_URLOK = $aTpv['Ds_Merchant_UrlOK'];
  3122.             $aTpvSHA255_3DS2->DS_MERCHANT_URLKO = $aTpv['Ds_Merchant_UrlKO'];
  3123.             $aTpvSHA255_3DS2->DS_MERCHANT_CONSUMERLANGUAGE = $aTpv['Ds_Merchant_ConsumerLanguage'];
  3124.             
  3125.             $datos_3DSecure_v2 = new \stdClass(); 
  3126.             $datos_3DSecure_v2->cardholderName = trim($enComandes->getClients()->getNom() . ' ' . $enComandes->getClients()->getCognom1() . ' ' . $enComandes->getClients()->getCognom2());
  3127.             $datos_3DSecure_v2->Email = $enComandes->getClients()->getEmail();
  3128.             $aTpvSHA255_3DS2->DS_MERCHANT_EMV3DS = $datos_3DSecure_v2;
  3129.             $json_datos_peticion = json_encode($aTpvSHA255_3DS2);
  3130.             // Codificación en Base64 del JSON con los datos de la petición.
  3131.             $json_peticion_codificado = base64_encode($json_datos_peticion);
  3132.             $clave_decodificada = base64_decode($this->getParameter('TPV_CLAVE_SHA256'));
  3133.             if (phpversion()< '7.0')
  3134.             {
  3135.                 // Se establece un IV por defecto 
  3136.                 $bytes = array(0,0,0,0,0,0,0,0);
  3137.                 $iv = implode(array_map("chr", $bytes));
  3138.                 // Se cifra 
  3139.                 $clave_cifrado = mcrypt_encrypt(MCRYPT_3DES, $clave_decodificada, $aTpv['Ds_Merchant_Order'], MCRYPT_MODE_CBC, $iv); 
  3140.             } else {
  3141.                 // Se diversifica la clave con el Número de Pedido y se genera la clave de cifrado. 
  3142.                 $l = ceil(strlen($aTpv['Ds_Merchant_Order']) / 8) * 8; 
  3143.                 // Se cifra 
  3144.                 $clave_cifrado = substr(openssl_encrypt($aTpv['Ds_Merchant_Order'] . str_repeat("\0", $l - strlen($aTpv['Ds_Merchant_Order'])), 'des-ede3-cbc', $clave_decodificada, OPENSSL_RAW_DATA, "\0\0\0\0\0\0\0\0"), 0, $l);
  3145.             }
  3146.             // MAC256 del JSON codificado y la clave de cifrado generada. 
  3147.             $firma = hash_hmac('sha256', $json_peticion_codificado, $clave_cifrado, true);
  3148.             $firma_codificada = base64_encode($firma);
  3149.             
  3150.             $aTpv_3DS2 = array();
  3151.             $aTpv_3DS2['Ds_SignatureVersion'] = "HMAC_SHA256_V1";
  3152.             $aTpv_3DS2['Ds_MerchantParameters'] = $json_peticion_codificado;
  3153.             $aTpv_3DS2['Ds_Signature'] = $firma_codificada;
  3154.             */
  3155.             /*
  3156.             echo 'array<br>';
  3157.             echo '<pre>';
  3158.             print_r($aTpvSHA255_3DS2);
  3159.             echo '</pre>';
  3160.             echo '<br>json_encode<br>';
  3161.             echo $json_datos_peticion;
  3162.             echo '<br>base64_encode<br>';
  3163.             echo $json_peticion_codificado;
  3164.             echo '<br>clay SHA256<br>';
  3165.             echo $this->getParameter('TPV_CLAVE_SHA256');
  3166.             echo '<br>base64_decode tpv clay SHA256<br>';
  3167.             echo $clave_decodificada;
  3168.             echo '<br>clau xifrada (versió php ' . phpversion() . ')<br>';
  3169.             echo $clave_cifrado;
  3170.             echo '<br>firma<br>';
  3171.             echo $firma;
  3172.             echo '<br>Dates enviades per post a https://sis-t.redsys.es:25443/sis/realizarPago<br>';
  3173.             echo '<pre>';
  3174.             print_r($aTpv_3DS2);
  3175.             echo '</pre>';
  3176.             */
  3177.             
  3178.         $this->requestStack->getCurrentRequest()->getSession()->remove('sessCol_id');
  3179.         //$sSHA255 = false;
  3180.         $sSHA255 true;
  3181.         $b3DS2 false;
  3182.         /*
  3183.         if ($_SERVER['REMOTE_ADDR'] == '195.77.190.2'
  3184.             || $_SERVER['REMOTE_ADDR'] != '194.36.123.130'
  3185.                 || $_SERVER['REMOTE_ADDR'] == '192.168.120.104' )
  3186.         {
  3187.             $aTpv['url'] = 'https://sis-t.redsys.es:25443/sis/realizarPago';
  3188.             $b3DS2 = true;
  3189.         }
  3190.          */
  3191.         return $this->render('tpv.html.twig', array(
  3192.             'aTpv'          => $aTpv,
  3193.             'aTpvSHA255'    => $aTpvSHA255,
  3194.             'sSHA255'       => $sSHA255,
  3195.             'b3DS2'         => $b3DS2,
  3196.             //'aTpv_3DS2'     => $aTpv_3DS2
  3197.         ));
  3198.     }
  3199.     public function notificacionAction(Request $peticion)
  3200.     {
  3201.         //////////////////////////////////////
  3202.         // Dades de proves
  3203.         // https://sis-t.redsys.es:25443/sis/realizarPago
  3204.         //////////////////////////////////////
  3205.         $aTpv['TPV_CLAVE_SHA256'] = $this->getParameter('TPV_CLAVE_SHA256');
  3206.         if ($_SERVER['SERVER_NAME'] == 'beta.masella.com'
  3207.             || $_SERVER['SERVER_NAME'] == 'masella015.developer.entorno.es'
  3208.             || $_SERVER['SERVER_NAME'] == 'dev23.masella.com'
  3209.             || $_SERVER['SERVER_NAME'] == 'sf6.masella.com'
  3210.         )
  3211.         {
  3212.             $aTpv['TPV_CLAVE_SHA256'] = "sq7HjrUOBfKmC576ILgskD5srU870gJ7";
  3213.         }
  3214.         $aRequest $peticion->request;
  3215.         $sMissatge 'Dades: ' print_r($aRequest->all(), true);
  3216.         $this->phpmailer->EnviarAction(array(
  3217.             'sSubjecte' => "Masella Dades tpv notificacion",
  3218.             'sFrom'     => $this->getParameter('EMAIL_NEWSLETTER'),
  3219.             'sTo'       => 'jramon@entorno.es',
  3220.             //'sCc'       => $this->getParameter('EMAIL_ERRORES'),
  3221.             'sMissatge' => $sMissatge ' ' $_SERVER['SERVER_NAME'],
  3222.         ));
  3223.         //die ('notificació');
  3224.         // mail('jramon@entorno.es', 'Masella Dades tpv notificacion', 'Dades: ' . print_r($aRequest->all(), true));
  3225.         
  3226.         $bFirmaCorrecta false;
  3227.         if ($aRequest->get("Ds_MerchantParameters"))
  3228.         {
  3229.             //SHA256
  3230.             $miObj = new RedsysAPI;
  3231.             $version $aRequest->get("Ds_SignatureVersion");
  3232.             $datos $aRequest->get("Ds_MerchantParameters");
  3233.             $signatureRecibida $aRequest->get("Ds_Signature");
  3234.             $decodec $miObj->decodeMerchantParameters($datos);    
  3235.             $kc $aTpv['TPV_CLAVE_SHA256']; //Clave recuperada de CANALES
  3236.             $firma $miObj->createMerchantSignatureNotif($kc,$datos);
  3237.             
  3238.             $aRequest->set("Ds_Response"$miObj->getParameter('Ds_Response'));
  3239.             $aRequest->set("Ds_Order"$miObj->getParameter('Ds_Order'));
  3240.             $aRequest->set("Ds_AuthorisationCode"$miObj->getParameter('Ds_AuthorisationCode'));
  3241.                     
  3242.             if ($firma === $signatureRecibida$bFirmaCorrecta true;
  3243.             
  3244.         } else {
  3245.             $message $aRequest->get("Ds_Amount") . $aRequest->get("Ds_Order") . $aRequest->get("Ds_MerchantCode") . $aRequest->get("Ds_Currency") . $aRequest->get("Ds_Response") . $this->getParameter('TPV_CLAVE');
  3246.             $signature sha1($message);
  3247.             if (trim(strtoupper($aRequest->get("Ds_Signature"))) == trim(strtoupper($signature))) $bFirmaCorrecta true;
  3248.         }
  3249.         
  3250.         $respuesta intval($aRequest->get("Ds_Response"));
  3251.         
  3252.         $pedido $aRequest->get("Ds_Order");
  3253.         /*** Dades per fer proves */
  3254.         $blText false;
  3255.         if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
  3256.         {
  3257.             if ($_SERVER['HTTP_X_FORWARDED_FOR'] == '195.77.190.2' 
  3258.                     || $_SERVER['HTTP_X_FORWARDED_FOR'] == '192.168.120.104' )
  3259.             {
  3260.                 echo 'test<br>';
  3261.                 $blText true;
  3262.                 $respuesta 0;
  3263.                 $pedido "ED220739635";
  3264.             }
  3265.         } else {
  3266.             if ($_SERVER['SERVER_NAME'] == 'masella015.developer.entorno.es'
  3267.                 // || $_SERVER['SERVER_NAME'] == 'sf6.masella.com'
  3268.             )
  3269.             {
  3270.                 echo 'test<br>';
  3271.                 $blText true;
  3272.                 $respuesta 0;
  3273.                 $pedido "ED220739635";
  3274.             }
  3275.         }
  3276.         if ($bFirmaCorrecta || $blText)
  3277.         {
  3278.             $pagoOK 0;
  3279.             if ($respuesta >= && $respuesta <= 99)
  3280.             {
  3281.                 $men "- Transacción autorizada para pagos y preautorizaciones";
  3282.                 $men .= "\n- Cod.Autorización: " $aRequest->get("Ds_AuthorisationCode");
  3283.                 $pagoOK 1;
  3284.             }
  3285.             else if ($respuesta == 900)
  3286.                 {
  3287.                     $men "- Transacción autorizada para devoluciones y confirmaciones";
  3288.                     $men .= "\n- Cod.Autorización: " $aRequest->get("Ds_AuthorisationCode");
  3289.                     $pagoOK 1;
  3290.         }
  3291.         else if ($respuesta == 101)
  3292.                     {
  3293.             $men "- Tarjeta caducada";             
  3294.                     }
  3295.                     else if ($respuesta == 102)
  3296.                         {
  3297.                             $men "- Tarjeta en excepción transitoria o bajo sospecha de fraude";
  3298.                         }
  3299.                         else if ($respuesta == 104)
  3300.                             {
  3301.                                 $men "- Operación no permitida para esa tarjeta o terminal";
  3302.                             }        
  3303.                             else if ($respuesta == 116)
  3304.                                 {
  3305.                                     $men "- Disponible insuficiente";
  3306.                                 }
  3307.                                 else if ($respuesta == 118)
  3308.                                     {
  3309.                                         $men "- Tarjeta no registrada";
  3310.                                     }
  3311.                                     else if ($respuesta == 180)
  3312.                                         {
  3313.                                             $men "- Tarjeta ajena al servicio";        
  3314.                                         }
  3315.                                         else if ($respuesta == 184)
  3316.                                             {
  3317.                                                 $men "- Error en la autenticación del titular";
  3318.                                             }
  3319.                                             else if ($respuesta == 190)
  3320.                                                 {
  3321.                                                     $men "- Denegación sin especificar Motivo";         
  3322.                                                 }
  3323.                                                 else if ($respuesta == 191)
  3324.                                                     {
  3325.                                                         $men "- Fecha de caducidad errónea";
  3326.                                                     }
  3327.                                                     else if ($respuesta == 202)
  3328.                                                         {
  3329.                                                             $men "- Tarjeta en excepción transitoria o bajo sospecha de fraude con retirada de tarjeta";
  3330.                                                         }
  3331.                                                         else if ($respuesta == 912 || $respuesta == 9912)
  3332.                                                             {
  3333.                                                                 $men "- Emisor no disponible";
  3334.                                                             }
  3335.                                                             else {
  3336.                                                                 $men "- Transacción denegada [Cod. Respuesta: " $respuesta "]";
  3337.                                                                 // Envio del email - Aviso notificacion Denegada
  3338.                                                                 $Asunto "NOTIFICACIÓN RESERVA MASELLA CANCELADA";
  3339.                                                                 $text "\n\nDs_Order = " $pedido;
  3340.                                                                 $text .= "\n\n- Transacción denegada [Cod. Respuesta: " $respuesta "]";
  3341.                                                                 $De $this->getParameter('EMAIL_RESERVAS');
  3342.                                                                 //mail($this->getParameter('EMAIL_ERRORES'), $Asunto, $text, "FROM: ".$De);
  3343.                                                             }
  3344.             
  3345.             $sObservacionesPedido $men;
  3346.                                                             
  3347.             $enComandesAux $this->em->getRepository(Comandes::class)->findBy(array('localitzador' => $pedido));
  3348.             if (!$enComandesAux)
  3349.             {
  3350.                 mail($this->getParameter('EMAIL_ERRORES'), 'Masella: error al obtener pedido''No se han obtenido los datos del pedido: ' print_r($aRequest->all(), true));
  3351.                 die('Masella: error al obtener pedido');
  3352.             }
  3353.             
  3354.             $enComandes $this->em->getRepository(Comandes::class)->find($enComandesAux[0]->getId());
  3355.             
  3356.             //$enComandes->setObservacions($enClients);
  3357.             //$this->em->persist($enComandes);
  3358.             //$this->em->flush();                                                            
  3359.             if ($pagoOK)
  3360.             {
  3361.                 $bDocumentacioAdjunta false;
  3362.                 $enComandesLinies $this->em->getRepository(ComandesLinies::class)->findBy(array('comandes' => $enComandes->getId()));
  3363.                 if (!$enComandesLinies)
  3364.                 {
  3365.                     mail($this->getParameter('EMAIL_ERRORES'), 'Masella: no hay lineas''Los datos obtenidos en notificacion son: ' print_r($aRequest->all(),true) . '--> Comandes ' $enComandes->getId());
  3366.                     die('Masella: no hay lineas');
  3367.                 }
  3368.                 
  3369.                 foreach ($enComandesLinies as $key => $val)
  3370.                 {
  3371.                     if ($val->getImatge() != '' || $val->getDocumento() != '')
  3372.                     {
  3373.                        $bDocumentacioAdjunta true;
  3374.                        break;
  3375.                     }
  3376.                 }
  3377.                 // El pagament ha estat correcte i possemt l'estat de la comanda a pagat
  3378.                 $enComandes->setObservacions($sObservacionesPedido);
  3379.                 $enComandes->setEstat($this->getParameter('ESTAT_PAGAT'));
  3380.                 $this->em->persist($enComandes);
  3381.                 $this->em->flush();
  3382.                 
  3383.                 ////////////////////////////////////////////////////////
  3384.                 // Marcar el descompte de l'abonat com a utilitzat
  3385.                 ////////////////////////////////////////////////////////
  3386.                 //$this->marcarDescompteUtilitzat($enComandes->getId());
  3387.                 
  3388.                 ////////////
  3389.                 // Greate QR
  3390.                 ////////////    
  3391.                 $sUrlDesti realpath(dirname(__FILE__)) . '/../../public/uploads/comandes/' $enComandes->getLocalitzador() . '.png';
  3392.                 QRcode::png($enComandes->getLocalitzador(),$sUrlDestiQR_ECLEVEL_L4);
  3393.                 $sImageCode 'https://' $_SERVER['SERVER_NAME'] . '/uploads/comandes/' $enComandes->getLocalitzador() . '.png';
  3394.                 // S'envia al mail de reservas
  3395. //                if ((isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !$_SERVER['HTTP_X_FORWARDED_FOR'] == '195.77.190.2'
  3396. //                        && !$_SERVER['HTTP_X_FORWARDED_FOR'] == '192.168.120.104')
  3397. //                        &&  ($_SERVER['SERVER_NAME'] != 'masella015.developer.entorno.es'
  3398. //                        && $_SERVER['SERVER_NAME'] != 'beta.masella.com'))
  3399. //                {
  3400.                 if ($_SERVER['SERVER_NAME'] == 'www.masella.com'
  3401.                     || $_SERVER['SERVER_NAME'] == 'masella.com')
  3402.                 {
  3403.                     $this->phpmailer->EnviarAction(array(
  3404.                         'sSubjecte' => 'ABONAMENT DE TEMPORADA (copia)',
  3405.                         'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  3406.                         'sTo'       => $this->getParameter('EMAIL_RESERVAS'),
  3407.                         //'sCo'       => 'jramon@entorno.es',
  3408.                         'sMissatge' => $this->renderView('plantillaCorreu.html.twig', array(
  3409.                             'enComandes'            => $enComandes,
  3410.                             'enComandesLinies'      => $enComandesLinies,
  3411.                             'bDocumentacioAdjunta'  => $bDocumentacioAdjunta,
  3412.                             'sImageCode'            => $sImageCode
  3413.                         )),
  3414.                     ));
  3415.                 } else {
  3416.                     echo $this->renderView('plantillaCorreu.html.twig', array(
  3417.                         'enComandes'            => $enComandes,
  3418.                         'enComandesLinies'      => $enComandesLinies,
  3419.                         'bDocumentacioAdjunta'  => $bDocumentacioAdjunta,
  3420.                         'sImageCode'            => $sImageCode
  3421.                         ));
  3422.                 }
  3423.                 /////////////////////////////////////////////////////////
  3424.                 // S'envia al mail de client i una copia oculta a entorno
  3425.                 /////////////////////////////////////////////////////////
  3426.                 $this->phpmailer->EnviarAction(array(
  3427.                     'sSubjecte' => 'ABONAMENT DE TEMPORADA',
  3428.                     'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  3429.                     'sTo'       => $enComandes->getConsumers()->getEmail(),
  3430.                     //'sCc'       => $this->getParameter('EMAIL_ERRORES'),
  3431.                     //'sCo'       => 'jramon@entorno.es',
  3432.                     'sMissatge' => $this->renderView('plantillaCorreu.html.twig', array(
  3433.                         'enComandes'            => $enComandes,
  3434.                         'enComandesLinies'      => $enComandesLinies,
  3435.                         'bDocumentacioAdjunta'  => $bDocumentacioAdjunta,
  3436.                         'sImageCode'            => $sImageCode
  3437.                     )),
  3438.                 ));
  3439.                 if ($enComandes->getLlocVenda() == 'WebPromocio')
  3440.                 {
  3441.                     //Generem el pdf
  3442.                     $sName $enComandes->getId() . '_Promocio.pdf';
  3443.                     $sUrlDesti realpath(dirname(__FILE__)) . '/../../public/uploads/promocions/' $sName;
  3444.                     $sUrl 'https://' $_SERVER['SERVER_NAME'] . '/promocio/fitxaPromocions/' $enComandes->getId();
  3445.                     $blah shell_exec("/usr/local/bin/wkhtmltopdf --margin-top 5 --margin-bottom 0 --margin-left 5 --margin-right 5 $sUrl " $sUrlDesti);
  3446.                     
  3447.                     $this->phpmailer->EnviarAction(array(
  3448.                         'sSubjecte' => 'ABONAMENT DE TEMPORADA PROMOCIÓ',
  3449.                         'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  3450.                         'sTo'       => $enComandes->getEmailPromocio(),
  3451.                         'attach'    => $sUrlDesti,
  3452.                         //'sCc'       => $this->getParameter('EMAIL_ERRORES'),
  3453.                         //'sCo'       => 'jramon@entorno.es',
  3454.                         'sMissatge' => $this->renderView('Promocio-email.html.twig', array(
  3455.                             'objComandes'            => $enComandes,
  3456.                             'objComandesLinies'      => $enComandesLinies,
  3457.                         )),
  3458.                     ));
  3459.                 }
  3460.                 //mail ('jramon@entorno.es', 'ABONAMENT DE TEMPORADA', 'abonaments controller');
  3461.                 //mail ('jramon@entorno.es', 'ABONAMENT DE TEMPORADA', print_r($enComandes, true));
  3462.                 //mail ('jramon@entorno.es', 'ABONAMENT DE TEMPORADA', print_r($enComandesLinies,true));
  3463.                 //mail ('jramon@entorno.es', 'ABONAMENT DE TEMPORADA', print_r($bDocumentacioAdjunta,true));
  3464.                 /////////////////////////////////////////
  3465.                 // Enviar a Axess per insertar la comanda
  3466.                 /////////////////////////////////////////
  3467.                 $sUrl 'https://' $_SERVER['SERVER_NAME'] . '/webservicescomandes/wsComandes/' $enComandes->getId();
  3468.                 $sRetornoAxess file_get_contents($sUrl);
  3469.                 $aRetornoAxess explode ('|'$sRetornoAxess);
  3470.                 if ($aRetornoAxess[0] != '0')
  3471.                 {
  3472.                     $sMissatge 'Comanda ' $enComandes->getLocalitzador() . '(' $enComandes->getId() . ')''<br> Error : ' print_r($aRetornoAxess,true);
  3473.                     $this->phpmailer->EnviarAction(array(
  3474.                         'sSubjecte' => 'ABONAMENT DE TEMPORADA: Error al enviar a Axess',
  3475.                         'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  3476.                         'sTo'       => 'jramon@entorno.es',
  3477.                         //'sTo'       => $this->getParameter('EMAIL_NEWSLETTER'),
  3478.                         //'sCc'       => $this->params->get('EMAIL_ERRORES'),
  3479.                         'sMissatge' => $sMissatge,
  3480.                     ));
  3481.                 }
  3482.             } else {
  3483.                 //mail ('jramon@entorno.es', 'AbonamentsController', 'no guarda');
  3484.                 // El pagament no ha estat correcte i possem la comanda a estat anulat
  3485.                 $enComandes->setObservacions($sObservacionesPedido);
  3486.                 $enComandes->setEstat($this->getParameter('ESTAT_ANULAT'));
  3487.                 $this->em->persist($enComandes);
  3488.                 $this->em->flush();
  3489.             }
  3490.         }
  3491.         return new Response('OK');
  3492.     }
  3493.     
  3494.     public function retornOkAction (Request $peticion)
  3495.     {
  3496.         //////////////////////////////////////
  3497.         // Dades de proves
  3498.         // https://sis-t.redsys.es:25443/sis/realizarPago
  3499.         //////////////////////////////////////
  3500.         $aTpv['TPV_CLAVE_SHA256'] = $this->getParameter('TPV_CLAVE_SHA256');
  3501.         if ($_SERVER['SERVER_NAME'] == 'beta.masella.com'
  3502.             || $_SERVER['SERVER_NAME'] == 'masella015.developer.entorno.es'
  3503.             || $_SERVER['SERVER_NAME'] == 'dev23.masella.com'
  3504.             || $_SERVER['SERVER_NAME'] == 'sf6.masella.com'
  3505.             || $_SERVER['SERVER_NAME'] == 'new.masella.com'
  3506.         )
  3507.         {
  3508.             $aTpv['TPV_CLAVE_SHA256'] = "sq7HjrUOBfKmC576ILgskD5srU870gJ7";
  3509.         }
  3510.         $aRequest $peticion->query;
  3511.         
  3512.         //mail('jramon@entorno.es', 'Masella Dades tpv retornOk', 'Dades: ' . print_r($aRequest->all(), true));
  3513.         
  3514.         $bFirmaCorrecta false;
  3515.         if ($aRequest->get("Ds_MerchantParameters"))
  3516.         {
  3517.             //SHA256
  3518.             $miObj = new RedsysAPI;
  3519.             $version $aRequest->get("Ds_SignatureVersion");
  3520.             $datos $aRequest->get("Ds_MerchantParameters");
  3521.             $signatureRecibida $aRequest->get("Ds_Signature");
  3522.             $decodec $miObj->decodeMerchantParameters($datos);    
  3523.             $kc $aTpv['TPV_CLAVE_SHA256']; //Clave recuperada de CANALES
  3524.             $firma $miObj->createMerchantSignatureNotif($kc,$datos);
  3525.             $aRequest->set("Ds_Response"$miObj->getParameter('Ds_Response'));
  3526.             $aRequest->set("Ds_Order"$miObj->getParameter('Ds_Order'));
  3527.             $aRequest->set("Ds_AuthorisationCode"$miObj->getParameter('Ds_AuthorisationCode'));
  3528.             
  3529.             //mail('jramon@entorno.es','tpvok', $firma . "===" . $signatureRecibida);
  3530.             
  3531.             if ($firma === $signatureRecibida$bFirmaCorrecta true;
  3532.         } else {
  3533.             $message $aRequest->get("Ds_Amount") . $aRequest->get("Ds_Order") . $aRequest->get("Ds_MerchantCode") . $aRequest->get("Ds_Currency") . $aRequest->get("Ds_Response") . $this->getParameter('TPV_CLAVE');
  3534.             $signature sha1($message);
  3535.             if (trim(strtoupper($aRequest->get("Ds_Signature"))) == trim(strtoupper($signature))) $bFirmaCorrecta true;
  3536.         }
  3537.         
  3538.         $pedido $aRequest->get("Ds_Order");
  3539.         $blText false;
  3540.         if (array_key_exists('HTTP_X_FORWARDED_FOR'$_SERVER)
  3541.             && ( $_SERVER['HTTP_X_FORWARDED_FOR'] == '195.77.190.2'
  3542.                 || $_SERVER['HTTP_X_FORWARDED_FOR'] == '192.168.120.104') )
  3543.         {
  3544.             //$blText = true;
  3545.             //$bFirmaCorrecta = true;
  3546.             //$pedido = "101914375";
  3547.         }
  3548.         
  3549.         if (!$bFirmaCorrecta)
  3550.         {
  3551.             mail($this->getParameter('EMAIL_ERRORES'), 'Masella: error plana retornOk''La Signature no és correcte: ' print_r($aRequest->all(), true));
  3552.             die();  
  3553.         }
  3554.         
  3555.         $enComandesAux $this->em->getRepository(Comandes::class)->findBy(array('localitzador' => $pedido));
  3556.         if (!$enComandesAux)
  3557.         {
  3558.             mail($this->getParameter('EMAIL_ERRORES'), 'Masella: error al obtener pedido''No se han obtenido los datos del pedido: ' print_r($aRequest->all(), true));
  3559.             die();  
  3560.         }
  3561.         $enComandes $this->em->getRepository(Comandes::class)->find($enComandesAux[0]->getId());
  3562.         $enComandesLinies $this->em->getRepository(ComandesLinies::class)->findBy(array('comandes' => $enComandes->getId()));
  3563.         if (!$enComandesLinies)
  3564.         {
  3565.             mail($this->getParameter('EMAIL_ERRORES'), 'Masella: no hay lineas''Los datos obtenidos en notificacion son: ' print_r($aRequest->all(),true) . '--> Comandes ' $enComandes->getId());
  3566.             die();
  3567.         }
  3568.         
  3569.         $bDocumentacioAdjunta false;
  3570.         
  3571.         foreach ($enComandesLinies as $key => $val)
  3572.         {
  3573.             if ($val->getImatge() != '' ||$val->getDocumento() != '')
  3574.             {
  3575.                $bDocumentacioAdjunta true;
  3576.                break;
  3577.             }
  3578.         }
  3579.         return $this->render('retornOk.html.twig', array(
  3580.             'enComandes'            => $enComandes,
  3581.             'enComandesLinies'      => $enComandesLinies,
  3582.             'bDocumentacioAdjunta'  => $bDocumentacioAdjunta,
  3583.             'enSidebar'             => $this->enSidebar[0],
  3584.             'enGeneral'             => $this->enGeneral,
  3585.             'enSponsors'            => $this->enSponsors
  3586.         ));
  3587.     }
  3588.     public function retornKoAction (Request $peticion)
  3589.     {
  3590.         //////////////////////////////////////
  3591.         // Dades de proves
  3592.         // https://sis-t.redsys.es:25443/sis/realizarPago
  3593.         //////////////////////////////////////
  3594.         $aTpv['TPV_CLAVE_SHA256'] = $this->getParameter('TPV_CLAVE_SHA256');
  3595.         if ($_SERVER['SERVER_NAME'] == 'beta.masella.com'
  3596.             || $_SERVER['SERVER_NAME'] == 'masella015.developer.entorno.es'
  3597.             || $_SERVER['SERVER_NAME'] == 'dev23.masella.com'
  3598.             || $_SERVER['SERVER_NAME'] == 'sf6.masella.com'
  3599.             || $_SERVER['SERVER_NAME'] == 'new.masella.com'
  3600.         )
  3601.         {
  3602.             $aTpv['TPV_CLAVE_SHA256'] = "sq7HjrUOBfKmC576ILgskD5srU870gJ7";
  3603.         }
  3604.         $aRequest $peticion->query;
  3605.         //mail('jramon@entorno.es', 'Masella Dades tpv retornKo', 'Dades: ' . print_r($aRequest->all(), true));
  3606.         
  3607.         $bFirmaCorrecta false;
  3608.         if ($aRequest->get("Ds_MerchantParameters"))
  3609.         {
  3610.             //SHA256
  3611.             $miObj = new RedsysAPI;
  3612.             $version $aRequest->get("Ds_SignatureVersion");
  3613.             $datos $aRequest->get("Ds_MerchantParameters");
  3614.             $signatureRecibida $aRequest->get("Ds_Signature");
  3615.                     
  3616.             $decodec $miObj->decodeMerchantParameters($datos);
  3617.             $kc $aTpv['TPV_CLAVE_SHA256']; //Clave recuperada de CANALES
  3618.             $firma $miObj->createMerchantSignatureNotif($kc,$datos);
  3619.             
  3620.             $aRequest->set("Ds_Response"$miObj->getParameter('Ds_Response'));
  3621.             $aRequest->set("Ds_Order"$miObj->getParameter('Ds_Order'));
  3622.             $aRequest->set("Ds_AuthorisationCode"$miObj->getParameter('Ds_AuthorisationCode'));
  3623.                     
  3624.             if ($firma === $signatureRecibida$bFirmaCorrecta true;
  3625.         } else {
  3626.             $message $aRequest->get("Ds_Amount") . $aRequest->get("Ds_Order") . $aRequest->get("Ds_MerchantCode") . $aRequest->get("Ds_Currency") . $aRequest->get("Ds_Response") . $this->getParameter('TPV_CLAVE');
  3627.             $signature sha1($message);
  3628.             if (trim(strtoupper($aRequest->get("Ds_Signature"))) == trim(strtoupper($signature))) $bFirmaCorrecta true;
  3629.         }
  3630.         
  3631.         $pedido $aRequest->get("Ds_Order");
  3632.         
  3633.         $blText false;
  3634.         /*
  3635.         $pedido = "071510";
  3636.         */
  3637.         if (!$bFirmaCorrecta)
  3638.         {
  3639.             mail($this->getParameter('EMAIL_ERRORES'), 'Masella: error plana retornKO''La Signature no és correcte: ' print_r($aRequest->all(), true));
  3640.             //die();
  3641.         }
  3642.         
  3643.         $enComandesAux $this->em->getRepository(Comandes::class)->findBy(array('localitzador' => $pedido));
  3644.         if (!$enComandesAux)
  3645.         {
  3646.             mail($this->getParameter('EMAIL_ERRORES'), 'Masella: error al obtener pedido''No se han obtenido los datos del pedido: ' print_r($aRequest->all(), true));
  3647.             die();  
  3648.         }
  3649.         
  3650.         $enComandes $this->em->getRepository(Comandes::class)->find($enComandesAux[0]->getId());
  3651.         return $this->render('retornKo.html.twig', array(
  3652.             'enComandes'    => $enComandes,
  3653.             'enSidebar'     => $this->enSidebar[0],
  3654.             'enGeneral'     => $this->enGeneral,
  3655.             'enSponsors'    => $this->enSponsors));
  3656.     }
  3657.     public function  transferenciaAction (Request $peticion)
  3658.     {
  3659.         $aRequest $peticion->query;
  3660.         ////////////////////////////////////////////////////////
  3661.         // Marcar el descompte de l'abonat com a utilitzat
  3662.         ////////////////////////////////////////////////////////
  3663.         $this->marcarDescompteUtilitzat($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
  3664.         
  3665.         $enComandes $this->em->getRepository(Comandes::class)->find($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
  3666.         $enComandesLinies $this->em->getRepository(ComandesLinies::class)->findBy(array('comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')));
  3667.         if (!$enComandesLinies)
  3668.         {
  3669.             mail($this->getParameter('EMAIL_ERRORES'), 'Masella: no hay lineas''Los datos obtenidos en notificacion son: ' print_r($aRequest->all(),true) . '--> Comandes ' $enComandes->getId());
  3670.             die('Masella: no hay lineas');
  3671.         }
  3672.         $bDocumentacioAdjunta false;
  3673.         foreach ($enComandesLinies as $key => $val)
  3674.         {
  3675.             if ($val->getImatge() != ''
  3676.                 || $val->getDocumento() != '')
  3677.             {
  3678.                 $bDocumentacioAdjunta true;
  3679.                 break;
  3680.             }
  3681.         }
  3682.         ////////////
  3683.         // Greate QR
  3684.         ////////////    
  3685.         $sUrlDesti realpath(dirname(__FILE__)) . '/../../public/uploads/comandes/' $enComandes->getLocalitzador() . '.png';
  3686.         QRcode::png($enComandes->getLocalitzador(),$sUrlDestiQR_ECLEVEL_L4);
  3687.         $sImageCode 'https://' $_SERVER['SERVER_NAME'] . '/uploads/comandes/' $enComandes->getLocalitzador() . '.png';
  3688.         // S'envia al mail de reservas
  3689. //        if ((isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !$_SERVER['HTTP_X_FORWARDED_FOR'] == '195.77.190.2'
  3690. //                && !$_SERVER['HTTP_X_FORWARDED_FOR'] == '192.168.120.104')
  3691. //                &&  ($_SERVER['SERVER_NAME'] != 'masella015.developer.entorno.es'
  3692. //                && $_SERVER['SERVER_NAME'] != 'beta.masella.com'
  3693. //                && $_SERVER['SERVER_NAME'] != 'dev23.masella.com'
  3694. //                && $_SERVER['SERVER_NAME'] != 'sf6.masella.com'
  3695. //                && $_SERVER['SERVER_NAME'] != 'new.masella.com'))
  3696. //        {
  3697.         if ($_SERVER['SERVER_NAME'] == 'www.masella.com'
  3698.             || $_SERVER['SERVER_NAME'] == 'masella.com')
  3699.         {
  3700.             $this->phpmailer->EnviarAction(array(
  3701.                 'sSubjecte' => 'ABONAMENT DE TEMPORADA (copia)',
  3702.                 'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  3703.                 'sTo'       => $this->getParameter('EMAIL_RESERVAS'),
  3704.                 //'sTo'       => $this->getParameter('EMAIL_NEWSLETTER'),
  3705.                 //'sCc'       => $this->params->get('EMAIL_ERRORES'),
  3706.                 'sMissatge' => $this->renderView('plantillaCorreu.html.twig', array(
  3707.                     'enComandes'            => $enComandes,
  3708.                     'enComandesLinies'      => $enComandesLinies,
  3709.                     'bDocumentacioAdjunta'  => $bDocumentacioAdjunta,
  3710.                     'sImageCode'            => $sImageCode,
  3711.                     'sTextAddicional'       => $this->translator->trans("L'abonament no serà efectiu fins que s'hagi comprovat la transferència.")
  3712.                 )),
  3713.             ));
  3714.         }
  3715. //        else {
  3716. //            echo $this->renderView('plantillaCorreu.html.twig', array(   'enComandes'            => $enComandes,
  3717. //                                                                                    'enComandesLinies'      => $enComandesLinies,
  3718. //                                                                                    'bDocumentacioAdjunta'  => $bDocumentacioAdjunta,
  3719. //                                                                                    'sImageCode'            => $sImageCode,
  3720. //                                                                                    'sTextAddicional'       => $this->translator->trans("L'abonament no serà efectiu fins que s'hagi comprovat la transferència.")
  3721. //                                                                            ));
  3722. //        }
  3723.         //////////////////////////////////////////////////
  3724.         // S'envia al mail de client i una copia a entorno
  3725.         /////////////////////////////////////////////////
  3726.         $this->phpmailer->EnviarAction(array(
  3727.             'sSubjecte' => 'ABONAMENT DE TEMPORADA',
  3728.             'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  3729.             'sTo'       => $enComandes->getClients()->getEmail(),
  3730.             //'sTo'       => $this->getParameter('EMAIL_NEWSLETTER'),
  3731.             //'sCo'       => 'jramon@entorno.es',
  3732.             'sMissatge' => $this->renderView('plantillaCorreu.html.twig', array(
  3733.                 'enComandes'            => $enComandes,
  3734.                 'enComandesLinies'      => $enComandesLinies,
  3735.                 'bDocumentacioAdjunta'  => $bDocumentacioAdjunta,
  3736.                 'sImageCode'            => $sImageCode,
  3737.                 'sTextAddicional'       => $this->translator->trans("L'abonament no serà efectiu fins que s'hagi comprovat la transferència.")
  3738.             )),
  3739.         ));
  3740.         $this->requestStack->getCurrentRequest()->getSession()->remove('sessCol_id');
  3741.         $this->session->getFlashBag()->add('info'$this->translator->trans("L'abonament no serà efectiu fins que s'hagi comprovat la transferència."));
  3742.         return $this->temporadaAction($peticion);
  3743.         
  3744.         die();
  3745.         
  3746.         $aSort = array(
  3747.             'ordre'      => 'ASC'
  3748.         );
  3749.         $aParam = array(
  3750.             'estacio'   => 'MAS',
  3751.             'familiar'  => 0,
  3752.             'suplement' => 0,
  3753.             'actiu'     => 1
  3754.         );
  3755.         $objAbonaments_mas $this->em->getRepository(Abonaments::class)->findBy($aParam$aSort);
  3756.         
  3757.         $aParam = array(
  3758.             'estacio'   => 'ALP',
  3759.             'familiar'  => 0,
  3760.             'suplement' => 0,
  3761.             'actiu'     => 1
  3762.         );
  3763.         $objAbonaments_alp $this->em->getRepository(Abonaments::class)->findBy($aParam$aSort);
  3764.         return $this->render('abonaments_transferencia.html.twig', array(
  3765.             'enSidebar'         => $this->enSidebar[0],
  3766.             'objAbonaments_mas' => $objAbonaments_mas,
  3767.             'objAbonaments_alp' => $objAbonaments_alp,
  3768.             'enGeneral'         => $this->enGeneral,
  3769.             'enSponsors'        => $this->enSponsors
  3770.         ));
  3771.     }
  3772.     
  3773.     ////////////////////////////////////////////////////////////////////////////
  3774.     // Marca el desconta com a utilitzat d'aquell abonats que ja l'han utilitzat
  3775.     // per no tornar-lo a utilitzar
  3776.     ////////////////////////////////////////////////////////////////////////////
  3777.     /*
  3778.     public function marcarDescompteUtilitzat($IdComanda)
  3779.     {
  3780.         $enComandesLinies = $this->em->getRepository(ComandesLinies::class)->findBy(array('comandes' => $IdComanda));
  3781.         foreach ($enComandesLinies as $val)
  3782.         {
  3783.             if ($val->getTipusDescompte() == 'C')
  3784.             {
  3785.                 ////////////////////////////////
  3786.                 // marcar el descompre utilitzat
  3787.                 ////////////////////////////////
  3788.                 $enAbonats = $this->em->getRepository(Abonats::class)->find($val->getAbonats()->getId());
  3789.                 if ($enAbonats)
  3790.                 {
  3791.                     $enAbonats->setDescompteUtilitzat(1);
  3792.                     $this->em->persist($enAbonats);
  3793.                     $this->em->flush();
  3794.                     //////////////////////////////////////////////
  3795.                     // També marquem tots el clons d'aquest abonat
  3796.                     //////////////////////////////////////////////
  3797.                     $aParam = array('nom'   => $enAbonats->getNom(), 'cognom1'   => $enAbonats->getCognom1(), 'cognom2'    => $enAbonats->getCognom2());
  3798.                     $enAbonatsClons = $this->em->getRepository(Abonats::class)->findBy($aParam);
  3799.                     if ($enAbonatsClons)
  3800.                     {
  3801.                         //dump ($enAbonatsClons);
  3802.                         foreach ($enAbonatsClons as $key => $val)
  3803.                         {
  3804.                             echo ($val->getId());
  3805.                             $enAbonats2 = $this->em->getRepository(Abonats::class)->find($val->getId());
  3806.                             if ($enAbonats2)
  3807.                             {
  3808.                                 $enAbonats2->setDescompteUtilitzat(1);
  3809.                                 $this->em->persist($enAbonats2);
  3810.                                 $this->em->flush();
  3811.                             }
  3812.                         }
  3813.                         
  3814.                     }
  3815.                 }
  3816.             }
  3817.         }
  3818.         //die('stop marcarDescompteUtilitzat');
  3819.     }
  3820.     */
  3821.     public function transferenciaEnviarAction (Request $peticion)
  3822.     {
  3823.         die();
  3824.         $aRequest $peticion->request;
  3825.         
  3826.         $aSort = array(
  3827.             'ordre'      => 'ASC'
  3828.         );
  3829.         $aParam = array(
  3830.             'estacio'   => 'MAS',
  3831.             'familiar'  => 0,
  3832.             'suplement' => 0,
  3833.             'actiu'     => 1);
  3834.         $objAbonaments_mas $this->em->getRepository(Abonaments::class)->findBy($aParam$aSort);
  3835.         
  3836.         $aParam = array(
  3837.             'estacio'   => 'ALP',
  3838.             'familiar'  => 0,
  3839.             'suplement' => 0,
  3840.             'actiu'     => 1);
  3841.         $objAbonaments_alp $this->em->getRepository(Abonaments::class)->findBy($aParam$aSort);
  3842.         
  3843.         if ($aRequest->get("nom") != '')
  3844.         {
  3845.             $this->phpmailer->EnviarAction(array(
  3846.                 'sSubjecte' => 'Abonament per transferencia',
  3847.                 'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  3848.                 'sTo'       => $this->getParameter('EMAIL_RESERVAS'),
  3849.                 //'sTo'       => $this->getParameter('EMAIL_NEWSLETTER'),
  3850.                 //'sCo'       => "jramon@entorno.es",
  3851.                 'sMissatge' => $this->renderView('plantilla_transferencia_abono.html.twig', array(
  3852.                     'aRequest'          => $aRequest,
  3853.                     'objAbonaments_mas' => $objAbonaments_mas,
  3854.                     'objAbonaments_alp' => $objAbonaments_alp
  3855.                 )),
  3856.             ));
  3857.             mail ('jramon@entorno.es''Abonament per transferencia(no autenticat)''Abonament per transferencia controller');
  3858.             mail ('jramon@entorno.es''Abonament per transferencia(no autenticat)'print_r(array(
  3859.                 'aRequest'          => $aRequest,
  3860.                 'objAbonaments_mas' => $objAbonaments_mas,
  3861.                 'objAbonaments_alp' => $objAbonaments_alp
  3862.             ),true));
  3863.             //whether ip is from share internet
  3864.             if (!empty($_SERVER['HTTP_CLIENT_IP']))   
  3865.             {
  3866.                 $ip_address $_SERVER['HTTP_CLIENT_IP'];
  3867.             } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))  
  3868.             {
  3869.                 //whether ip is from proxy
  3870.                 $ip_address $_SERVER['HTTP_X_FORWARDED_FOR'];
  3871.             } else {
  3872.                 //whether ip is from remote address
  3873.                 $ip_address $_SERVER['REMOTE_ADDR'];
  3874.             }
  3875.             
  3876.             $enRgpd = new Rgpd();
  3877.             $enRgpd->setTipus('Transferencia');
  3878.             if ($aRequest->get('acepto')) $enRgpd->setRgpd(1);
  3879.             $dateTime = new \DateTime();
  3880.             $enRgpd->setData($dateTime->setTimestamp(strtotime(date('d-m-Y H:i:s'))));
  3881.             $enRgpd->setIp($ip_address);
  3882.             $enRgpd->setEmail($aRequest->get('mail'));
  3883.             $enRgpd->setClients(null);
  3884.             
  3885.             $this->em->persist($enRgpd);
  3886.             $this->em->flush();
  3887.            $this->session->getFlashBag()->add('info'$this->translator->trans("Les dades s'han enviat correctament"));
  3888.         } else {
  3889.            $this->session->getFlashBag()->add('error'$this->translator->trans("Hi ha hagut un error en el formulari"));
  3890.         }   
  3891.         return $this->temporadaAction($peticion);
  3892.     }
  3893.     
  3894.     public function fitxaAction(Request $peticion)
  3895.     {
  3896.         $aRequest2 $peticion->attributes;
  3897.         $aRequest $peticion->query;
  3898.         $id_comanda $this->objUtil->decrypt($aRequest2->get('id_comanda'), 'enC3419');
  3899.         //////////////////////////////////////////////////////////
  3900.         // Recuperem les línies de la comanda que no són suplement
  3901.         //////////////////////////////////////////////////////////
  3902.         $aParam = array(
  3903.             'comandes'  => $id_comanda,
  3904.             'suplement' => 0
  3905.         );
  3906.         if ($this->session->get('club_esqui') == 1)
  3907.         {
  3908.             $aParam['usuari'] = $this->getUser()->getId();
  3909.         }
  3910.         $objComandesLinies $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
  3911.         ///////////////////////////////////////////////////////
  3912.         // Recuperem les línies de la comanda que són suplement
  3913.         ///////////////////////////////////////////////////////
  3914.         $aParam = array(
  3915.             'comandes'  => $id_comanda,
  3916.             'suplement' => 1
  3917.         );
  3918.         $objComandesLiniesSuplement $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
  3919.         $aSuplements = array();
  3920.         foreach ($objComandesLiniesSuplement as $key => $val)
  3921.         {
  3922.             $aSuplements[] = $val->getRelacionatComandesLinies()->getId() . '-' $val->getId();
  3923.         }
  3924.         $objGeneral $this->em->getRepository(General::class)->findBy(array('id' => 1));
  3925.         $objComandes $this->em->getRepository(Comandes::class)->findBy(array('id' => $id_comanda));
  3926.         $sImageCode '';
  3927.         if ($objComandes)
  3928.         {
  3929.         ////////////
  3930.         // Greate QR
  3931.         ////////////    
  3932.             $sUrlDesti realpath(dirname(__FILE__)) . '/../../public/uploads/comandes/' $objComandes[0]->getLocalitzador() . '.png';
  3933.             QRcode::png($objComandes[0]->getLocalitzador(),$sUrlDestiQR_ECLEVEL_L4);
  3934.             $sImageCode 'https://' $_SERVER['SERVER_NAME'] . '/uploads/comandes/' $objComandes[0]->getLocalitzador() . '.png';
  3935.         }
  3936.         $this->requestStack->getCurrentRequest()->getSession()->set('sessCol_id'$id_comanda);
  3937.         
  3938.         $total_cistella $this->_total_cistella();
  3939.         ///////////////////////////////////////////
  3940.         // Si hi ha error a l'inserció del consumer
  3941.         ///////////////////////////////////////////
  3942.         $blErrorInsertConsumer false;
  3943.         if ($aRequest->get('error') == 1$blErrorInsertConsumer true;
  3944.         $aPost $aRequest->all();
  3945.         ////////////////////////
  3946.         // Recull dades generals
  3947.         ////////////////////////
  3948.         $enGeneral $this->em->getRepository(General::class)->findAll();
  3949.         return $this->render('pdfComanda.html.twig', array(
  3950.             'objComandesLinies'             => $objComandesLinies,
  3951.             'objComandesLiniesSuplement'    => $objComandesLiniesSuplement,
  3952.             'fiOferta'                      => $objGeneral[0]->getDataFiOferta(),
  3953.             'aSuplements'                   => $aSuplements,
  3954.             'total_cistella'                => $total_cistella,
  3955.             'blErrorInsertConsumer'         => $blErrorInsertConsumer,
  3956.             'aPost'                         => $aPost,
  3957.             'enGeneral'                     => $enGeneral[0],
  3958.             'objComandes'                   => $objComandes[0],
  3959.             'objConsumers'                  => $objComandes[0]->getConsumers(),
  3960.             'sImageCode'                    => $sImageCode
  3961.         ));
  3962.     }
  3963. }