src/Controller/ProcessosController.php line 822

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Controller\CorreuController;
  4. use App\Entity\Abonaments;
  5. use App\Entity\PersonType;
  6. use App\Entity\Consumers;
  7. use App\Entity\ValorsWsAxess;
  8. use App\Entity\Paisos;
  9. use App\Entity\Perfils;
  10. use App\Entity\Rgpd;
  11. use App\Entity\ComandesLinies;
  12. use App\Util\changeSize;
  13. use Doctrine\ORM\EntityManagerInterface;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\HttpFoundation\RequestStack;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  19. use Symfony\Bundle\FrameworkBundle\Controller\Controller;
  20. use Symfony\Component\Mailer\MailerInterface;
  21. use Symfony\Component\Security\Core\Security;
  22. use Symfony\Component\Security\Core\SecurityContext;
  23. use App\Entity\ConsumersHasConsumers;
  24. use App\Controller\WebServicesCustomerAccountController;
  25. use Symfony\Component\Translation\LocaleSwitcher;
  26. class ProcessosController extends AbstractController
  27. {
  28.     var $sBDname;
  29.     //var $sBDname = 'TT_AXESS_MAS_Integracions'; //Real
  30.     //var $sBDname = 'TT_AXESS_MAT_Integracions'; //BETA Copia de Real
  31.     var $sServer '192.168.20.179';
  32.     var $sUserName 'Entorno';
  33.     var $sPassword 'Etn@2537';
  34.     var $sBase;
  35.     private $em;
  36.     private $objUtil;
  37.     private $phpmailer;
  38.     private $sPathUploads;
  39.     public function __construct(EntityManagerInterface $em)
  40.     {
  41.         $this->em $em;
  42.         $this->objUtil = new \App\Util\Util($this->em);
  43.         $this->phpmailer = new CorreuController();
  44.         $this->sPathUploads dirname(__FILE__) . "/../../public/uploads/";
  45.         switch ($_SERVER['SERVER_NAME'])
  46.         {
  47.             case 'masella.com':
  48.             case 'www.masella.com':
  49.             case 'beta.masella.com':
  50.                 $this->sBase '/var/www/vhosts/masella.com/httpdocs/';
  51.                 $this->sBDname 'TT_AXESS_MAS_Integracions'//Real
  52.                 break;
  53.             case 'dev22.masella.com':
  54.                 $this->sBase '/var/www/vhosts/' $_SERVER['SERVER_NAME'] . '/httpdocs/';
  55.                 $this->sBDname 'TT_AXESS_MAS_Integracions'//Real
  56.                 break;
  57.             case 'dev23.masella.com':
  58.             case 'sf6.masella.com':
  59.             case 'new.masella.com':
  60.                 $this->sBase '/var/www/vhosts/' $_SERVER['SERVER_NAME'] . '/httpdocs/';
  61.                 $this->sBDname 'TT_AXESS_MAT_Integracions'//BETA Copia de Real
  62.                 break;
  63.             case 'masella015.developer.entorno.es':
  64.                 $this->sBase '/home/jramon/projects/masella2015/';
  65.                 $this->sBDname 'TT_AXESS_MAT_Integracions'//BETA Copia de Real
  66.                 break;
  67.         }
  68.     }
  69.     public function check_email_sqlserver($sEmail$Consumer_id_Proj null$Consumer_id_Pos null$Consumer_id_Num null$aAux = array())
  70.     {
  71.         /* Connect using Windows Authentication. */
  72.         try {
  73.             $options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
  74.             $conn = new \PDO('sqlsrv:Server=' $this->sServer ';Database=' $this->sBDname ';Encrypt = false;'$this->sUserName$this->sPassword$options);
  75.         } catch (Exception $e) {
  76.             //die(print_r($e->getMessage(), false));
  77.             $bRes $this->phpmailer->EnviarAction(array(
  78.                 'sSubjecte' => 'Error en la connexió amb sqlsrv ',
  79.                 'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  80.                 'sTo'       => $this->getParameter('EMAIL_ERRORES'),
  81.                 'sMissatge' => print_r($e->getMessage(), false),
  82.             ));
  83.         }
  84.         $tsql "SELECT * FROM v_AXESS_CONSUMERS "
  85.                 " WHERE Email = '" $sEmail "'"
  86.                 " AND Actiu = -1";
  87.         if (!is_null($Consumer_id_Proj)
  88.             && !is_null($Consumer_id_Pos)
  89.             && !is_null($Consumer_id_Num))
  90.         {
  91.             $tsql .= " AND NOT (Consumer_id_Proj = " $Consumer_id_Proj;
  92.             $tsql .= " AND Consumer_id_Pos =" $Consumer_id_Pos;
  93.             $tsql .= " AND Consumer_id_Num =" $Consumer_id_Num ")";
  94.         }
  95.         $aResult $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
  96.         if ($aResult)
  97.         {
  98.             /*
  99.             if ($aResult[0]['Email'] != '') {
  100.                 /////////////////////////////////////////////////
  101.                 /// Creem el CustomerAccount si el email existeix
  102.                 /////////////////////////////////////////////////
  103.                 $objWebServicesCustomerAccount = new WebServicesCustomerAccountController();
  104.                 /////////////////////////////////////////////////////////////////////////////////////
  105.                 /// Quan la cridem com una clase no te acces al getParameter, així li passem el valor
  106.                 /////////////////////////////////////////////////////////////////////////////////////
  107.                 $objContainer = $aAux['container'];
  108.                 $objMailer = $aAux['mailer'];
  109.                 $objWebServicesCustomerAccount->setEnviroments($objContainer->getParameter('kernel.environment'));
  110.                 $objWebServicesCustomerAccount->setObjContainer($objContainer);
  111.                 $objWebServicesCustomerAccount->setObjGetMailer($objMailer);
  112.                 $aElements = array('i_nPersProjNo' => $aResult[0]['Consumer_id_Proj'],
  113.                     'i_nPersPosNo' => $aResult[0]['Consumer_id_Pos'],
  114.                     'i_nPersPersNo' => $aResult[0]['Consumer_id_Num'],
  115.                     'i_szUserName' => $aResult[0]['Email'],
  116.                     'i_szPassword' => $aAux['texto_aleatorio'],
  117.                 );
  118.                 $jsonReturn = $objWebServicesCustomerAccount->createCustomerAccount($aElements);
  119.                 $aReturnCreateCustomerAccount = json_decode($jsonReturn->getContent(), true);
  120.                 if ($aReturnCreateCustomerAccount['error']['CreateCustomerFromPerson']) {
  121.                 } else {
  122.                     ///////////////////////////////////////////////////////////////////////////
  123.                     // l'Error -3 segurament és per que ja existeix Account per aquest customer
  124.                     ///////////////////////////////////////////////////////////////////////////
  125.                     if ($aReturnCreateCustomerAccount['error']['NERRORNO'] != -3) {
  126.                         $sMensaje = "Error al crear l'account a ProcessosController" . "\n";
  127.                         $sMensaje .= print_r($aReturnCreateCustomerAccount, true);
  128.                         $this->phpmailer->EnviarAction(array(
  129.                             'sSubjecte' => "Error al crear l'account a ProcessosController",
  130.                             'sFrom'     => $objContainer->getParameter('EMAIL_RESERVAS'),
  131.                             'sTo'       => $objContainer->getParameter('EMAIL_ERRORES'),
  132.                             'sMissatge' => $sMensaje,
  133.                         ));
  134.                     }
  135.                 }
  136.             }
  137.             */
  138.         }
  139.         $iTotal count($aResult);
  140.         return ($iTotal == 0?0:1);
  141.     }
  142.     public function insetPersonTypeindexAction(Request $peticion)
  143.     {
  144.         $aRequest $peticion->request;
  145.         echo 'Inici -> ' date('Y-m-d H:i:s') . '<br>';
  146.         /* Connect using Windows Authentication. */
  147.         try {
  148.             $options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
  149.             $conn = new \PDO('sqlsrv:Server=' $this->sServer ';Database=' $this->sBDname ';Encrypt = false;'$this->sUserName$this->sPassword$options);
  150.         } catch (Exception $e) {
  151.             die(print_r($e->getMessage(), false));
  152.         }
  153.         $tsql "SELECT * FROM V_AXESS_PERSONTYPE";
  154.         echo $tsql;
  155.         $aResult $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
  156.         $iPersonTypeCount count($aResult);
  157.         echo '<br>Total PersonType a carregar:' $iPersonTypeCount '<br>';
  158.         if ($aResult 0
  159.         {
  160.             foreach ($aResult as $row
  161.             {
  162.                 echo '<pre>';
  163.                 print_r($row);
  164.                 echo '</pre>';
  165.                 $aArray = array('id_axess' => $row['PersonType_id']);
  166.                 $enPersonTypeAux $this->em->getRepository(PersonType::class)->findBy($aArray);
  167.                 $enPersonType = array();
  168.                 if ($enPersonTypeAux
  169.                 {
  170.                     $enPersonType $this->em->getRepository(PersonType::class)->find($enPersonTypeAux[0]->getId());
  171.                 }
  172.                 
  173.                 if (!$enPersonType
  174.                 {
  175.                     $enPersonType = new PersonType();
  176.                 }
  177.                 $enPersonType->setIdAxess($row['PersonType_id']);
  178.                 $enPersonType->setNomCa($row['PersonType_desc']);
  179.                 $enPersonType->setNomEn($row['PersonType_desc']);
  180.                 $enPersonType->setNomEs($row['PersonType_desc']);
  181.                 $enPersonType->setNomFr($row['PersonType_desc']);
  182.                 $enPersonType->setNomPt($row['PersonType_desc']);
  183.                 $enPersonType->setIdGeneral(intval($row['PersonType_General_id']));
  184.                 $enPersonType->setNomGeneralCa($row['PersonType_General_desc']);
  185.                 $enPersonType->setNomGeneralEn($row['PersonType_General_desc']);
  186.                 $enPersonType->setNomGeneralEs($row['PersonType_General_desc']);
  187.                 $enPersonType->setNomGeneralFr($row['PersonType_General_desc']);
  188.                 $enPersonType->setNomGeneralPt($row['PersonType_General_desc']);
  189.                 //$enPersonType->setNomGeneralPt('hlhlhl');
  190.                 $this->em->persist($enPersonType);
  191.                 $this->em->flush();
  192.             }
  193.         }
  194.         echo '<br>Fi -> ' date('Y-m-d H:i:s');
  195.         return new Response('Finalitzat');
  196.     }
  197.     /**
  198.      * Updates "Abonaments" entities with data imported from an external source,
  199.      * while deactivating old records and inserting or updating new ones based on input data.
  200.      *
  201.      * This method connects to an external SQL Server database using Windows Authentication,
  202.      * fetches external data, and processes each record to either create a new entity or update an existing one.
  203.      *
  204.      * @param Request $peticion The HTTP request triggering the update process.
  205.      *
  206.      * @throws \PDOException If an error occurs while connecting to the external database.
  207.      * @throws \Exception Any unexpected exception during the process.
  208.      */
  209.     public function insetUpdateTarifasAction(Request $peticion)
  210.     {
  211.         echo 'Inici -> ' date('Y-m-d H:i:s') . '<br>';
  212.         /* Connect using Windows Authentication. */
  213.         try {
  214.             $options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
  215.             $conn = new \PDO('sqlsrv:Server=' $this->sServer ';Database=' $this->sBDname ';Encrypt = false;'$this->sUserName$this->sPassword$options);
  216.         } catch (Exception $e) {
  217.             die(print_r($e->getMessage(), false));
  218.         }
  219.         ////////////////////////////////////////////////////////////////////////////////////
  220.         /// Desactivem els abonaments per posteriorment activar els que venen de la migració
  221.         ////////////////////////////////////////////////////////////////////////////////////
  222.          $sQuery =   "UPDATE App:Abonaments abo SET "
  223.                     " abo.actiu = :actiu";
  224.         $query $this->em->createQuery($sQuery)
  225.             ->setParameter('actiu'0);
  226.         $enAbonaments $query->getResult();
  227.         $tsql "SELECT * FROM V_ENTORNO_PREUS ORDER BY Pool_id ASC, TicketType_id ASC, PersonType_General_id ASC ";
  228.         //echo $tsql;
  229.         $aResult $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
  230.         $iPersonTypeCount count($aResult);
  231.         echo '<br>Total tarifes a carregar:' $iPersonTypeCount '<br>';
  232.         if ($aResult 0
  233.         {
  234.             $iOrdre 0;
  235.             foreach ($aResult as $row) {
  236.                 echo '<pre>';
  237.                 print_r($row);
  238.                 echo '</pre>';
  239.                 //die('stop');
  240.                 $aArray = array(
  241.                     'tariff_sheet_id' => $row['TariffSheet_id'],
  242.                     'tarifa_id' => $row['Tarifa_id'],
  243.                     'section_id' => $row['Section_id'],
  244.                     'ticket_type_id' => $row['TicketType_id'],
  245.                     'pool_id' => $row['Pool_id'],
  246.                     'person_type_id' => $row['PersonType_id'],
  247.                     'person_type_general_id' => $row['PersonType_General_id'],
  248.                 );
  249.                 $enAbonamentsAux $this->em->getRepository(Abonaments::class)->findOneBy($aArray);
  250.                 if ($enAbonamentsAux) {
  251.                     $enAbonaments $this->em->getRepository(Abonaments::class)->find($enAbonamentsAux->getId());
  252.                 } else {
  253.                     $enAbonaments = new Abonaments();
  254.                 }
  255.                 $enAbonaments->setPerId(null);
  256.                 $enAbonaments->setNomCa($row['TicketType_desc2']);
  257.                 $enAbonaments->setNomEs($row['TicketType_desc2']);
  258.                 $enAbonaments->setNomEn($row['TicketType_desc2']);
  259.                 $enAbonaments->setNomFr($row['TicketType_desc2']);
  260.                 $enAbonaments->setNomBreuCa($row['TicketType_desc2']);
  261.                 $enAbonaments->setNomBreuEn($row['TicketType_desc2']);
  262.                 $enAbonaments->setNomBreuEs($row['TicketType_desc2']);
  263.                 $enAbonaments->setNomBreuFr($row['TicketType_desc2']);
  264.                 if ($row['Entorno_Tipus'] == 'EXT') {
  265.                     $enAbonaments->setEstacio('Extra');
  266.                 } else {
  267.                     $enAbonaments->setEstacio($row['Entorno_Tipus']);
  268.                 }
  269.                 $enAbonaments->setTariffSheetId($row['TariffSheet_id']);
  270.                 $enAbonaments->setTarifaId($row['Tarifa_id']);
  271.                 $enAbonaments->setTarifaDesc($row['Tarifa_desc']);
  272.                 $enAbonaments->setSectionId($row['Section_id']);
  273.                 $enAbonaments->setSectionDesc($row['Section_desc']);
  274.                 //$dateTime = new \DateTime();
  275.                 //echo $dateTime->setTimestamp(substr($row['Section_data_ini'],0,10));
  276.                 $enAbonaments->setDataInici(new \DateTime(substr($row['Section_data_ini'], 010)));
  277.                 $enAbonaments->setDataIniciCalendari(new \DateTime(substr($row['Section_data_ini'], 010)));
  278.                 $enAbonaments->setDataFi(new \DateTime(substr($row['Section_data_fi'], 010)));
  279.                 $enAbonaments->setDataFiCalendari(new \DateTime(substr($row['Section_data_fi'], 010)));
  280.                 $enAbonaments->setTicketTypeId(intval($row['TicketType_id']));
  281.                 $enAbonaments->setTicketTypeDesc($row['TicketType_desc']);
  282.                 $enAbonaments->setPoolId($row['Pool_id']);
  283.                 $enAbonaments->setPoolDesc($row['Pool_desc']);
  284.                 $enAbonaments->setPersonTypeId($row['PersonType_id']);
  285.                 $enAbonaments->setPersonTypeDesc($row['PersonType_desc']);
  286.                 $enAbonaments->setPersonTypeGeneralId($row['PersonType_General_id']);
  287.                 $enAbonaments->setPersonTypeGeneralDesc($row['PersonType_General_desc']);
  288.                 $enAbonaments->setPreu($row['Preu']);
  289.                 $enAbonaments->setActiu(1);
  290.                 $enAbonaments->setFamiliar(0);
  291.                 $enAbonaments->setEmpresa(0);
  292.                 $enAbonaments->setSuplement(0);
  293.                 $enAbonaments->setSenseSuplement(0);
  294.                 $enAbonaments->setOrdre($row['Entorno_Ordre']);
  295.                 $enAbonaments->setAtribut($row['Atribut']);
  296.                 if ($row['OP_Public'] == 'S') {
  297.                     $enAbonaments->setNomesTablet(0);
  298.                 } else {
  299.                     $enAbonaments->setNomesTablet(1);
  300.                 }
  301.                 if ($row['OP_Clubs'] == 'S')
  302.                 {
  303.                     $enAbonaments->setClubEsqui(1);
  304.                 }
  305.                 if ($row['OP_Clubs'] == 'S'
  306.                     || $row['OP_Clubs1'] == 'S'
  307.                     || $row['OP_Clubs2'] == 'S'
  308.                     || $row['OP_Clubs3'] == 'S'
  309.                     || $row['OP_Clubs4'] == 'S'
  310.                 ) {
  311. //                    if ($row['OP_Oficina'] != 'S')
  312. //                    {
  313. //                        //////////////////////////////////////////////////
  314. //                        // assignem el perfil de club d'esquí que és el 14
  315. //                        //////////////////////////////////////////////////
  316.                         $enPerfils $this->em->getRepository(Perfils::class)->find(14);
  317.                         $enAbonaments->setPerId($enPerfils);
  318. //                    }
  319.                 } else {
  320.                     $enAbonaments->setClubEsqui(0);
  321.                 }
  322.                 if ($row['OP_Clubs1'] == 'S') {
  323.                     $enAbonaments->setClubs1(1);
  324.                 } else {
  325.                     $enAbonaments->setClubs1(0);
  326.                 }
  327.                 if ($row['OP_Clubs2'] == 'S') {
  328.                     $enAbonaments->setClubs2(1);
  329.                 } else {
  330.                     $enAbonaments->setClubs2(0);
  331.                 }
  332.                 if ($row['OP_Clubs3'] == 'S') {
  333.                     $enAbonaments->setClubs3(1);
  334.                 } else {
  335.                     $enAbonaments->setClubs3(0);
  336.                 }
  337.                 if ($row['OP_Clubs4'] == 'S') {
  338.                     $enAbonaments->setClubs4(1);
  339.                 } else {
  340.                     $enAbonaments->setClubs4(0);
  341.                 }
  342. //                if ($row['OP_Oficina'] != 'S'
  343. //                    && $row['OP_Admin'] == 'S') {
  344. //                    ///////////////////////////////////////////
  345. //                    // assignem el perfil de l'Ari que és el 15
  346. //                    ///////////////////////////////////////////
  347. //                    $enPerfils = $this->em->getRepository(Perfils::class)->find(15);
  348. //                    $enAbonaments->setPerId($enPerfils);
  349. //                } else {
  350. //                    //$enAbonaments->setPerId(null);
  351. //                }
  352.                 if ($row['OP_FiresOficines'] == 'S')
  353.                 {
  354.                     $enAbonaments->setFiresOficina(1);
  355.                 } else {
  356.                     $enAbonaments->setFiresOficina(0);
  357.                 }
  358.                 if ($row['OP_Admin'] == 'S')
  359.                 {
  360.                     $enAbonaments->setAdmin(1);
  361.                 } else {
  362.                     $enAbonaments->setAdmin(0);
  363.                 }
  364.                 if ($row['EsSuplement'] == 'S')
  365.                 {
  366.                     $enAbonaments->setSuplement(1);
  367.                 } else {
  368.                     $enAbonaments->setSuplement(0);
  369.                 }
  370.                 if ($row['EsNocturn'] == 'S')
  371.                 {
  372.                     $enAbonaments->setNocturn(1);
  373.                 } else {
  374.                     $enAbonaments->setNocturn(0);
  375.                 }
  376.                 if ($row['EsPackFamiliar'] == 'S')
  377.                 {
  378.                     $enAbonaments->setFamiliar(1);
  379.                 } else {
  380.                     $enAbonaments->setFamiliar(0);
  381.                 }
  382.                 if ($row['Es_Alp2500'] == 'S'// Si és temporada Alp2500
  383.                 {
  384.                     $enAbonaments->setAlp2500(1);
  385.                 } else {
  386.                     $enAbonaments->setAlp2500(0);
  387.                 }
  388.                 if ($row['Te_Dte_Lessio'] == 'S')
  389.                 {
  390.                     $enAbonaments->setTeDescompteLesio(1);
  391.                 } else {
  392.                     $enAbonaments->setTeDescompteLesio(0);
  393.                 }
  394.                 $this->em->persist($enAbonaments);
  395.                 $this->em->flush();
  396.             }
  397.         }
  398.         echo '<br>Fi -> ' date('Y-m-d H:i:s');
  399.         return new Response('Finalitzat');
  400.     }
  401.     function updateConsumersByAxessAction()
  402.     {
  403.         set_time_limit(300000);
  404.         if ($this->getParameter('kernel.environment') == 'dev')
  405.         {
  406.             $bTest true;
  407.             echo "Inici actualització a entorno de consumers des de sqlServer: " date("Y-m-d H:i:s") . '<br>';
  408.         } else {
  409.             $bTest false;
  410.         }
  411.         /* Connect using Windows Authentication. */
  412.         try {
  413.             $options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
  414.             $conn = new \PDO('sqlsrv:Server=' $this->sServer ';Database=' $this->sBDname ';Encrypt = false;'$this->sUserName$this->sPassword$options);
  415.         } catch (Exception $e) {
  416.             die(print_r($e->getMessage(), false));
  417.         }
  418.         $sDataHora date("Y_m_d_H_i_s");
  419.         $this->sDir $this->sBase 'query_ws/';
  420.         $sReturn "EN-1|No hi ha consumers per modificar";
  421.         $aResultats = array();
  422.         $entityValorsWsAxess $this->em->getRepository(ValorsWsAxess::class)->find(1);
  423.         if ($entityValorsWsAxess)
  424.         {
  425.             $dUltimaModificacio $entityValorsWsAxess->getUltimDataModificacioConsumers();
  426.             $dUltimaModificacio $dUltimaModificacio->format("Y-m-d") . 'T' $dUltimaModificacio->format("H:i:s") . ".000";
  427.             $iCuantosRegistros 500;
  428.             $iIniciRegistres 0;
  429.             $aResultats = array();
  430.             $iCon 0;
  431.             do{
  432.                 $iTotalRegistresLlegits 0;
  433.                 ///////////////////////////////////////////
  434.                 // consulta a l'sqlServer amb la data
  435.                 ///////////////////////////////////////////
  436.                 $tsql "SELECT * FROM v_AXESS_CONSUMERS";
  437.                 $tsql .= " WHERE 1=1";
  438.                 //$tsql .= " AND Consumer_id_Pos= 35";
  439.                 //$tsql .= " AND Consumer_id_Num= 12997";
  440.                 $tsql .= " AND TIPUS_LOG = 'U'";
  441.                 $tsql .= " AND TT_Data_actualitzacio >= '" str_replace(' ''T'$dUltimaModificacio) . "'";
  442.                 $tsql .= " ORDER BY TT_Data_actualitzacio ASC, Consumer_id DESC";
  443.                 $tsql .= " OFFSET " $iIniciRegistres " ROWS FETCH FIRST " $iCuantosRegistros " ROWS ONLY ";
  444.                 //echo $tsql;
  445.                 //$getConsumers = $conn->prepare($tsql, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL,]);
  446.                 $getConsumers $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
  447.                 echo '<br>' count($getConsumers) . '<br>';
  448.                 //die('stop');
  449.                 //$getConsumers->execute();
  450.                 //$aResult = $getConsumers->fetchAll(PDO::FETCH_ASSOC);
  451.                 //$iConsumersCount = count($aResult);
  452.                 $bDataModificada false;
  453.                 if ($getConsumers 0
  454.                 {
  455.                     foreach ($getConsumers as $row
  456.                     {
  457.                         /*
  458.                         echo '<pre>';
  459.                         print_r($row);
  460.                         echo '</pre>';
  461.                         */
  462.                         ////////////////////////////////////////////////////
  463.                         /// Guardem la data per començar des de aquesta data
  464.                         ////////////////////////////////////////////////////
  465.                         $dUltimaModificacio $row['TT_Data_actualitzacio'];
  466.                         $bDataModificada true;
  467.                         ////////////////////////////////////////////////////////////////////////////////
  468.                         // Consultar si existeix el consumer a entorno i si existeix fer l'actualització
  469.                         ////////////////////////////////////////////////////////////////////////////////
  470.                         $aParam = array(    
  471.                             'customer_id_proj'  => $row['Consumer_id_Proj'],
  472.                             'customer_id_pos'   => $row['Consumer_id_Pos'],
  473.                             'customer_id_num'   => $row['Consumer_id_Num']
  474.                         );
  475.                         $enConsumers $this->em->getRepository(Consumers::class)->findOneBy($aParam);
  476.                         if ($enConsumers)
  477.                         {
  478.                             $iConsumerFill $enConsumers->getId();
  479.                             //dump($enConsumers);
  480.                             $enConsumersUpdate $this->em->getRepository(Consumers::class)->find($iConsumerFill);
  481.                             if ($enConsumersUpdate
  482.                             {
  483.                                 ////////////////////////////////
  484.                                 // Actualitzar dades de consumer
  485.                                 ////////////////////////////////
  486.                                 $jsonCognoms $this->objUtil->separarCognoms($row['Cognoms']);
  487.                                 $aCognoms json_decode($jsonCognoms->getContent(), true);
  488.                                 $enConsumersUpdate->setNom($row['Nom']);
  489.                                 $enConsumersUpdate->setCognoms($row['Cognoms']);
  490.                                 $enConsumersUpdate->setCognom1($aCognoms['cognom1']);
  491.                                 $enConsumersUpdate->setCognom2($aCognoms['cognom2']);
  492.                                 $enConsumersUpdate->setDni($row['Dni']);
  493.                                 $dateTime = new \DateTime();
  494.                                 $enConsumersUpdate->setDataNaixement($dateTime->setTimestamp(strtotime($row['Naixement'])));
  495.                                 $enConsumersUpdate->setDireccio($row['Adreca'] . $row['Adreca2'] . $row['Adreca3']);
  496.                                 $enConsumersUpdate->setCp($row['CodiPostal']);
  497.                                 $enConsumersUpdate->setPoblacio($row['Poblacio']);
  498.                                 $enConsumersUpdate->setEmail($row['Email']);
  499.                                 $enConsumersUpdate->setTelefon($row['Telefon']);
  500.                                 //$enConsumersUpdate->setWtp($row['Wtp_ult']);
  501.                                 $enConsumersUpdate->setOrigenEntrada('Mod sqlServer');
  502.                                 $enConsumersUpdate->setResposta4i(($enConsumersUpdate->getResposta4i() !=''?$enConsumersUpdate->getResposta4i() . '<br>':'') . '|Mod sqlServer|Modificat des del sqlServer el ' .  date('Y-m-d H:i:s') );
  503.                                 $enConsumersUpdate->setDni($row['Dni']);
  504.                                 if ($row['Actiu'] == 0)
  505.                                 {
  506.                                     $enConsumersUpdate->setHistoric(1);
  507.                                 } else {
  508.                                     $enConsumersUpdate->setHistoric(0);
  509.                                 }
  510.                                 //dump ($enConsumersUpdate);
  511.                                 //die('stop');
  512.                                 $this->em->persist($enConsumersUpdate);
  513.                                 $this->em->flush();
  514.                                 $aResultats[$iCon]['consumer'] = $row;
  515.                                 //////////////////////////////////////////////////////
  516.                                 /// Comprova si esta a una familia que no es ell
  517.                                 //////////////////////////////////////////////////////
  518.                                 if ($row['Consumer_id_Proj'] != $row['Familia_id_Proj']
  519.                                     || $row['Consumer_id_Pos'] != $row['Familia_id_Pos']
  520.                                     || $row['Consumer_id_Num'] != $row['Familia_id_Num']
  521.                                 ) {
  522.                                     $aParam = array(
  523.                                         'customer_id_proj'  => $row['Familia_id_Proj'],
  524.                                         'customer_id_pos'   => $row['Familia_id_Pos'],
  525.                                         'customer_id_num'   => $row['Familia_id_Num']
  526.                                     );
  527.                                     $enConsumers $this->em->getRepository(Consumers::class)->findOneBy($aParam);
  528.                                     if ($enConsumers
  529.                                     {
  530.                                         $iConsumerPare $enConsumers->getId();
  531.                                         ////////////////////
  532.                                         /// Creem la familia
  533.                                         ////////////////////
  534.                                         $blRes $this->forward('App\Controller\ConsumersHasConsumersController::addFamiliaAction', array(
  535.                                             'aValues' => array( 
  536.                                                 'consumers'         => $iConsumerPare,
  537.                                                 'consumers_fill'    => $iConsumerFill,
  538.                                             ))
  539.                                         );
  540.                                         if ($blRes)
  541.                                         {
  542.                                             $aResultats[$iCon]['familia'] = array(  
  543.                                                 'pare'  => $iConsumerPare,
  544.                                                 'fill'  => $iConsumerFill
  545.                                             );
  546.                                         }
  547.                                     }
  548.                                 }
  549.                             }
  550.                             ////////////////////////////////////////////////
  551.                             // TODO: S'ha de treure aquest break a real!!!!!
  552.                             ////////////////////////////////////////////////
  553.                             //break;
  554.                         }
  555.                         $iTotalRegistresLlegits++;
  556.                     }
  557.                 }
  558.                 //////////////////////////////////////////////////
  559.                 // Actualitzem els valors a la taula ValorsWsAxess
  560.                 //////////////////////////////////////////////////
  561.                 if ($bDataModificada
  562.                 {
  563.                     $dateTime = new \DateTime();
  564.                     $entityValorsWsAxess->setUltimDataModificacioConsumers($dateTime->setTimestamp(strtotime($dUltimaModificacio)));
  565.                 }
  566.                 $dateTime = new \DateTime();
  567.                 $entityValorsWsAxess->setUltimaLecturaConsumers($dateTime->createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s')));
  568.                 $this->em->persist($entityValorsWsAxess);
  569.                 $this->em->flush();
  570.                 $iIniciRegistres $iIniciRegistres $iTotalRegistresLlegits;
  571.                 ////////////////////////////////////////////////
  572.                 // TODO: S'ha de treure aquest break a real!!!!!
  573.                 ////////////////////////////////////////////////
  574.                 //break;
  575.                 //echo '-' . $iTotalRegistresLlegits . '==' . $iCuantosRegistros . '-<br>';
  576.             } while ($iTotalRegistresLlegits == $iCuantosRegistros);
  577.             //echo '-' . $iTotalRegistresLlegits . '==' . $iCuantosRegistros . '-';
  578.         }
  579.         if ($bTest) {
  580.             echo '<br>Fi -> ' date('Y-m-d H:i:s');
  581.             echo '<pre>';
  582.             dump ($aResultats);
  583.             echo '</pre>';
  584.         }
  585.         if (!empty($aResultats))
  586.         {
  587.             $sDirAux $this->sDir 'update_Consumers_Axess';
  588.             if (!file_exists($sDirAux))
  589.             {
  590.                 mkdir($sDirAux0777true);
  591.                 chmod($sDirAux0777);
  592.             }
  593.             $sDirAux2 $sDirAux '/' date("Ymd");
  594.             if (!file_exists($sDirAux2))
  595.             {
  596.                 mkdir($sDirAux20777);
  597.                 chmod($sDirAux20777);
  598.             }
  599.             $aFileXmlRequest fopen($sDirAux2 '/' date("Y_m_d_H_i_s") . '_consumers_' date("YmdHis") . '.txt''w');
  600.             foreach ($aResultats as $rId => $rVal)
  601.             {
  602.                 fputs($aFileXmlRequest$rId ' : ' print_r($rValtrue) . PHP_EOL);
  603.             }
  604.             fclose($aFileXmlRequest);
  605.             /*
  606.             $sMissatge = '<pre>' . print_r($aResultats, true) . '</pre>';
  607.             $this->phpmailer->EnviarAction(array(
  608.                 'sSubjecte' => "Masella WSAxess Error Consulta_AMB_Consumers",
  609.                 'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  610.                 'sTo'       => 'jramon@entorno.es',
  611.                 'sMissatge' => $sMissatge,
  612.             ));
  613.             */
  614.         }
  615.         //////////////////////////////////////////////////
  616.         // Actualitzem els valors a la taula ValorsWsAxess
  617.         //////////////////////////////////////////////////
  618.         if ($bDataModificada
  619.         {
  620.             $dateTime = new \DateTime();
  621.             $entityValorsWsAxess->setUltimDataModificacioConsumers($dateTime->setTimestamp(strtotime($dUltimaModificacio)));
  622.         }
  623.         $dateTime = new \DateTime();
  624.         $entityValorsWsAxess->setUltimaLecturaConsumers($dateTime->createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s')));
  625.         $this->em->persist($entityValorsWsAxess);
  626.         $this->em->flush();
  627.         return new Response('Finalitzat');
  628.     }
  629.     function updateCompanyByAxessAction()
  630.     {
  631.         set_time_limit(300000);
  632.         if ($this->getParameter('kernel.environment') == 'dev')
  633.         {
  634.             $bTest true;
  635.             echo "Inici actualització a entorno de companies des de sqlServer: " date("Y-m-d H:i:s") . '<br>';
  636.         } else {
  637.             $bTest false;
  638.         }
  639.         /* Connect using Windows Authentication. */
  640.         try {
  641.             $options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
  642.             $conn = new \PDO('sqlsrv:Server=' $this->sServer ';Database=' $this->sBDname ';Encrypt = false;'$this->sUserName$this->sPassword$options);
  643.         } catch (Exception $e) {
  644.             die(print_r($e->getMessage(), false));
  645.         }
  646.         $sDataHora date("Y_m_d_H_i_s");
  647.         $this->sDir $this->sBase 'query_ws/';
  648.         $sReturn "EN-1|No hi ha companies per modificar";
  649.         $aResultats = array();
  650.         $entityValorsWsAxess $this->em->getRepository(ValorsWsAxess::class)->find(1);
  651.         if ($entityValorsWsAxess)
  652.         {
  653.             $dUltimaModificacio $entityValorsWsAxess->getUltimDataModificacioCompany();
  654.             $dUltimaModificacio $dUltimaModificacio->format("Y-m-d") . 'T' $dUltimaModificacio->format("H:i:s") . ".000";
  655.             $iCuantosRegistros 100;
  656.             $iIniciRegistres 0;
  657.             $aResultats = array();
  658.             $iCon 0;
  659.             do{
  660.                 $iTotalRegistresLlegits 0;
  661.                 ///////////////////////////////////////////
  662.                 // consulta a l'sqlServer amb la data
  663.                 ///////////////////////////////////////////
  664.                 $tsql "SELECT * FROM V_AXESS_CLIENTS";
  665.                 $tsql .= " WHERE 1=1";
  666.                 $tsql .= " AND TT_Data_actualitzacio > '" str_replace(' ''T'$dUltimaModificacio) . "'";
  667.                 $tsql .= " ORDER BY TT_Data_actualitzacio ASC, Client_id DESC";
  668.                 $tsql .= " OFFSET " $iIniciRegistres " ROWS FETCH FIRST " $iCuantosRegistros " ROWS ONLY ";
  669.                 //echo $tsql;
  670.                 //$getConsumers = $conn->prepare($tsql, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL,]);
  671.                 $getConsumers $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
  672.                 echo '<br>' count($getConsumers) . '<br>';
  673.                 //$getConsumers->execute();
  674.                 //$aResult = $getConsumers->fetchAll(PDO::FETCH_ASSOC);
  675.                 //$iConsumersCount = count($aResult);
  676.                 $bDataModificada false;
  677.                 if ($getConsumers 0
  678.                 {
  679.                     foreach ($getConsumers as $row
  680.                     {
  681.                         /*
  682.                         echo '<pre>';
  683.                         print_r($row);
  684.                         echo '</pre>';
  685.                         */
  686.                         ////////////////////////////////////////////////////
  687.                         /// Guardem la data per començar des de aquesta data
  688.                         ////////////////////////////////////////////////////
  689.                         $dUltimaModificacio $row['TT_Data_actualitzacio'];
  690.                         $bDataModificada true;
  691.                         ////////////////////////////////////////////////////////////////////////////////
  692.                         // Consultar si existeix el consumer a entorno i si existeix fer l'actualització
  693.                         ////////////////////////////////////////////////////////////////////////////////
  694.                         $aParam = array(    
  695.                             'company_proj_no'   => $row['Client_id_Proj'],
  696.                             'company_pos_no'    => $row['Client_id_Pos'],
  697.                             'company_num'       => $row['Client_id_num']
  698.                         );
  699.                         $enConsumers $this->em->getRepository(Consumers::class)->findBy($aParam);
  700.                         if ($enConsumers)
  701.                         {
  702.                             foreach ($enConsumers as $key => $aConsumer)
  703.                             {
  704.                                 //dump($aConsumer);
  705.                                 $enConsumersUpdate $this->em->getRepository(Consumers::class)->find($aConsumer->getId());
  706.                                 if ($enConsumersUpdate
  707.                                 {
  708.                                     ////////////////////////////////
  709.                                     // Actualitzar dades de consumer
  710.                                     ////////////////////////////////
  711.                                     $enConsumersUpdate->setNomEmpresa($row['Nom_Fiscal']); // TODO: no se si és Nom_Comercial
  712.                                     $enConsumersUpdate->setNifEmpresa($row['Nif']);
  713.                                     $enConsumersUpdate->setDireccioEmpresa($row['Adreca'] . $row['Adreca2'] . $row['Adreca3']);
  714.                                     $enConsumersUpdate->setCpEmpresa($row['CodiPostal']);
  715.                                     $enConsumersUpdate->setPoblacioEmpresa($row['Poblacio']);
  716.                                     //////////////////////////////////////////////
  717.                                     /// s'ha de recuperar l'objecte del pais
  718.                                     //////////////////////////////////////////////
  719.                                     $objPais $this->em->getRepository(Paisos::class)->findOneBy(array('iso2' =>$row['Pais']));
  720.                                     if ($objPais
  721.                                     {
  722.                                         $enConsumersUpdate->setPaiId($objPais);
  723.                                     }
  724.                                     $enConsumersUpdate->setProvinciaEmpresa($row['Provincia']);
  725.                                     $enConsumersUpdate->setOrigenEntrada('Mod sqlServer');
  726.                                     $enConsumersUpdate->setResposta4i(($enConsumersUpdate->getResposta4i() != '' $enConsumersUpdate->getResposta4i() . '<br>' '') . '|Mod sqlServer Company|Modificat des del sqlServer el ' date('Y-m-d H:i:s'));
  727.                                     //$enConsumersUpdate->setDni(???);
  728.                                     //dump ($enConsumersUpdate);
  729.                                     //die('stop');
  730.                                     $this->em->persist($enConsumersUpdate);
  731.                                     $this->em->flush();
  732.                                     $aResultats[$iCon]['Company'] = $row;
  733.                                 }
  734.                                 ////////////////////////////////////////////////
  735.                                 // TODO: S'ha de treure aquest break a real!!!!!
  736.                                 ////////////////////////////////////////////////
  737.                                 //break;
  738.                             }
  739.                         }
  740.                         $iTotalRegistresLlegits++;
  741.                     }
  742.                 }
  743.                 //////////////////////////////////////////////////
  744.                 // Actualitzem els valors a la taula ValorsWsAxess
  745.                 //////////////////////////////////////////////////
  746.                 if ($bDataModificada
  747.                 {
  748.                     $dateTime = new \DateTime();
  749.                     $entityValorsWsAxess->setUltimDataModificacioCompany($dateTime->setTimestamp(strtotime($dUltimaModificacio)));
  750.                 }
  751.                 $dateTime = new \DateTime();
  752.                 $entityValorsWsAxess->setUltimaLecturaCompany($dateTime->createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s')));
  753.                 $this->em->persist($entityValorsWsAxess);
  754.                 $this->em->flush();
  755.                 $iIniciRegistres $iIniciRegistres $iTotalRegistresLlegits;
  756.                 ////////////////////////////////////////////////
  757.                 // TODO: S'ha de treure aquest break a real!!!!!
  758.                 ////////////////////////////////////////////////
  759.                 //break;
  760.             } while ($iTotalRegistresLlegits == $iCuantosRegistros);
  761.         }
  762.         if ($bTest
  763.         {
  764.             echo '<br>Fi -> ' date('Y-m-d H:i:s');
  765.             echo '<pre>';
  766.             dump ($aResultats);
  767.             echo '</pre>';
  768.         }
  769.         if (!empty($aResultats))
  770.         {
  771.             $sDirAux $this->sDir 'update_Company_Axess';
  772.             if (!file_exists($sDirAux))
  773.             {
  774.                 mkdir($sDirAux0777true);
  775.                 chmod($sDirAux0777);
  776.             }
  777.             $sDirAux2 $sDirAux '/' date("Ymd");
  778.             if (!file_exists($sDirAux2))
  779.             {
  780.                 mkdir($sDirAux20777);
  781.                 chmod($sDirAux20777);
  782.             }
  783.             $aFileXmlRequest fopen($sDirAux2 '/' date("Y_m_d_H_i_s") . '_company_' date("YmdHis") . '.txt''w');
  784.             foreach ($aResultats as $rId => $rVal)
  785.             {
  786.                 fputs($aFileXmlRequest$rId ' : ' print_r($rValtrue) . PHP_EOL);
  787.             }
  788.             fclose($aFileXmlRequest);
  789.             /*
  790.             $sMissatge = '<pre>' . print_r($aResultats, true) . '</pre>';
  791.             $this->phpmailer->EnviarAction(array(
  792.                 'sSubjecte' => "Masella WSAxess Error Consulta_AMB_Consumers",
  793.                 'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  794.                 'sTo'       => 'jramon@entorno.es',
  795.                 'sMissatge' => $sMissatge,
  796.             ));
  797.             */
  798.         }
  799.         //////////////////////////////////////////////////
  800.         // Actualitzem els valors a la taula ValorsWsAxess
  801.         //////////////////////////////////////////////////
  802.         if ($bDataModificada
  803.         {
  804.             $dateTime = new \DateTime();
  805.             $entityValorsWsAxess->setUltimDataModificacioCompany($dateTime->setTimestamp(strtotime($dUltimaModificacio)));
  806.         }
  807.         $dateTime = new \DateTime();
  808.         $entityValorsWsAxess->setUltimaLecturaCompany($dateTime->createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s')));
  809.         $this->em->persist($entityValorsWsAxess);
  810.         $this->em->flush();
  811.         return new Response('Finalitzat');
  812.     }
  813.     /*
  814.     function moureImatgeAbonatAConsumerAction()
  815.     {
  816.         die('stop');
  817.         set_time_limit(300000);
  818.         echo 'Inici -> ' . date('Y-m-d H:i:s') . '<br>';
  819.         $sQuery = "SELECT c "
  820.             . " FROM App:Consumers c "
  821.         ;
  822.         $query = $this->em->createQuery($sQuery);
  823.         //$query->setMaxResults(10);
  824.         $objConsumers = $query->getResult();
  825.         //dump($objAbonats);
  826.         echo '<br>Total abonats : ' . count($objConsumers) . '<br>';
  827.         $icon = 1;
  828.         foreach ($objConsumers as $key => $val)
  829.         {
  830.             echo '<br>(' . $icon++ . ')-------------' . $val->getId();
  831.             if ($val->getImatge() != '')
  832.             {
  833.                 $sOrigen = $this->sPathUploads . "abonats/" . $val->getImatge();
  834.                 $sDesti = $this->sPathUploads . "consumers/" . $val->getImatge();
  835.                 echo '<br>' . $sDesti . '<br>';
  836.                 if (!file_exists($sDesti)) {
  837.                     if (file_exists($sOrigen)) {
  838.                         if (copy($sOrigen, $sDesti)) {
  839.                             echo '<br>mogut<br>';
  840.                             if (filesize($sDesti) > 0) {
  841.                                 $miObjSize = new changeSize;
  842.                                 $miObjSize->canviTamanyImatge($sDesti, 250, 0);
  843.                             }
  844.                         }
  845.                     }
  846.                 }
  847.             }
  848.             if ($val->getDocumento() != '')
  849.             {
  850.                 $sOrigen =  $this->sPathUploads . "abonats/" . $val->getDocumento();
  851.                 $sDesti = $this->sPathUploads . "consumers/" . $val->getDocumento();
  852.                 echo '<br>' . $sDesti . '<br>';
  853.                 if (!file_exists($sDesti)) {
  854.                     if (file_exists($sOrigen)) {
  855.                         $bRes = copy($sOrigen, $sDesti);
  856.                         echo '<br>mogut<br>';
  857.                     } else {
  858.                         echo '<br>No existeix el fitxer a l origen <br>';
  859.                         echo $sOrigen .'<br>';
  860.                     }
  861.                 }
  862.             }
  863.         }
  864.         echo '<br>Fi -> ' . date('Y-m-d H:i:s');
  865.         return new Response('Finalitzat');
  866.     }
  867.     */
  868.     public function createCustomerAccountAction()
  869.     {
  870.         set_time_limit(300000);
  871.         echo 'Inici -> ' date('Y-m-d H:i:s') . '<br>';
  872.         $objWebServicesCustomerAccount = new WebServicesCustomerAccountController();
  873.         /////////////////////////////////////////////////////////////////////////////////////
  874.         /// Quan la cridem com una clase no te acces al getParameter, així li passem el valor
  875.         /////////////////////////////////////////////////////////////////////////////////////
  876.         $objWebServicesCustomerAccount->setEnviroments($this->getParameter('kernel.environment'));
  877.         $objWebServicesCustomerAccount->setObjContainer($this);
  878.         $objWebServicesCustomerAccount->setObjGetMailer($this->phpmailer);
  879.         $aParams = array(   'customer_account_no'       => null,
  880.                             'resposta_dci4_connect'     => null,
  881.                             'tipus'                     => "Pagador",
  882.                             'historic'                  => 0
  883.         );
  884.         $enConsumers $this->em->getRepository(Consumers::class)->findBy($aParams);
  885.         if ($enConsumers
  886.         {
  887.             $iContador 0;
  888.             foreach ($enConsumers as $key => $aConsumer)
  889.             {
  890.                 $enConsumersUpdate $this->em->getRepository(Consumers::class)->find($aConsumer->getId());
  891.                 $aElements = array( 
  892.                     'i_nPersProjNo' => $aConsumer->getCustomerIdProj(),
  893.                     'i_nPersPosNo'  => $aConsumer->getCustomerIdPos(),
  894.                     'i_nPersPersNo' => $aConsumer->getCustomerIdNum(),
  895.                     'i_szUserName'  => $aConsumer->getEmail(),
  896.                     'i_szPassword'  => $aConsumer->getClau(),
  897.                     'i_encryptmail'  => 0,
  898.                 );
  899.                 echo '<pre>';
  900.                 print_r($aElements);
  901.                 echo '</pre>';
  902.                 //die('stop');
  903.                 $jsonReturn $objWebServicesCustomerAccount->createCustomerAccount($aElements);
  904.                 $aReturnCreateCustomerAccount json_decode($jsonReturn->getContent(), true);
  905.                 if ($aReturnCreateCustomerAccount['error']['CreateCustomerFromPerson']) 
  906.                 {
  907.                     echo 'ok!!!' '<br>';
  908.                     $enConsumersUpdate->setCustomerAccountNo($aReturnCreateCustomerAccount['aCustomerAccount']['NCUSTOMERACCOUNTNO']);
  909.                     $enConsumersUpdate->setValidateHash($aReturnCreateCustomerAccount['aCustomerAccount']['SZVALIDATEHASH']);
  910.                 } else {
  911.                     echo '<pre>';
  912.                     print_r($aReturnCreateCustomerAccount);
  913.                     echo '</pre>';
  914.                 }
  915.                 $enConsumersUpdate->setRespostaDci4Connect(print_r($aReturnCreateCustomerAccount,true));
  916.                 $this->em->persist($enConsumersUpdate);
  917.                 $this->em->flush();
  918.                 //dump($aReturnCreateCustomerAccount);
  919.                 echo '-------------------------------' '<br>';
  920.                 ////////////////////////
  921.                 /// TODO: Treure a real
  922.                 ////////////////////////
  923.                 $iContador++;
  924.                 if ($iContador == 1000) die('stop');
  925.             }
  926.         }
  927.         echo '<br>Fi -> ' date('Y-m-d H:i:s');
  928.         return new Response('Finalitzat');
  929.     }
  930.     function updateReemplazamentWTPByAxessAction()
  931.     {
  932.         set_time_limit(300000);
  933.         if ($this->getParameter('kernel.environment') == 'dev')
  934.         {
  935.             $bTest true;
  936.             echo "Inici actualització a entorno de Reemplazament WTP des de sqlServer: " date("Y-m-d H:i:s") . '<br>';
  937.         } else {
  938.             $bTest false;
  939.         }
  940.         /* Connect using Windows Authentication. */
  941.         try {
  942.             $options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
  943.             $conn = new \PDO('sqlsrv:Server=' $this->sServer ';Database=' $this->sBDname ';Encrypt = false;'$this->sUserName$this->sPassword$options);
  944.         } catch (Exception $e) {
  945.             die(print_r($e->getMessage(), false));
  946.         }
  947.         $sDataHora date("Y_m_d_H_i_s");
  948.         $this->sDir $this->sBase 'query_ws/';
  949.         $sReturn "EN-1|No hi ha consumers per modificar";
  950.         $aResultats = array();
  951.         $entityValorsWsAxess $this->em->getRepository(ValorsWsAxess::class)->find(1);
  952.         if ($entityValorsWsAxess)
  953.         {
  954.             $dUltimaModificacio $entityValorsWsAxess->getUltimDataModificacioReemplazamentWtp();
  955.             $iCuantosRegistros 10;
  956.             $iIniciRegistres 0;
  957.             $aResultats = array();
  958.             $iCon 0;
  959.             do {
  960.                 $iTotalRegistresLlegits 0;
  961.                 ///////////////////////////////////////////
  962.                 // consulta a l'sqlServer amb la data
  963.                 ///////////////////////////////////////////
  964.                 $tsql "SELECT *, concat(convert(varchar(10),Data_Venda,111),' ',Hora_Venda) as dddd FROM V_ENTORNO_REEXPEDICIONS";
  965.                 $tsql .= " WHERE 1=1";
  966.                 if ($dUltimaModificacio != '')
  967.                 {
  968.                     $tsql .= " AND concat(convert(varchar(10),Data_Venda,111),' ',Hora_Venda) > '" $dUltimaModificacio->format("Y/m/d") . " " $dUltimaModificacio->format("H:i:s") . "'";
  969.                 }
  970.                 //$tsql .= " AND Data_Venda >= '" . $dUltimaModificacio->format("Y-m-d") . 'T' . "00:00:00.000'";
  971.                 $tsql .= " ORDER BY Data_Venda ASC, Hora_Venda ASC";
  972.                 $tsql .= " OFFSET " $iIniciRegistres " ROWS FETCH FIRST " $iCuantosRegistros " ROWS ONLY ";
  973.                 echo $tsql;
  974.                 //die('stop');
  975.                 //$getConsumers = $conn->prepare($tsql, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL,]);
  976.                 $getConsumers $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
  977.                 echo '<br>' count($getConsumers) . '<br>';
  978.                 //$getConsumers->execute();
  979.                 //$aResult = $getConsumers->fetchAll(PDO::FETCH_ASSOC);
  980.                 //$iConsumersCount = count($aResult);
  981.                 $bDataModificada false;
  982.                 if ($getConsumers 0
  983.                 {
  984.                     foreach ($getConsumers as $row
  985.                     {
  986.                         echo '<pre>';
  987.                         print_r($row);
  988.                         echo '</pre>';
  989.                         //die('stop');
  990.                         ////////////////////////////////////////////////////
  991.                         /// Guardem la data per començar des de aquesta data
  992.                         ////////////////////////////////////////////////////
  993.                         $dUltimaModificacio str_replace(' 00:00:00.000','',$row['Data_Venda']) . 'T' $row['Hora_Venda'] . '.000';
  994.                         $bDataModificada true;
  995.                         ////////////////////////////////////////////////////////////////////////////////
  996.                         // Consultar si existeix el consumer a entorno i si existeix fer l'actualització
  997.                         ////////////////////////////////////////////////////////////////////////////////
  998.                         $aParam = array(    
  999.                             'customer_id_proj'  => $row['Person_Proj'],
  1000.                             'customer_id_pos'   => $row['Person_Pos'],
  1001.                             'customer_id_num'   => $row['Person_Num']
  1002.                         );
  1003.                         $enConsumers $this->em->getRepository(Consumers::class)->findOneBy($aParam);
  1004.                         if ($enConsumers)
  1005.                         {
  1006.                             $iConsumerFill $enConsumers->getId();
  1007.                             dump($enConsumers);
  1008.                             $enConsumersUpdate $this->em->getRepository(Consumers::class)->find($iConsumerFill);
  1009.                             if ($enConsumersUpdate
  1010.                             {
  1011.                                 ////////////////////////////////
  1012.                                 // Actualitzar dades de consumer
  1013.                                 ////////////////////////////////
  1014.                                 $enConsumersUpdate->setWtp($row['Wtp']);
  1015.                                 $enConsumersUpdate->setOrigenEntrada('Mod sqlServer');
  1016.                                 $enConsumersUpdate->setResposta4i(($enConsumersUpdate->getResposta4i() !=''?$enConsumersUpdate->getResposta4i() . '<br>':'') . '|Mod sqlServer|Modificat des del sqlServer REEXPEDICIONS el ' .  date('Y-m-d H:i:s') . ' ' print_r($rowtrue) );
  1017.                                 //dump ($enConsumersUpdate);
  1018.                                 //die('stop');
  1019.                                 $this->em->persist($enConsumersUpdate);
  1020.                                 $this->em->flush();
  1021.                                 $aResultats[$iCon]['consumer'] = $row;
  1022.                             }
  1023.                             ////////////////////////////////////////////////
  1024.                             // TODO: S'ha de treure aquest break a real!!!!!
  1025.                             ////////////////////////////////////////////////
  1026.                             //break;
  1027.                         }
  1028.                         $iTotalRegistresLlegits++;
  1029.                     }
  1030.                 }
  1031.                 //////////////////////////////////////////////////
  1032.                 // Actualitzem els valors a la taula ValorsWsAxess
  1033.                 //////////////////////////////////////////////////
  1034.                 if ($bDataModificada
  1035.                 {
  1036.                     $dateTime = new \DateTime();
  1037.                     $entityValorsWsAxess->setUltimDataModificacioReemplazamentWtp($dateTime->setTimestamp(strtotime($dUltimaModificacio)));
  1038.                 }
  1039.                 $dateTime = new \DateTime();
  1040.                 $entityValorsWsAxess->setUltimaLecturaReemplazamentWtp($dateTime->createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s')));
  1041.                 $this->em->persist($entityValorsWsAxess);
  1042.                 $this->em->flush();
  1043.                 $iIniciRegistres $iIniciRegistres $iTotalRegistresLlegits;
  1044.                 ////////////////////////////////////////////////
  1045.                 // TODO: S'ha de treure aquest break a real!!!!!
  1046.                 ////////////////////////////////////////////////
  1047.                 //break;
  1048.             } while ($iTotalRegistresLlegits == $iCuantosRegistros);
  1049.         }
  1050.         if ($bTest
  1051.         {
  1052.             echo '<br>Fi -> ' date('Y-m-d H:i:s');
  1053.             echo '<pre>';
  1054.             dump ($aResultats);
  1055.             echo '</pre>';
  1056.         }
  1057.         if (!empty($aResultats))
  1058.         {
  1059.             $sDirAux $this->sDir 'update_ReemplazamentWTP_Axess';
  1060.             if (!file_exists($sDirAux))
  1061.             {
  1062.                 mkdir($sDirAux0777true);
  1063.                 chmod($sDirAux0777);
  1064.             }
  1065.             $sDirAux2 $sDirAux '/' date("Ymd");
  1066.             if (!file_exists($sDirAux2))
  1067.             {
  1068.                 mkdir($sDirAux20777);
  1069.                 chmod($sDirAux20777);
  1070.             }
  1071.             $aFileXmlRequest fopen($sDirAux2 '/' date("Y_m_d_H_i_s") . '_reemplazament_wtp_' date("YmdHis") . '.txt''w');
  1072.             foreach ($aResultats as $rId => $rVal)
  1073.             {
  1074.                 fputs($aFileXmlRequest$rId ' : ' print_r($rValtrue) . PHP_EOL);
  1075.             }
  1076.             fclose($aFileXmlRequest);
  1077.             /*
  1078.             $sMissatge = '<pre>' . print_r($aResultats, true) . '</pre>';
  1079.             $this->phpmailer->EnviarAction(array(
  1080.                 'sSubjecte' => "Masella WSAxess Error Consulta_AMB_Consumers",
  1081.                 'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  1082.                 'sTo'       => 'jramon@entorno.es',
  1083.                 'sMissatge' => $sMissatge,
  1084.             ));
  1085.             */
  1086.         }
  1087.         //////////////////////////////////////////////////
  1088.         // Actualitzem els valors a la taula ValorsWsAxess
  1089.         //////////////////////////////////////////////////
  1090.         if ($bDataModificada
  1091.         {
  1092.             $dateTime = new \DateTime();
  1093.             $entityValorsWsAxess->setUltimDataModificacioReemplazamentWtp($dateTime->setTimestamp(strtotime($dUltimaModificacio)));
  1094.         }
  1095.         $dateTime = new \DateTime();
  1096.         $entityValorsWsAxess->setUltimaLecturaReemplazamentWtp($dateTime->createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s')));
  1097.         $this->em->persist($entityValorsWsAxess);
  1098.         $this->em->flush();
  1099.         return new Response('Finalitzat');
  1100.     }
  1101.     function updateWTPBySqlServerAction()
  1102.     {
  1103.         set_time_limit(300000);
  1104.         if ($this->getParameter('kernel.environment') == 'dev')
  1105.         {
  1106.             $bTest true;
  1107.             echo "Inici actualització a entorno de WTP des de sqlServer: " date("Y-m-d H:i:s") . '<br>';
  1108.         } else {
  1109.             $bTest false;
  1110.         }
  1111.         /* Connect using Windows Authentication. */
  1112.         try {
  1113.             $options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
  1114.             $conn = new \PDO('sqlsrv:Server=' $this->sServer ';Database=' $this->sBDname ';Encrypt = false;'$this->sUserName$this->sPassword$options);
  1115.         } catch (Exception $e) {
  1116.             die(print_r($e->getMessage(), false));
  1117.         }
  1118.         $sDataHora date("Y_m_d_H_i_s");
  1119.         $this->sDir $this->sBase 'query_ws/';
  1120.         $sReturn "EN-1|No hi ha WTP per modificar";
  1121.         $iCon 0;
  1122.         $aResultats = array();
  1123.         $sQuery "SELECT cl "
  1124.             " FROM App:ComandesLinies cl INNER JOIN App:Comandes c "
  1125.             " WHERE cl.comandes = c.id"
  1126.             " AND c.estat = :estat"
  1127.             " AND c.enviat = :enviat"
  1128.             " AND cl.anulada = :anulada"
  1129.             " AND cl.id > :comandesLiniesID"
  1130.             " AND (cl.xip_introduit_client is null"
  1131.             " OR cl.xip_introduit_client = :xipintroduitclient)"
  1132.             " AND (cl.estat = :estatlinia"
  1133.             " OR cl.estat = :estatlinia2"
  1134.             " OR cl.estat is null"
  1135.             " OR cl.estat = :estatlinia3"
  1136.             " OR cl.estat = :estatlinia4)"
  1137.             " AND cl.journal_no is not null";
  1138.         //$sQuery .= ' ORDER BY p.id ASC';
  1139.         $sQuery .= ' ORDER BY c.data ASC';
  1140.         //echo $sQuery;
  1141.         $query $this->em->createQuery($sQuery);
  1142.         $query->setParameter('estat'1);
  1143.         $query->setParameter('enviat'1);
  1144.         $query->setParameter('estatlinia''open');
  1145.         $query->setParameter('estatlinia2''inwork');
  1146.         $query->setParameter('estatlinia3''');
  1147.         $query->setParameter('estatlinia4''aborted');
  1148.         $query->setParameter('xipintroduitclient''');
  1149.         $query->setParameter('anulada''0');
  1150.         $query->setParameter('comandesLiniesID'61794);// això ho fem fer no buscar línies de temporades passades
  1151.         $objComandes $query->getResult();
  1152.         foreach ($objComandes as $key => $val)
  1153.         {
  1154.             $aResultats[$iCon]['NJOURNALNR'] = $val->getJournalNo();
  1155.             $aResultats[$iCon]['SERIALNR'] = $val->getSerialNr();
  1156.             $aResultats[$iCon]['NPOSNR'] = $val->getPosNo();
  1157.             $aResultats[$iCon]['NPROJNR'] = $val->getProjNo();
  1158.             echo '<br>';
  1159.             echo 'NJOURNALNR : ' $val->getJournalNo() . '<br>';
  1160.             echo 'SERIALNR : ' $val->getSerialNr() . '<br>';
  1161.             echo 'NPOSNR : ' $val->getPosNo() . '<br>';
  1162.             echo 'NPROJNR : ' $val->getProjNo() . '<br>';
  1163.             echo '<br>';
  1164.             ///////////////////////////////////////////
  1165.             // consulta a l'sqlServer amb la data
  1166.             ///////////////////////////////////////////
  1167.             $tsql "SELECT * FROM V_AXESS_PREPAIDTICKETS2";
  1168.             $tsql .= " WHERE 1=1";
  1169.             $tsql .= " AND nKassaNr = '" $val->getPosNo() . "'";
  1170.             $tsql .= " AND nProjNr = '" $val->getProjNo() . "'";
  1171.             $tsql .= " AND nJournalNr = '" $val->getJournalNo() . "'";
  1172.             //echo $tsql;
  1173.             //die('stop');
  1174.             //$getConsumers = $conn->prepare($tsql, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL,]);
  1175.             $aLiniesResult $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
  1176.             echo '<br>' count($aLiniesResult) . '<br>';
  1177.             $bDataModificada false;
  1178.             if (count($aLiniesResult) > 0)
  1179.             {
  1180.                     $aLinies $aLiniesResult[0];
  1181.                 echo '<pre>';
  1182.                 print_r($aLinies);
  1183.                 echo '</pre>';
  1184.                 $dateTime = new \DateTime();
  1185.                 $entityComandesLinies $this->em->getRepository(ComandesLinies::class)->find($val->getId());
  1186.                 $aResultats[$iCon]['sqlserver'] = 'sense resultat';
  1187.                 if ($entityComandesLinies)
  1188.                 {
  1189.                     $aResultats[$iCon]['sqlserver'] = $aLinies;
  1190.                     /////////////////////////////////////
  1191.                     // s'ha d'actualitzar al consumer WTP
  1192.                     /////////////////////////////////////
  1193.                     if ($aLinies['szWtpNr64'] != '')
  1194.                     {
  1195.                         $entityComandesLinies->setXip($aLinies['szWtpNr64']);
  1196.                         if (!is_null($entityComandesLinies->getConsumers()))
  1197.                         {
  1198.                             $entityConsumers $this->em->getRepository(Consumers::class)->find($entityComandesLinies->getConsumers()->getId());
  1199.                             $entityConsumers->setWtp($aLinies['szWtpNr64']);
  1200.                             $this->em->persist($entityComandesLinies);
  1201.                             $this->em->flush();
  1202.                         }
  1203.                         $entityComandesLinies->setEstat('completed');
  1204.                         $entityComandesLinies->setRespostaEnviat('Actualitza WTP des de SqlServer');
  1205.                         $entityComandesLinies->setDataComunicacio($dateTime->createFromFormat('Y-m-d H:i:s'date('Y-m-d H:i:s')));
  1206.                         $this->em->persist($entityComandesLinies);
  1207.                         $this->em->flush();
  1208.                     }
  1209.                 }
  1210.             }
  1211.             ////////////////////////////////////////////////
  1212.             // TODO: S'ha de treure aquest break a real!!!!!
  1213.             ////////////////////////////////////////////////
  1214.             //break;
  1215.         }
  1216.         if ($bTest)
  1217.         {
  1218.             echo '<br>Fi -> ' date('Y-m-d H:i:s');
  1219.             echo '<pre>';
  1220.             dump ($aResultats);
  1221.             echo '</pre>';
  1222.         }
  1223.         if (!empty($aResultats))
  1224.         {
  1225.             $sDirAux $this->sDir 'update_WTP_by_SqlServer';
  1226.             if (!file_exists($sDirAux))
  1227.             {
  1228.                 mkdir($sDirAux0777true);
  1229.                 chmod($sDirAux0777);
  1230.             }
  1231.             $sDirAux2 $sDirAux '/' date("Ymd");
  1232.             if (!file_exists($sDirAux2))
  1233.             {
  1234.                 mkdir($sDirAux20777);
  1235.                 chmod($sDirAux20777);
  1236.             }
  1237.             $aFileXmlRequest fopen($sDirAux2 '/' date("Y_m_d_H_i_s") . '_reemplazament_wtp_' date("YmdHis") . '.txt''w');
  1238.             foreach ($aResultats as $rId => $rVal)
  1239.             {
  1240.                 fputs($aFileXmlRequest$rId ' : ' print_r($rValtrue) . PHP_EOL);
  1241.             }
  1242.             fclose($aFileXmlRequest);
  1243.             /*
  1244.             $sMissatge = '<pre>' . print_r($aResultats, true) . '</pre>';
  1245.             $this->phpmailer->EnviarAction(array(
  1246.                 'sSubjecte' => "Masella WSAxess Error Consulta_AMB_Consumers",
  1247.                 'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  1248.                 'sTo'       => 'jramon@entorno.es',
  1249.                 'sMissatge' => $sMissatge,
  1250.             ));
  1251.             */
  1252.         }
  1253.         return new Response('Finalitzat');
  1254.     }
  1255.     function sendEstadisticsProcesAction ()
  1256.     {
  1257.         $this->sDir $this->sBase 'query_ws/';
  1258.         $sDirAux $this->sDir 'create_attribute_Axess';
  1259.         if (!file_exists($sDirAux))
  1260.         {
  1261.             mkdir($sDirAux0777true);
  1262.             chmod($sDirAux0777);
  1263.         }
  1264.         $sDirAux2 $sDirAux '/' date("Ymd");
  1265.         if (!file_exists($sDirAux2))
  1266.         {
  1267.             mkdir($sDirAux20777);
  1268.             chmod($sDirAux20777);
  1269.         }
  1270.         $aFileXmlRequest fopen($sDirAux2 '/' date("Y_m_d_H_i_s") . '_create_attribute_' date("YmdHis") . '.txt''w');
  1271.         set_time_limit(300000);
  1272.         $objWebServicesGenerateTokenAccount = new WebServicesGenerateTokenAccountController();
  1273.         /////////////////////////////////////////////////////////////////////////////////////
  1274.         /// Quan la cridem com una clase no te acces al getParameter, així li passem el valor
  1275.         /////////////////////////////////////////////////////////////////////////////////////
  1276.         $objWebServicesGenerateTokenAccount->setEnviroments($this->getParameter('kernel.environment'));
  1277.         $objWebServicesGenerateTokenAccount->setObjContainer($this);
  1278.         $objWebServicesGenerateTokenAccount->setObjGetMailer($this->phpmailer);
  1279.         echo "Inici actualització  de dades estadístiques: " date("Y-m-d H:i:s") . '<br>';
  1280.         if ($this->getParameter('kernel.environment') == 'dev')
  1281.         {
  1282.             $bTest true;
  1283.         } else {
  1284.             $bTest false;
  1285.         }
  1286.         $sQuery "SELECT p "
  1287.             " FROM App:Comandes p "
  1288.             " WHERE p.estat = 1"
  1289.             " AND p.enviat = 1"
  1290.             //. " AND p.enviat = 1)"
  1291.             //. " OR p.estat = 3)"
  1292.             " AND p.proces_estadistic != 1"
  1293.             //. " AND (p.id = 39954"
  1294.             //. " OR p.id = 39962"
  1295.             //. " OR p.id = 39959"
  1296.             //. " OR p.id = 39958"
  1297.             //. " OR p.id = 39957"
  1298.             //. " OR p.id = 39956"
  1299.             //. " )"
  1300.             ;
  1301.         $sQuery .= ' ORDER BY p.id ASC';
  1302.         //echo $sQuery;
  1303.         $query $this->em->createQuery($sQuery);
  1304.         $query->setFirstResult(0);
  1305.         $query->setMaxResults(350);
  1306.         $objComandes $query->getResult();
  1307.         if ($objComandes)
  1308.         {
  1309.             if ($this->getParameter('kernel.environment') == 'dev')
  1310.             {
  1311.                 //dump($objComandes);
  1312.             }
  1313.             foreach ($objComandes as $key => $aComanda)
  1314.             {
  1315.                 $aAtribut = array();
  1316.                 $bTenimValidateToken true;
  1317.                 echo '-----------------------------------------------------------------------------------<br>';
  1318.                 echo 'Comanda ->' $aComanda->getLocalitzador() . '-' $aComanda->getId() . '-<br>';
  1319.                 fputs($aFileXmlRequest'-----------------------------------------------------------------------------------' PHP_EOL);
  1320.                 fputs($aFileXmlRequest'Comanda ->' $aComanda->getLocalitzador() . '-' $aComanda->getId() . PHP_EOL);
  1321.                 $objComandesLinies $this->em->getRepository(ComandesLinies::class)->findBy(array(
  1322.                     'comandes' => $aComanda->getId()
  1323.                 ));
  1324.                 if ($objComandesLinies)
  1325.                 {
  1326.                     $bErrorAttribut false;
  1327.                     foreach ($objComandesLinies as $key => $aLinia
  1328.                     {
  1329.                         //dump($aLinia);
  1330.                         if ($aLinia->getAnulada() == 0) {
  1331.                             echo 'Atribut ->' $aLinia->getAbonaments()->getAtribut() . '-<br>';
  1332.                             fputs($aFileXmlRequest' Línia -> ' $aLinia->getId() . ' Atribut -> ' $aLinia->getAbonaments()->getAtribut() . PHP_EOL);
  1333.                             if ($aLinia->getAbonaments()->getAtribut() != ''
  1334.                             {
  1335.                                 if (!array_key_exists($aLinia->getAbonaments()->getAtribut(), $aAtribut)) 
  1336.                                 {
  1337.                                     $aAtribut[$aLinia->getAbonaments()->getAtribut()] = 0;
  1338.                                 }
  1339.                                // if ($aComanda->getEstat() == 3) // Si és una devolució s'ha de restar
  1340.                                // {
  1341.                                //     $aAtribut[$aLinia->getAbonaments()->getAtribut()]--;
  1342.                                // } else {
  1343.                                     $aAtribut[$aLinia->getAbonaments()->getAtribut()]++;
  1344.                                // }
  1345.                             } else {
  1346.                                 fputs($aFileXmlRequest'ERROR : No valor attribut.' PHP_EOL);
  1347.                                 fputs($aFileXmlRequest$aLinia->getAbonaments()->getNomCa() . PHP_EOL);
  1348.                                 echo 'ERROR : No valor attribut.' $aLinia->getAbonaments()->getNomCa() . '<br>';
  1349.                                 $bErrorAttribut true;
  1350.                             }
  1351.                         }
  1352.                     }
  1353.                     
  1354.                     if (!empty($aAtribut))
  1355.                     {
  1356.                         //dump ($aAtribut);
  1357.                         echo 'Costumer -> ' $aComanda->getConsumers()->getCustomerIdProj() . '-' $aComanda->getConsumers()->getCustomerIdPos() . '-' $aComanda->getConsumers()->getCustomerIdNum() . '<br>';
  1358.                         fputs($aFileXmlRequest'Costumer -> ' $aComanda->getConsumers()->getCustomerIdProj() . '-' $aComanda->getConsumers()->getCustomerIdPos() . '-' $aComanda->getConsumers()->getCustomerIdNum() . PHP_EOL);
  1359.                         $aDades['NPERSPROJNO'] = $aComanda->getConsumers()->getCustomerIdProj();
  1360.                         $aDades['NPERSPOSNO'] = $aComanda->getConsumers()->getCustomerIdPos();
  1361.                         $aDades['NPERSNO'] = $aComanda->getConsumers()->getCustomerIdNum();
  1362.                         $aDades['aAtribut'] = $aAtribut;
  1363.                         ////////////////////////////////////////////////////
  1364.                         /// Generem el token permanent del consumer si podem
  1365.                         ////////////////////////////////////////////////////
  1366.                         if (is_null($aComanda->getConsumers()->getValidateToken())
  1367.                             || $aComanda->getConsumers()->getValidateToken() == '')
  1368.                         {
  1369.                             $bTenimValidateToken false;
  1370.                             $aElements = array(
  1371.                                 'i_szUserName'      => $aComanda->getConsumers()->getEmail(),
  1372.                                 'i_szPassword'      => $aComanda->getConsumers()->getClau(),
  1373.                                 'i_szLoginToken'    => '',
  1374.                                 'i_nLoginTypeNr'    => 1
  1375.                             );
  1376.                             $jsonReturn $objWebServicesGenerateTokenAccount->generateTokenAccount($aElements$this->em);
  1377.                             $aReturnWebServicesGenerateTokenAccount json_decode($jsonReturn->getContent(), true);
  1378.                             //dump ($aReturnWebServicesGenerateTokenAccount);
  1379.                             if ($aReturnWebServicesGenerateTokenAccount['error']['ConnexioConnectAxess']
  1380.                                 && $aReturnWebServicesGenerateTokenAccount['error']['GenerateToken']) 
  1381.                             {
  1382.                                 $bTenimValidateToken true;
  1383.                             }
  1384.                         }
  1385.                         if ($bTenimValidateToken
  1386.                         {
  1387.                             echo '-' $aComanda->getConsumers()->getValidateToken() . '-<br>';
  1388.                             echo '<pre>';
  1389.                             print_r($aDades);
  1390.                             echo '<pre>';
  1391.                             $aElements = array(
  1392.                                 'i_szUserName'      => '',
  1393.                                 'i_szPassword'      => '',
  1394.                                 'i_szLoginToken'    => $aComanda->getConsumers()->getValidateToken(),
  1395.                                 'i_nLoginTypeNr'    => 5
  1396.                             );
  1397.                             $jsonReturn $objWebServicesGenerateTokenAccount->createAttributeToCustomer($aElements$aAtribut);
  1398.                             $aReturnCreateAttributeToCustomer json_decode($jsonReturn->getContent(), true);
  1399.                             dump($aReturnCreateAttributeToCustomer);
  1400.                             fputs($aFileXmlRequest'Resposta Axess ' print_r($aReturnCreateAttributeToCustomertrue) . PHP_EOL);
  1401.                             if ($aReturnCreateAttributeToCustomer['error']['ConnexioConnectAxess']
  1402.                                 && $aReturnCreateAttributeToCustomer['error']['CreateAttribute']) 
  1403.                             {
  1404.                                 $objComandes $this->em->getRepository(Comandes::class)->find($aComanda->getId());
  1405.                                 $objComandes->setProcesEstadistic(1);
  1406.                                 $this->em->persist($objComandes);
  1407.                                 $this->em->flush();
  1408.                                 fputs($aFileXmlRequest'Assiganció correcte' PHP_EOL);
  1409.                                 echo '<br>Assiganció correcte<br>';
  1410.                             } else {
  1411.                                 fputs($aFileXmlRequest'ERROR : Resposta Axess ' print_r($aReturnCreateAttributeToCustomertrue) . PHP_EOL);
  1412.                             }
  1413.                         } else {
  1414.                             fputs($aFileXmlRequest'ERROR : No Token ' print_r($aDadestrue) . PHP_EOL);
  1415.                             echo '<br>No tenim token de :';
  1416.                             echo '<pre>';
  1417.                             print_r($aDades);
  1418.                             echo '<pre>';
  1419.                         }
  1420.                     } else {
  1421.                         //////////////////////////////////////////////////////////////
  1422.                         // Si no té atributs segurament té totes les línies anul·lades
  1423.                         //////////////////////////////////////////////////////////////
  1424.                         //if ($bErrorAttribut === false)
  1425.                         //{
  1426.                             fputs($aFileXmlRequest'Segurament té totes les línies anul·lades o és una assegurança' PHP_EOL);
  1427.                             echo 'Segurament té totes les línies anul·lades' '<br>';
  1428.                             $objComandes $this->em->getRepository(Comandes::class)->find($aComanda->getId());
  1429.                             $objComandes->setProcesEstadistic(1);
  1430.                             $this->em->persist($objComandes);
  1431.                             $this->em->flush();
  1432.                         //}
  1433.                     }
  1434.                 }
  1435.             }
  1436.             fclose($aFileXmlRequest);
  1437.         }
  1438.         if ($this->getParameter('kernel.environment') == 'dev')
  1439.         {
  1440.         }
  1441.         echo '-----------------------------------------------------------------------------------<br>';
  1442.         echo "Final actualització de dades estadístiques: " date("Y-m-d H:i:s") . '<br>';
  1443.         return new Response('Finalitzat');
  1444.     }
  1445. /*
  1446.     function sendEstadisticsProcesAction (){
  1447.         die();
  1448.         set_time_limit(300000);
  1449.         $objWebServicesGenerateTokenAccount = new WebServicesGenerateTokenAccountController();
  1450.         /////////////////////////////////////////////////////////////////////////////////////
  1451.         /// Quan la cridem com una clase no te acces al getParameter, així li passem el valor
  1452.         /////////////////////////////////////////////////////////////////////////////////////
  1453.         $objWebServicesGenerateTokenAccount->setEnviroments($this->getParameter('kernel.environment'));
  1454.         $objWebServicesGenerateTokenAccount->setObjContainer($this->container);
  1455.         $objWebServicesGenerateTokenAccount->setObjGetMailer($this->get('mailer'));
  1456.         if ($this->getParameter('kernel.environment') == 'dev')
  1457.         {
  1458.             $bTest = true;
  1459.             echo "Inici actualització Token account: " . date("Y-m-d H:i:s") . '<br>';
  1460.         } else {
  1461.             $bTest = false;
  1462.         }
  1463.         $sQuery = "SELECT p "
  1464.             . " FROM App:Consumers p "
  1465.             . " WHERE p.historic = 0"
  1466.             . " AND p.customer_account_no IS NOT NULL"
  1467.             . " AND p.validate_token IS NULL"
  1468.         ;
  1469.         $sQuery .= ' ORDER BY p.id ASC';
  1470.         $query = $this->em->createQuery($sQuery);
  1471.         $objConsumers = $query->getResult();
  1472.         if ($objConsumers)
  1473.         {
  1474.             if ($this->getParameter('kernel.environment') == 'dev')
  1475.             {
  1476.                 //dump($objComandes);
  1477.             }
  1478.             $iCon = 0;
  1479.             foreach ($objConsumers as $key => $aConsumer)
  1480.             {
  1481.                 $bTenimValidateToken = true;
  1482.                 $iCon++;
  1483.                 echo '(' . $iCon . ') Consumer ->account:' . $aConsumer->getCustomerAccountNo() . ' id:' . $aConsumer->getId() . '<br>';
  1484.                 ////////////////////////////////////////////////////
  1485.                 /// Generem el token permanent del consumer si podem
  1486.                 ////////////////////////////////////////////////////
  1487.                 if (is_null($aConsumer->getValidateToken())
  1488.                     || $aConsumer->getValidateToken() == '')
  1489.                 {
  1490.                     $bTenimValidateToken = false;
  1491.                     $SZLOGINTOKEN = '';
  1492.                     $aElements = array( 'i_szUserName'      => $aConsumer->getEmail(),
  1493.                                         'i_szPassword'      => $aConsumer->getClau(),
  1494.                                         'i_szLoginToken'    => '',
  1495.                                         'i_nLoginTypeNr'    => 1
  1496.                     );
  1497.                     $jsonReturn = $objWebServicesGenerateTokenAccount->generateTokenAccount($aElements, $em);
  1498.                     $aReturnWebServicesGenerateTokenAccount = json_decode($jsonReturn->getContent(), true);
  1499.                     //dump ($aReturnWebServicesGenerateTokenAccount);
  1500.                     if ($aReturnWebServicesGenerateTokenAccount['error']['ConnexioConnectAxess']
  1501.                         && $aReturnWebServicesGenerateTokenAccount['error']['GenerateToken']) {
  1502.                         $bTenimValidateToken = true;
  1503.                         $SZLOGINTOKEN = $aReturnWebServicesGenerateTokenAccount['aCustomerAccount']['SZLOGINTOKEN'];
  1504.                     }
  1505.                 }
  1506.                 echo $aConsumer->getCustomerIdProj() . '-' . $aConsumer->getCustomerIdPos() . '-' . $aConsumer->getCustomerIdNum() . '<br>';
  1507.                 if ($bTenimValidateToken) {
  1508.                     echo '-' . $SZLOGINTOKEN . '-<br>';
  1509.                 } else {
  1510.                     echo '<br>No tenim token!!!!';
  1511.                 }
  1512.                 echo '<br>--------------------------<br>';
  1513.                 //die('stop');
  1514.             }
  1515.         }
  1516.         if ($this->getParameter('kernel.environment') == 'dev')
  1517.         {
  1518.             echo "Final actualització de Token account: " . date("Y-m-d H:i:s") . '<br>';
  1519.         }
  1520.         return new Response('Finalitzat');
  1521.     }
  1522. */
  1523.     function sendEmailComandesNoAcabadesAction ()
  1524.     {
  1525.         $entityValorsWsAxess $this->em->getRepository(ValorsWsAxess::class)->find(1);
  1526.         if (is_null($entityValorsWsAxess ->getUltimEnviamentNoComanda())
  1527.             || $entityValorsWsAxess ->getUltimEnviamentNoComanda()->format('Y-m-d') != date("Y-m-d"))
  1528.         {
  1529.             $sQuery "SELECT p "
  1530.                 " FROM App:Comandes p "
  1531.                 " WHERE p.estat = 0"
  1532.                 " AND p.lloc_venda = 'Web'"
  1533.                 " AND p.data >= '" date("Y-m-d"strtotime('-1 days')) . " 00:00:00'"
  1534.                 " AND p.data <= '" date("Y-m-d"strtotime('-1 days')) . " 23:59:59'"
  1535.                 " AND p.consumers IS NOT NULL";
  1536.             //echo $sQuery;
  1537.             $query $this->em->createQuery($sQuery);
  1538.             $objComandes $query->getResult();
  1539.             //dump($objComandes);
  1540.             if ($objComandes)
  1541.             {
  1542.                 $aEmails = array();
  1543.                 foreach ($objComandes as $key => $aComanda)
  1544.                 {
  1545.                     echo '<br>Comanda ->' $aComanda->getLocalitzador() . '-<br>';
  1546.                     if (!in_array($aComanda->getConsumers()->getEmail(), $aEmails))
  1547.                     {
  1548.                         $aEmails[] = $aComanda->getConsumers()->getEmail();
  1549.                         $bRes $this->phpmailer->EnviarAction(array(
  1550.                             'sSubjecte' => 'Ajut per acabar la comanda',
  1551.                             'sFrom'     => $this->getParameter('EMAIL_RESERVAS'),
  1552.                             'sTo'       => $aComanda->getConsumers()->getEmail(),
  1553.                             'sMissatge' => $this->renderView('plantillaEmailComandesNoAcabades.html.twig', array()),
  1554.                         ));
  1555.                         if ($bRes) echo 'Email enviat<br>';
  1556.                     }
  1557.                 }
  1558.             }
  1559.             $dateTime = new \DateTime();
  1560.             $entityValorsWsAxess->setUltimEnviamentNoComanda($dateTime->createFromFormat('Y-m-d'date("Y-m-d")));
  1561.             $this->em->persist($entityValorsWsAxess);
  1562.             $this->em->flush();
  1563.         } else {
  1564.             echo 'ja executat avui.';
  1565.         }
  1566.         return new Response('Finalitzat');
  1567.     }
  1568.     function sendAcceptarRebrePromoDescompteAction ()
  1569.     {
  1570.         if ($this->getParameter('kernel.environment') == 'dev')
  1571.         {
  1572.             $bTest true;
  1573.             echo "Inici actualització rebre promoció i descompte des de sqlServer: " date("Y-m-d H:i:s") . '<br>';
  1574.         } else {
  1575.             $bTest false;
  1576.         }
  1577.         /* Connect using Windows Authentication. */
  1578.         try {
  1579.             $options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
  1580.             $conn = new \PDO('sqlsrv:Server=' $this->sServer ';Database=' $this->sBDname ';Encrypt = false;'$this->sUserName$this->sPassword$options);
  1581.         } catch (Exception $e) {
  1582.             die(print_r($e->getMessage(), false));
  1583.         }
  1584.         $sQuery "SELECT p "
  1585.             " FROM App:Rgpd p "
  1586.             " WHERE p.enviat = 0"
  1587.             " AND p.consumers IS NOT NULL"
  1588.             " ORDER BY p.id ASC";
  1589.         //echo $sQuery;
  1590.         $query $this->em->createQuery($sQuery);
  1591.         $objRgpd $query->getResult();
  1592.         //dump($objRgpd);
  1593.         if ($objRgpd)
  1594.         {
  1595.             foreach ($objRgpd as $key => $aRgpd) {
  1596.                 if ($aRgpd->getConsumers()) {
  1597.                     if ($aRgpd->getConsumers()->getCustomeraccountno()) {
  1598.                         echo '<br>Rgpd ->' $aRgpd->getNewsletter() . '<br>';
  1599.                         echo '<br>Rgpd ->' $aRgpd->getIdioma() . '<br>';
  1600.                         echo '<br>Rgpd ->' $aRgpd->getConsumers()->getCustomeraccountno() . '<br>';
  1601.                         ///////////////////////////////////////////
  1602.                         // consulta a l'sqlServer amb la data
  1603.                         ///////////////////////////////////////////
  1604.                         $tsql "SELECT * FROM ENTORNO_CUSTOMER_CHECK";
  1605.                         $tsql .= " WHERE 1=1";
  1606.                         $tsql .= " AND CustomerNr =" $aRgpd->getConsumers()->getCustomeraccountno();
  1607.                         //echo $tsql;
  1608.                         $getCustomerCheck $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
  1609.                         echo '<br>Total : ' count($getCustomerCheck) . '<br>';
  1610.                         if (count($getCustomerCheck) > 0) {
  1611.                             echo '<br>Update<br>';
  1612.                             $tsql "UPDATE ENTORNO_CUSTOMER_CHECK SET ";
  1613.                             $tsql .= " ComunicationLanguage=:ComunicationLanguage,";
  1614.                             $tsql .= " CheckRebrePromocions=:CheckRebrePromocions";
  1615.                             $tsql .= " WHERE ";
  1616.                             $tsql .= " CustomerNr = :CustomerNr";
  1617.                         } else {
  1618.                             echo '<br>Insert<br>';
  1619.                             $tsql "INSERT INTO ENTORNO_CUSTOMER_CHECK (";
  1620.                             $tsql .= " CustomerNr,";
  1621.                             $tsql .= " ComunicationLanguage,";
  1622.                             $tsql .= " CheckRebrePromocions";
  1623.                             $tsql .= " ) VALUES (";
  1624.                             $tsql .= " :CustomerNr,";
  1625.                             $tsql .= " :ComunicationLanguage,";
  1626.                             $tsql .= " :CheckRebrePromocions";
  1627.                             $tsql .= " )";
  1628.                         }
  1629.                         //echo $tsql;
  1630.                         // Preparem la sentència SQL
  1631.                         $stmt $conn->prepare($tsql);
  1632.                         // Assignem valors als paràmetres
  1633.                         $stmt->bindParam(':CustomerNr'$aRgpd->getConsumers()->getCustomeraccountno());
  1634.                         $stmt->bindParam(':ComunicationLanguage'$aRgpd->getIdioma());
  1635.                         $sCheckRebrePromocions 'n';
  1636.                         if ($aRgpd->getNewsletter() == 1) {
  1637.                             $sCheckRebrePromocions 's';
  1638.                         }
  1639.                         $stmt->bindParam(':CheckRebrePromocions'$sCheckRebrePromocions);
  1640.                         // Executem la sentència SQL
  1641.                         if ($stmt->execute()) {
  1642.                             if (count($getCustomerCheck) > 0) {
  1643.                                 echo "Actualització exitosa!";
  1644.                             } else {
  1645.                                 echo "Inserció exitosa!";
  1646.                             }
  1647.                             // Marquem el registre com a enviat
  1648.                             $enRgpd $this->em->getRepository(Rgpd::class)->find($aRgpd->getId());
  1649.                             $enRgpd->setEnviat(1);
  1650.                             $this->em->persist($enRgpd);
  1651.                             $this->em->flush();
  1652.                         } else {
  1653.                             echo "Error en la inserció: " $stmt->errorInfo()[2];
  1654.                         }
  1655.                         echo '<br>---------------------<br>';
  1656.                     }
  1657.                 }
  1658.             }
  1659.         }
  1660.         echo '<br>-----------------------------------------------------------------------------------<br>';
  1661.         echo "Final actualització rebre promoció i descompte: " date("Y-m-d H:i:s") . '<br>';
  1662.         return new Response('Finalitzat');
  1663.     }
  1664. }