src/Controller/AbonamentsController.php line 1071

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