<?php
namespace App\Controller;
use App\Controller\CorreuController;
use App\Entity\Abonaments;
use App\Entity\PersonType;
use App\Entity\Consumers;
use App\Entity\ValorsWsAxess;
use App\Entity\Paisos;
use App\Entity\Perfils;
use App\Entity\Rgpd;
use App\Entity\ComandesLinies;
use App\Util\changeSize;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Core\SecurityContext;
use App\Entity\ConsumersHasConsumers;
use App\Controller\WebServicesCustomerAccountController;
use Symfony\Component\Translation\LocaleSwitcher;
class ProcessosController extends AbstractController
{
var $sBDname;
//var $sBDname = 'TT_AXESS_MAS_Integracions'; //Real
//var $sBDname = 'TT_AXESS_MAT_Integracions'; //BETA Copia de Real
var $sServer = '192.168.20.179';
var $sUserName = 'Entorno';
var $sPassword = 'Etn@2537';
var $sBase;
private $em;
private $objUtil;
private $phpmailer;
private $sPathUploads;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
$this->objUtil = new \App\Util\Util($this->em);
$this->phpmailer = new CorreuController();
$this->sPathUploads = dirname(__FILE__) . "/../../public/uploads/";
switch ($_SERVER['SERVER_NAME'])
{
case 'masella.com':
case 'www.masella.com':
case 'beta.masella.com':
$this->sBase = '/var/www/vhosts/masella.com/httpdocs/';
$this->sBDname = 'TT_AXESS_MAS_Integracions'; //Real
break;
case 'dev22.masella.com':
$this->sBase = '/var/www/vhosts/' . $_SERVER['SERVER_NAME'] . '/httpdocs/';
$this->sBDname = 'TT_AXESS_MAS_Integracions'; //Real
break;
case 'dev23.masella.com':
case 'sf6.masella.com':
case 'new.masella.com':
$this->sBase = '/var/www/vhosts/' . $_SERVER['SERVER_NAME'] . '/httpdocs/';
$this->sBDname = 'TT_AXESS_MAT_Integracions'; //BETA Copia de Real
break;
case 'masella015.developer.entorno.es':
$this->sBase = '/home/jramon/projects/masella2015/';
$this->sBDname = 'TT_AXESS_MAT_Integracions'; //BETA Copia de Real
break;
}
}
public function check_email_sqlserver($sEmail, $Consumer_id_Proj = null, $Consumer_id_Pos = null, $Consumer_id_Num = null, $aAux = array())
{
/* Connect using Windows Authentication. */
try {
$options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
$conn = new \PDO('sqlsrv:Server=' . $this->sServer . ';Database=' . $this->sBDname . ';Encrypt = false;', $this->sUserName, $this->sPassword, $options);
} catch (Exception $e) {
//die(print_r($e->getMessage(), false));
$bRes = $this->phpmailer->EnviarAction(array(
'sSubjecte' => 'Error en la connexió amb sqlsrv ',
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => $this->getParameter('EMAIL_ERRORES'),
'sMissatge' => print_r($e->getMessage(), false),
));
}
$tsql = "SELECT * FROM v_AXESS_CONSUMERS "
. " WHERE Email = '" . $sEmail . "'"
. " AND Actiu = -1";
if (!is_null($Consumer_id_Proj)
&& !is_null($Consumer_id_Pos)
&& !is_null($Consumer_id_Num))
{
$tsql .= " AND NOT (Consumer_id_Proj = " . $Consumer_id_Proj;
$tsql .= " AND Consumer_id_Pos =" . $Consumer_id_Pos;
$tsql .= " AND Consumer_id_Num =" . $Consumer_id_Num . ")";
}
$aResult = $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
if ($aResult)
{
/*
if ($aResult[0]['Email'] != '') {
/////////////////////////////////////////////////
/// Creem el CustomerAccount si el email existeix
/////////////////////////////////////////////////
$objWebServicesCustomerAccount = new WebServicesCustomerAccountController();
/////////////////////////////////////////////////////////////////////////////////////
/// Quan la cridem com una clase no te acces al getParameter, així li passem el valor
/////////////////////////////////////////////////////////////////////////////////////
$objContainer = $aAux['container'];
$objMailer = $aAux['mailer'];
$objWebServicesCustomerAccount->setEnviroments($objContainer->getParameter('kernel.environment'));
$objWebServicesCustomerAccount->setObjContainer($objContainer);
$objWebServicesCustomerAccount->setObjGetMailer($objMailer);
$aElements = array('i_nPersProjNo' => $aResult[0]['Consumer_id_Proj'],
'i_nPersPosNo' => $aResult[0]['Consumer_id_Pos'],
'i_nPersPersNo' => $aResult[0]['Consumer_id_Num'],
'i_szUserName' => $aResult[0]['Email'],
'i_szPassword' => $aAux['texto_aleatorio'],
);
$jsonReturn = $objWebServicesCustomerAccount->createCustomerAccount($aElements);
$aReturnCreateCustomerAccount = json_decode($jsonReturn->getContent(), true);
if ($aReturnCreateCustomerAccount['error']['CreateCustomerFromPerson']) {
} else {
///////////////////////////////////////////////////////////////////////////
// l'Error -3 segurament és per que ja existeix Account per aquest customer
///////////////////////////////////////////////////////////////////////////
if ($aReturnCreateCustomerAccount['error']['NERRORNO'] != -3) {
$sMensaje = "Error al crear l'account a ProcessosController" . "\n";
$sMensaje .= print_r($aReturnCreateCustomerAccount, true);
$this->phpmailer->EnviarAction(array(
'sSubjecte' => "Error al crear l'account a ProcessosController",
'sFrom' => $objContainer->getParameter('EMAIL_RESERVAS'),
'sTo' => $objContainer->getParameter('EMAIL_ERRORES'),
'sMissatge' => $sMensaje,
));
}
}
}
*/
}
$iTotal = count($aResult);
return ($iTotal == 0?0:1);
}
public function insetPersonTypeindexAction(Request $peticion)
{
$aRequest = $peticion->request;
echo 'Inici -> ' . date('Y-m-d H:i:s') . '<br>';
/* Connect using Windows Authentication. */
try {
$options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
$conn = new \PDO('sqlsrv:Server=' . $this->sServer . ';Database=' . $this->sBDname . ';Encrypt = false;', $this->sUserName, $this->sPassword, $options);
} catch (Exception $e) {
die(print_r($e->getMessage(), false));
}
$tsql = "SELECT * FROM V_AXESS_PERSONTYPE";
echo $tsql;
$aResult = $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
$iPersonTypeCount = count($aResult);
echo '<br>Total PersonType a carregar:' . $iPersonTypeCount . '<br>';
if ($aResult > 0)
{
foreach ($aResult as $row)
{
echo '<pre>';
print_r($row);
echo '</pre>';
$aArray = array('id_axess' => $row['PersonType_id']);
$enPersonTypeAux = $this->em->getRepository(PersonType::class)->findBy($aArray);
$enPersonType = array();
if ($enPersonTypeAux)
{
$enPersonType = $this->em->getRepository(PersonType::class)->find($enPersonTypeAux[0]->getId());
}
if (!$enPersonType)
{
$enPersonType = new PersonType();
}
$enPersonType->setIdAxess($row['PersonType_id']);
$enPersonType->setNomCa($row['PersonType_desc']);
$enPersonType->setNomEn($row['PersonType_desc']);
$enPersonType->setNomEs($row['PersonType_desc']);
$enPersonType->setNomFr($row['PersonType_desc']);
$enPersonType->setNomPt($row['PersonType_desc']);
$enPersonType->setIdGeneral(intval($row['PersonType_General_id']));
$enPersonType->setNomGeneralCa($row['PersonType_General_desc']);
$enPersonType->setNomGeneralEn($row['PersonType_General_desc']);
$enPersonType->setNomGeneralEs($row['PersonType_General_desc']);
$enPersonType->setNomGeneralFr($row['PersonType_General_desc']);
$enPersonType->setNomGeneralPt($row['PersonType_General_desc']);
//$enPersonType->setNomGeneralPt('hlhlhl');
$this->em->persist($enPersonType);
$this->em->flush();
}
}
echo '<br>Fi -> ' . date('Y-m-d H:i:s');
return new Response('Finalitzat');
}
/**
* Updates "Abonaments" entities with data imported from an external source,
* while deactivating old records and inserting or updating new ones based on input data.
*
* This method connects to an external SQL Server database using Windows Authentication,
* fetches external data, and processes each record to either create a new entity or update an existing one.
*
* @param Request $peticion The HTTP request triggering the update process.
*
* @throws \PDOException If an error occurs while connecting to the external database.
* @throws \Exception Any unexpected exception during the process.
*/
public function insetUpdateTarifasAction(Request $peticion)
{
echo 'Inici -> ' . date('Y-m-d H:i:s') . '<br>';
/* Connect using Windows Authentication. */
try {
$options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
$conn = new \PDO('sqlsrv:Server=' . $this->sServer . ';Database=' . $this->sBDname . ';Encrypt = false;', $this->sUserName, $this->sPassword, $options);
} catch (Exception $e) {
die(print_r($e->getMessage(), false));
}
////////////////////////////////////////////////////////////////////////////////////
/// Desactivem els abonaments per posteriorment activar els que venen de la migració
////////////////////////////////////////////////////////////////////////////////////
$sQuery = "UPDATE App:Abonaments abo SET "
. " abo.actiu = :actiu";
$query = $this->em->createQuery($sQuery)
->setParameter('actiu', 0);
$enAbonaments = $query->getResult();
$tsql = "SELECT * FROM V_ENTORNO_PREUS ORDER BY Pool_id ASC, TicketType_id ASC, PersonType_General_id ASC ";
//echo $tsql;
$aResult = $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
$iPersonTypeCount = count($aResult);
echo '<br>Total tarifes a carregar:' . $iPersonTypeCount . '<br>';
if ($aResult > 0)
{
$iOrdre = 0;
foreach ($aResult as $row) {
echo '<pre>';
print_r($row);
echo '</pre>';
//die('stop');
$aArray = array(
'tariff_sheet_id' => $row['TariffSheet_id'],
'tarifa_id' => $row['Tarifa_id'],
'section_id' => $row['Section_id'],
'ticket_type_id' => $row['TicketType_id'],
'pool_id' => $row['Pool_id'],
'person_type_id' => $row['PersonType_id'],
'person_type_general_id' => $row['PersonType_General_id'],
);
$enAbonamentsAux = $this->em->getRepository(Abonaments::class)->findOneBy($aArray);
if ($enAbonamentsAux) {
$enAbonaments = $this->em->getRepository(Abonaments::class)->find($enAbonamentsAux->getId());
} else {
$enAbonaments = new Abonaments();
}
$enAbonaments->setPerId(null);
$enAbonaments->setNomCa($row['TicketType_desc2']);
$enAbonaments->setNomEs($row['TicketType_desc2']);
$enAbonaments->setNomEn($row['TicketType_desc2']);
$enAbonaments->setNomFr($row['TicketType_desc2']);
$enAbonaments->setNomBreuCa($row['TicketType_desc2']);
$enAbonaments->setNomBreuEn($row['TicketType_desc2']);
$enAbonaments->setNomBreuEs($row['TicketType_desc2']);
$enAbonaments->setNomBreuFr($row['TicketType_desc2']);
if ($row['Entorno_Tipus'] == 'EXT') {
$enAbonaments->setEstacio('Extra');
} else {
$enAbonaments->setEstacio($row['Entorno_Tipus']);
}
$enAbonaments->setTariffSheetId($row['TariffSheet_id']);
$enAbonaments->setTarifaId($row['Tarifa_id']);
$enAbonaments->setTarifaDesc($row['Tarifa_desc']);
$enAbonaments->setSectionId($row['Section_id']);
$enAbonaments->setSectionDesc($row['Section_desc']);
//$dateTime = new \DateTime();
//echo $dateTime->setTimestamp(substr($row['Section_data_ini'],0,10));
$enAbonaments->setDataInici(new \DateTime(substr($row['Section_data_ini'], 0, 10)));
$enAbonaments->setDataIniciCalendari(new \DateTime(substr($row['Section_data_ini'], 0, 10)));
$enAbonaments->setDataFi(new \DateTime(substr($row['Section_data_fi'], 0, 10)));
$enAbonaments->setDataFiCalendari(new \DateTime(substr($row['Section_data_fi'], 0, 10)));
$enAbonaments->setTicketTypeId(intval($row['TicketType_id']));
$enAbonaments->setTicketTypeDesc($row['TicketType_desc']);
$enAbonaments->setPoolId($row['Pool_id']);
$enAbonaments->setPoolDesc($row['Pool_desc']);
$enAbonaments->setPersonTypeId($row['PersonType_id']);
$enAbonaments->setPersonTypeDesc($row['PersonType_desc']);
$enAbonaments->setPersonTypeGeneralId($row['PersonType_General_id']);
$enAbonaments->setPersonTypeGeneralDesc($row['PersonType_General_desc']);
$enAbonaments->setPreu($row['Preu']);
$enAbonaments->setActiu(1);
$enAbonaments->setFamiliar(0);
$enAbonaments->setEmpresa(0);
$enAbonaments->setSuplement(0);
$enAbonaments->setSenseSuplement(0);
$enAbonaments->setOrdre($row['Entorno_Ordre']);
$enAbonaments->setAtribut($row['Atribut']);
if ($row['OP_Public'] == 'S') {
$enAbonaments->setNomesTablet(0);
} else {
$enAbonaments->setNomesTablet(1);
}
if ($row['OP_Clubs'] == 'S')
{
$enAbonaments->setClubEsqui(1);
}
if ($row['OP_Clubs'] == 'S'
|| $row['OP_Clubs1'] == 'S'
|| $row['OP_Clubs2'] == 'S'
|| $row['OP_Clubs3'] == 'S'
|| $row['OP_Clubs4'] == 'S'
) {
// if ($row['OP_Oficina'] != 'S')
// {
// //////////////////////////////////////////////////
// // assignem el perfil de club d'esquí que és el 14
// //////////////////////////////////////////////////
$enPerfils = $this->em->getRepository(Perfils::class)->find(14);
$enAbonaments->setPerId($enPerfils);
// }
} else {
$enAbonaments->setClubEsqui(0);
}
if ($row['OP_Clubs1'] == 'S') {
$enAbonaments->setClubs1(1);
} else {
$enAbonaments->setClubs1(0);
}
if ($row['OP_Clubs2'] == 'S') {
$enAbonaments->setClubs2(1);
} else {
$enAbonaments->setClubs2(0);
}
if ($row['OP_Clubs3'] == 'S') {
$enAbonaments->setClubs3(1);
} else {
$enAbonaments->setClubs3(0);
}
if ($row['OP_Clubs4'] == 'S') {
$enAbonaments->setClubs4(1);
} else {
$enAbonaments->setClubs4(0);
}
// if ($row['OP_Oficina'] != 'S'
// && $row['OP_Admin'] == 'S') {
// ///////////////////////////////////////////
// // assignem el perfil de l'Ari que és el 15
// ///////////////////////////////////////////
// $enPerfils = $this->em->getRepository(Perfils::class)->find(15);
// $enAbonaments->setPerId($enPerfils);
// } else {
// //$enAbonaments->setPerId(null);
// }
if ($row['OP_FiresOficines'] == 'S')
{
$enAbonaments->setFiresOficina(1);
} else {
$enAbonaments->setFiresOficina(0);
}
if ($row['OP_Admin'] == 'S')
{
$enAbonaments->setAdmin(1);
} else {
$enAbonaments->setAdmin(0);
}
if ($row['EsSuplement'] == 'S')
{
$enAbonaments->setSuplement(1);
} else {
$enAbonaments->setSuplement(0);
}
if ($row['EsNocturn'] == 'S')
{
$enAbonaments->setNocturn(1);
} else {
$enAbonaments->setNocturn(0);
}
if ($row['EsPackFamiliar'] == 'S')
{
$enAbonaments->setFamiliar(1);
} else {
$enAbonaments->setFamiliar(0);
}
if ($row['Es_Alp2500'] == 'S') // Si és temporada Alp2500
{
$enAbonaments->setAlp2500(1);
} else {
$enAbonaments->setAlp2500(0);
}
if ($row['Te_Dte_Lessio'] == 'S')
{
$enAbonaments->setTeDescompteLesio(1);
} else {
$enAbonaments->setTeDescompteLesio(0);
}
$this->em->persist($enAbonaments);
$this->em->flush();
}
}
echo '<br>Fi -> ' . date('Y-m-d H:i:s');
return new Response('Finalitzat');
}
function updateConsumersByAxessAction()
{
set_time_limit(300000);
if ($this->getParameter('kernel.environment') == 'dev')
{
$bTest = true;
echo "Inici actualització a entorno de consumers des de sqlServer: " . date("Y-m-d H:i:s") . '<br>';
} else {
$bTest = false;
}
/* Connect using Windows Authentication. */
try {
$options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
$conn = new \PDO('sqlsrv:Server=' . $this->sServer . ';Database=' . $this->sBDname . ';Encrypt = false;', $this->sUserName, $this->sPassword, $options);
} catch (Exception $e) {
die(print_r($e->getMessage(), false));
}
$sDataHora = date("Y_m_d_H_i_s");
$this->sDir = $this->sBase . 'query_ws/';
$sReturn = "EN-1|No hi ha consumers per modificar";
$aResultats = array();
$entityValorsWsAxess = $this->em->getRepository(ValorsWsAxess::class)->find(1);
if ($entityValorsWsAxess)
{
$dUltimaModificacio = $entityValorsWsAxess->getUltimDataModificacioConsumers();
$dUltimaModificacio = $dUltimaModificacio->format("Y-m-d") . 'T' . $dUltimaModificacio->format("H:i:s") . ".000";
$iCuantosRegistros = 500;
$iIniciRegistres = 0;
$aResultats = array();
$iCon = 0;
do{
$iTotalRegistresLlegits = 0;
///////////////////////////////////////////
// consulta a l'sqlServer amb la data
///////////////////////////////////////////
$tsql = "SELECT * FROM v_AXESS_CONSUMERS";
$tsql .= " WHERE 1=1";
//$tsql .= " AND Consumer_id_Pos= 35";
//$tsql .= " AND Consumer_id_Num= 12997";
$tsql .= " AND TIPUS_LOG = 'U'";
$tsql .= " AND TT_Data_actualitzacio >= '" . str_replace(' ', 'T', $dUltimaModificacio) . "'";
$tsql .= " ORDER BY TT_Data_actualitzacio ASC, Consumer_id DESC";
$tsql .= " OFFSET " . $iIniciRegistres . " ROWS FETCH FIRST " . $iCuantosRegistros . " ROWS ONLY ";
//echo $tsql;
//$getConsumers = $conn->prepare($tsql, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL,]);
$getConsumers = $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
echo '<br>' . count($getConsumers) . '<br>';
//die('stop');
//$getConsumers->execute();
//$aResult = $getConsumers->fetchAll(PDO::FETCH_ASSOC);
//$iConsumersCount = count($aResult);
$bDataModificada = false;
if ($getConsumers > 0)
{
foreach ($getConsumers as $row)
{
/*
echo '<pre>';
print_r($row);
echo '</pre>';
*/
////////////////////////////////////////////////////
/// Guardem la data per començar des de aquesta data
////////////////////////////////////////////////////
$dUltimaModificacio = $row['TT_Data_actualitzacio'];
$bDataModificada = true;
////////////////////////////////////////////////////////////////////////////////
// Consultar si existeix el consumer a entorno i si existeix fer l'actualització
////////////////////////////////////////////////////////////////////////////////
$aParam = array(
'customer_id_proj' => $row['Consumer_id_Proj'],
'customer_id_pos' => $row['Consumer_id_Pos'],
'customer_id_num' => $row['Consumer_id_Num']
);
$enConsumers = $this->em->getRepository(Consumers::class)->findOneBy($aParam);
if ($enConsumers)
{
$iConsumerFill = $enConsumers->getId();
//dump($enConsumers);
$enConsumersUpdate = $this->em->getRepository(Consumers::class)->find($iConsumerFill);
if ($enConsumersUpdate)
{
////////////////////////////////
// Actualitzar dades de consumer
////////////////////////////////
$jsonCognoms = $this->objUtil->separarCognoms($row['Cognoms']);
$aCognoms = json_decode($jsonCognoms->getContent(), true);
$enConsumersUpdate->setNom($row['Nom']);
$enConsumersUpdate->setCognoms($row['Cognoms']);
$enConsumersUpdate->setCognom1($aCognoms['cognom1']);
$enConsumersUpdate->setCognom2($aCognoms['cognom2']);
$enConsumersUpdate->setDni($row['Dni']);
$dateTime = new \DateTime();
$enConsumersUpdate->setDataNaixement($dateTime->setTimestamp(strtotime($row['Naixement'])));
$enConsumersUpdate->setDireccio($row['Adreca'] . $row['Adreca2'] . $row['Adreca3']);
$enConsumersUpdate->setCp($row['CodiPostal']);
$enConsumersUpdate->setPoblacio($row['Poblacio']);
$enConsumersUpdate->setEmail($row['Email']);
$enConsumersUpdate->setTelefon($row['Telefon']);
//$enConsumersUpdate->setWtp($row['Wtp_ult']);
$enConsumersUpdate->setOrigenEntrada('Mod sqlServer');
$enConsumersUpdate->setResposta4i(($enConsumersUpdate->getResposta4i() !=''?$enConsumersUpdate->getResposta4i() . '<br>':'') . '|Mod sqlServer|Modificat des del sqlServer el ' . date('Y-m-d H:i:s') );
$enConsumersUpdate->setDni($row['Dni']);
if ($row['Actiu'] == 0)
{
$enConsumersUpdate->setHistoric(1);
} else {
$enConsumersUpdate->setHistoric(0);
}
//dump ($enConsumersUpdate);
//die('stop');
$this->em->persist($enConsumersUpdate);
$this->em->flush();
$aResultats[$iCon]['consumer'] = $row;
//////////////////////////////////////////////////////
/// Comprova si esta a una familia que no es ell
//////////////////////////////////////////////////////
if ($row['Consumer_id_Proj'] != $row['Familia_id_Proj']
|| $row['Consumer_id_Pos'] != $row['Familia_id_Pos']
|| $row['Consumer_id_Num'] != $row['Familia_id_Num']
) {
$aParam = array(
'customer_id_proj' => $row['Familia_id_Proj'],
'customer_id_pos' => $row['Familia_id_Pos'],
'customer_id_num' => $row['Familia_id_Num']
);
$enConsumers = $this->em->getRepository(Consumers::class)->findOneBy($aParam);
if ($enConsumers)
{
$iConsumerPare = $enConsumers->getId();
////////////////////
/// Creem la familia
////////////////////
$blRes = $this->forward('App\Controller\ConsumersHasConsumersController::addFamiliaAction', array(
'aValues' => array(
'consumers' => $iConsumerPare,
'consumers_fill' => $iConsumerFill,
))
);
if ($blRes)
{
$aResultats[$iCon]['familia'] = array(
'pare' => $iConsumerPare,
'fill' => $iConsumerFill
);
}
}
}
}
////////////////////////////////////////////////
// TODO: S'ha de treure aquest break a real!!!!!
////////////////////////////////////////////////
//break;
}
$iTotalRegistresLlegits++;
}
}
//////////////////////////////////////////////////
// Actualitzem els valors a la taula ValorsWsAxess
//////////////////////////////////////////////////
if ($bDataModificada)
{
$dateTime = new \DateTime();
$entityValorsWsAxess->setUltimDataModificacioConsumers($dateTime->setTimestamp(strtotime($dUltimaModificacio)));
}
$dateTime = new \DateTime();
$entityValorsWsAxess->setUltimaLecturaConsumers($dateTime->createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s')));
$this->em->persist($entityValorsWsAxess);
$this->em->flush();
$iIniciRegistres = $iIniciRegistres + $iTotalRegistresLlegits;
////////////////////////////////////////////////
// TODO: S'ha de treure aquest break a real!!!!!
////////////////////////////////////////////////
//break;
//echo '-' . $iTotalRegistresLlegits . '==' . $iCuantosRegistros . '-<br>';
} while ($iTotalRegistresLlegits == $iCuantosRegistros);
//echo '-' . $iTotalRegistresLlegits . '==' . $iCuantosRegistros . '-';
}
if ($bTest) {
echo '<br>Fi -> ' . date('Y-m-d H:i:s');
echo '<pre>';
dump ($aResultats);
echo '</pre>';
}
if (!empty($aResultats))
{
$sDirAux = $this->sDir . 'update_Consumers_Axess';
if (!file_exists($sDirAux))
{
mkdir($sDirAux, 0777, true);
chmod($sDirAux, 0777);
}
$sDirAux2 = $sDirAux . '/' . date("Ymd");
if (!file_exists($sDirAux2))
{
mkdir($sDirAux2, 0777);
chmod($sDirAux2, 0777);
}
$aFileXmlRequest = fopen($sDirAux2 . '/' . date("Y_m_d_H_i_s") . '_consumers_' . date("YmdHis") . '.txt', 'w');
foreach ($aResultats as $rId => $rVal)
{
fputs($aFileXmlRequest, $rId . ' : ' . print_r($rVal, true) . PHP_EOL);
}
fclose($aFileXmlRequest);
/*
$sMissatge = '<pre>' . print_r($aResultats, true) . '</pre>';
$this->phpmailer->EnviarAction(array(
'sSubjecte' => "Masella WSAxess Error Consulta_AMB_Consumers",
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => 'jramon@entorno.es',
'sMissatge' => $sMissatge,
));
*/
}
//////////////////////////////////////////////////
// Actualitzem els valors a la taula ValorsWsAxess
//////////////////////////////////////////////////
if ($bDataModificada)
{
$dateTime = new \DateTime();
$entityValorsWsAxess->setUltimDataModificacioConsumers($dateTime->setTimestamp(strtotime($dUltimaModificacio)));
}
$dateTime = new \DateTime();
$entityValorsWsAxess->setUltimaLecturaConsumers($dateTime->createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s')));
$this->em->persist($entityValorsWsAxess);
$this->em->flush();
return new Response('Finalitzat');
}
function updateCompanyByAxessAction()
{
set_time_limit(300000);
if ($this->getParameter('kernel.environment') == 'dev')
{
$bTest = true;
echo "Inici actualització a entorno de companies des de sqlServer: " . date("Y-m-d H:i:s") . '<br>';
} else {
$bTest = false;
}
/* Connect using Windows Authentication. */
try {
$options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
$conn = new \PDO('sqlsrv:Server=' . $this->sServer . ';Database=' . $this->sBDname . ';Encrypt = false;', $this->sUserName, $this->sPassword, $options);
} catch (Exception $e) {
die(print_r($e->getMessage(), false));
}
$sDataHora = date("Y_m_d_H_i_s");
$this->sDir = $this->sBase . 'query_ws/';
$sReturn = "EN-1|No hi ha companies per modificar";
$aResultats = array();
$entityValorsWsAxess = $this->em->getRepository(ValorsWsAxess::class)->find(1);
if ($entityValorsWsAxess)
{
$dUltimaModificacio = $entityValorsWsAxess->getUltimDataModificacioCompany();
$dUltimaModificacio = $dUltimaModificacio->format("Y-m-d") . 'T' . $dUltimaModificacio->format("H:i:s") . ".000";
$iCuantosRegistros = 100;
$iIniciRegistres = 0;
$aResultats = array();
$iCon = 0;
do{
$iTotalRegistresLlegits = 0;
///////////////////////////////////////////
// consulta a l'sqlServer amb la data
///////////////////////////////////////////
$tsql = "SELECT * FROM V_AXESS_CLIENTS";
$tsql .= " WHERE 1=1";
$tsql .= " AND TT_Data_actualitzacio > '" . str_replace(' ', 'T', $dUltimaModificacio) . "'";
$tsql .= " ORDER BY TT_Data_actualitzacio ASC, Client_id DESC";
$tsql .= " OFFSET " . $iIniciRegistres . " ROWS FETCH FIRST " . $iCuantosRegistros . " ROWS ONLY ";
//echo $tsql;
//$getConsumers = $conn->prepare($tsql, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL,]);
$getConsumers = $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
echo '<br>' . count($getConsumers) . '<br>';
//$getConsumers->execute();
//$aResult = $getConsumers->fetchAll(PDO::FETCH_ASSOC);
//$iConsumersCount = count($aResult);
$bDataModificada = false;
if ($getConsumers > 0)
{
foreach ($getConsumers as $row)
{
/*
echo '<pre>';
print_r($row);
echo '</pre>';
*/
////////////////////////////////////////////////////
/// Guardem la data per començar des de aquesta data
////////////////////////////////////////////////////
$dUltimaModificacio = $row['TT_Data_actualitzacio'];
$bDataModificada = true;
////////////////////////////////////////////////////////////////////////////////
// Consultar si existeix el consumer a entorno i si existeix fer l'actualització
////////////////////////////////////////////////////////////////////////////////
$aParam = array(
'company_proj_no' => $row['Client_id_Proj'],
'company_pos_no' => $row['Client_id_Pos'],
'company_num' => $row['Client_id_num']
);
$enConsumers = $this->em->getRepository(Consumers::class)->findBy($aParam);
if ($enConsumers)
{
foreach ($enConsumers as $key => $aConsumer)
{
//dump($aConsumer);
$enConsumersUpdate = $this->em->getRepository(Consumers::class)->find($aConsumer->getId());
if ($enConsumersUpdate)
{
////////////////////////////////
// Actualitzar dades de consumer
////////////////////////////////
$enConsumersUpdate->setNomEmpresa($row['Nom_Fiscal']); // TODO: no se si és Nom_Comercial
$enConsumersUpdate->setNifEmpresa($row['Nif']);
$enConsumersUpdate->setDireccioEmpresa($row['Adreca'] . $row['Adreca2'] . $row['Adreca3']);
$enConsumersUpdate->setCpEmpresa($row['CodiPostal']);
$enConsumersUpdate->setPoblacioEmpresa($row['Poblacio']);
//////////////////////////////////////////////
/// s'ha de recuperar l'objecte del pais
//////////////////////////////////////////////
$objPais = $this->em->getRepository(Paisos::class)->findOneBy(array('iso2' =>$row['Pais']));
if ($objPais)
{
$enConsumersUpdate->setPaiId($objPais);
}
$enConsumersUpdate->setProvinciaEmpresa($row['Provincia']);
$enConsumersUpdate->setOrigenEntrada('Mod sqlServer');
$enConsumersUpdate->setResposta4i(($enConsumersUpdate->getResposta4i() != '' ? $enConsumersUpdate->getResposta4i() . '<br>' : '') . '|Mod sqlServer Company|Modificat des del sqlServer el ' . date('Y-m-d H:i:s'));
//$enConsumersUpdate->setDni(???);
//dump ($enConsumersUpdate);
//die('stop');
$this->em->persist($enConsumersUpdate);
$this->em->flush();
$aResultats[$iCon]['Company'] = $row;
}
////////////////////////////////////////////////
// TODO: S'ha de treure aquest break a real!!!!!
////////////////////////////////////////////////
//break;
}
}
$iTotalRegistresLlegits++;
}
}
//////////////////////////////////////////////////
// Actualitzem els valors a la taula ValorsWsAxess
//////////////////////////////////////////////////
if ($bDataModificada)
{
$dateTime = new \DateTime();
$entityValorsWsAxess->setUltimDataModificacioCompany($dateTime->setTimestamp(strtotime($dUltimaModificacio)));
}
$dateTime = new \DateTime();
$entityValorsWsAxess->setUltimaLecturaCompany($dateTime->createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s')));
$this->em->persist($entityValorsWsAxess);
$this->em->flush();
$iIniciRegistres = $iIniciRegistres + $iTotalRegistresLlegits;
////////////////////////////////////////////////
// TODO: S'ha de treure aquest break a real!!!!!
////////////////////////////////////////////////
//break;
} while ($iTotalRegistresLlegits == $iCuantosRegistros);
}
if ($bTest)
{
echo '<br>Fi -> ' . date('Y-m-d H:i:s');
echo '<pre>';
dump ($aResultats);
echo '</pre>';
}
if (!empty($aResultats))
{
$sDirAux = $this->sDir . 'update_Company_Axess';
if (!file_exists($sDirAux))
{
mkdir($sDirAux, 0777, true);
chmod($sDirAux, 0777);
}
$sDirAux2 = $sDirAux . '/' . date("Ymd");
if (!file_exists($sDirAux2))
{
mkdir($sDirAux2, 0777);
chmod($sDirAux2, 0777);
}
$aFileXmlRequest = fopen($sDirAux2 . '/' . date("Y_m_d_H_i_s") . '_company_' . date("YmdHis") . '.txt', 'w');
foreach ($aResultats as $rId => $rVal)
{
fputs($aFileXmlRequest, $rId . ' : ' . print_r($rVal, true) . PHP_EOL);
}
fclose($aFileXmlRequest);
/*
$sMissatge = '<pre>' . print_r($aResultats, true) . '</pre>';
$this->phpmailer->EnviarAction(array(
'sSubjecte' => "Masella WSAxess Error Consulta_AMB_Consumers",
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => 'jramon@entorno.es',
'sMissatge' => $sMissatge,
));
*/
}
//////////////////////////////////////////////////
// Actualitzem els valors a la taula ValorsWsAxess
//////////////////////////////////////////////////
if ($bDataModificada)
{
$dateTime = new \DateTime();
$entityValorsWsAxess->setUltimDataModificacioCompany($dateTime->setTimestamp(strtotime($dUltimaModificacio)));
}
$dateTime = new \DateTime();
$entityValorsWsAxess->setUltimaLecturaCompany($dateTime->createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s')));
$this->em->persist($entityValorsWsAxess);
$this->em->flush();
return new Response('Finalitzat');
}
/*
function moureImatgeAbonatAConsumerAction()
{
die('stop');
set_time_limit(300000);
echo 'Inici -> ' . date('Y-m-d H:i:s') . '<br>';
$sQuery = "SELECT c "
. " FROM App:Consumers c "
;
$query = $this->em->createQuery($sQuery);
//$query->setMaxResults(10);
$objConsumers = $query->getResult();
//dump($objAbonats);
echo '<br>Total abonats : ' . count($objConsumers) . '<br>';
$icon = 1;
foreach ($objConsumers as $key => $val)
{
echo '<br>(' . $icon++ . ')-------------' . $val->getId();
if ($val->getImatge() != '')
{
$sOrigen = $this->sPathUploads . "abonats/" . $val->getImatge();
$sDesti = $this->sPathUploads . "consumers/" . $val->getImatge();
echo '<br>' . $sDesti . '<br>';
if (!file_exists($sDesti)) {
if (file_exists($sOrigen)) {
if (copy($sOrigen, $sDesti)) {
echo '<br>mogut<br>';
if (filesize($sDesti) > 0) {
$miObjSize = new changeSize;
$miObjSize->canviTamanyImatge($sDesti, 250, 0);
}
}
}
}
}
if ($val->getDocumento() != '')
{
$sOrigen = $this->sPathUploads . "abonats/" . $val->getDocumento();
$sDesti = $this->sPathUploads . "consumers/" . $val->getDocumento();
echo '<br>' . $sDesti . '<br>';
if (!file_exists($sDesti)) {
if (file_exists($sOrigen)) {
$bRes = copy($sOrigen, $sDesti);
echo '<br>mogut<br>';
} else {
echo '<br>No existeix el fitxer a l origen <br>';
echo $sOrigen .'<br>';
}
}
}
}
echo '<br>Fi -> ' . date('Y-m-d H:i:s');
return new Response('Finalitzat');
}
*/
public function createCustomerAccountAction()
{
set_time_limit(300000);
echo 'Inici -> ' . date('Y-m-d H:i:s') . '<br>';
$objWebServicesCustomerAccount = new WebServicesCustomerAccountController();
/////////////////////////////////////////////////////////////////////////////////////
/// Quan la cridem com una clase no te acces al getParameter, així li passem el valor
/////////////////////////////////////////////////////////////////////////////////////
$objWebServicesCustomerAccount->setEnviroments($this->getParameter('kernel.environment'));
$objWebServicesCustomerAccount->setObjContainer($this);
$objWebServicesCustomerAccount->setObjGetMailer($this->phpmailer);
$aParams = array( 'customer_account_no' => null,
'resposta_dci4_connect' => null,
'tipus' => "Pagador",
'historic' => 0
);
$enConsumers = $this->em->getRepository(Consumers::class)->findBy($aParams);
if ($enConsumers)
{
$iContador = 0;
foreach ($enConsumers as $key => $aConsumer)
{
$enConsumersUpdate = $this->em->getRepository(Consumers::class)->find($aConsumer->getId());
$aElements = array(
'i_nPersProjNo' => $aConsumer->getCustomerIdProj(),
'i_nPersPosNo' => $aConsumer->getCustomerIdPos(),
'i_nPersPersNo' => $aConsumer->getCustomerIdNum(),
'i_szUserName' => $aConsumer->getEmail(),
'i_szPassword' => $aConsumer->getClau(),
'i_encryptmail' => 0,
);
echo '<pre>';
print_r($aElements);
echo '</pre>';
//die('stop');
$jsonReturn = $objWebServicesCustomerAccount->createCustomerAccount($aElements);
$aReturnCreateCustomerAccount = json_decode($jsonReturn->getContent(), true);
if ($aReturnCreateCustomerAccount['error']['CreateCustomerFromPerson'])
{
echo 'ok!!!' . '<br>';
$enConsumersUpdate->setCustomerAccountNo($aReturnCreateCustomerAccount['aCustomerAccount']['NCUSTOMERACCOUNTNO']);
$enConsumersUpdate->setValidateHash($aReturnCreateCustomerAccount['aCustomerAccount']['SZVALIDATEHASH']);
} else {
echo '<pre>';
print_r($aReturnCreateCustomerAccount);
echo '</pre>';
}
$enConsumersUpdate->setRespostaDci4Connect(print_r($aReturnCreateCustomerAccount,true));
$this->em->persist($enConsumersUpdate);
$this->em->flush();
//dump($aReturnCreateCustomerAccount);
echo '-------------------------------' . '<br>';
////////////////////////
/// TODO: Treure a real
////////////////////////
$iContador++;
if ($iContador == 1000) die('stop');
}
}
echo '<br>Fi -> ' . date('Y-m-d H:i:s');
return new Response('Finalitzat');
}
function updateReemplazamentWTPByAxessAction()
{
set_time_limit(300000);
if ($this->getParameter('kernel.environment') == 'dev')
{
$bTest = true;
echo "Inici actualització a entorno de Reemplazament WTP des de sqlServer: " . date("Y-m-d H:i:s") . '<br>';
} else {
$bTest = false;
}
/* Connect using Windows Authentication. */
try {
$options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
$conn = new \PDO('sqlsrv:Server=' . $this->sServer . ';Database=' . $this->sBDname . ';Encrypt = false;', $this->sUserName, $this->sPassword, $options);
} catch (Exception $e) {
die(print_r($e->getMessage(), false));
}
$sDataHora = date("Y_m_d_H_i_s");
$this->sDir = $this->sBase . 'query_ws/';
$sReturn = "EN-1|No hi ha consumers per modificar";
$aResultats = array();
$entityValorsWsAxess = $this->em->getRepository(ValorsWsAxess::class)->find(1);
if ($entityValorsWsAxess)
{
$dUltimaModificacio = $entityValorsWsAxess->getUltimDataModificacioReemplazamentWtp();
$iCuantosRegistros = 10;
$iIniciRegistres = 0;
$aResultats = array();
$iCon = 0;
do {
$iTotalRegistresLlegits = 0;
///////////////////////////////////////////
// consulta a l'sqlServer amb la data
///////////////////////////////////////////
$tsql = "SELECT *, concat(convert(varchar(10),Data_Venda,111),' ',Hora_Venda) as dddd FROM V_ENTORNO_REEXPEDICIONS";
$tsql .= " WHERE 1=1";
if ($dUltimaModificacio != '')
{
$tsql .= " AND concat(convert(varchar(10),Data_Venda,111),' ',Hora_Venda) > '" . $dUltimaModificacio->format("Y/m/d") . " " . $dUltimaModificacio->format("H:i:s") . "'";
}
//$tsql .= " AND Data_Venda >= '" . $dUltimaModificacio->format("Y-m-d") . 'T' . "00:00:00.000'";
$tsql .= " ORDER BY Data_Venda ASC, Hora_Venda ASC";
$tsql .= " OFFSET " . $iIniciRegistres . " ROWS FETCH FIRST " . $iCuantosRegistros . " ROWS ONLY ";
echo $tsql;
//die('stop');
//$getConsumers = $conn->prepare($tsql, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL,]);
$getConsumers = $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
echo '<br>' . count($getConsumers) . '<br>';
//$getConsumers->execute();
//$aResult = $getConsumers->fetchAll(PDO::FETCH_ASSOC);
//$iConsumersCount = count($aResult);
$bDataModificada = false;
if ($getConsumers > 0)
{
foreach ($getConsumers as $row)
{
echo '<pre>';
print_r($row);
echo '</pre>';
//die('stop');
////////////////////////////////////////////////////
/// Guardem la data per començar des de aquesta data
////////////////////////////////////////////////////
$dUltimaModificacio = str_replace(' 00:00:00.000','',$row['Data_Venda']) . 'T' . $row['Hora_Venda'] . '.000';
$bDataModificada = true;
////////////////////////////////////////////////////////////////////////////////
// Consultar si existeix el consumer a entorno i si existeix fer l'actualització
////////////////////////////////////////////////////////////////////////////////
$aParam = array(
'customer_id_proj' => $row['Person_Proj'],
'customer_id_pos' => $row['Person_Pos'],
'customer_id_num' => $row['Person_Num']
);
$enConsumers = $this->em->getRepository(Consumers::class)->findOneBy($aParam);
if ($enConsumers)
{
$iConsumerFill = $enConsumers->getId();
dump($enConsumers);
$enConsumersUpdate = $this->em->getRepository(Consumers::class)->find($iConsumerFill);
if ($enConsumersUpdate)
{
////////////////////////////////
// Actualitzar dades de consumer
////////////////////////////////
$enConsumersUpdate->setWtp($row['Wtp']);
$enConsumersUpdate->setOrigenEntrada('Mod sqlServer');
$enConsumersUpdate->setResposta4i(($enConsumersUpdate->getResposta4i() !=''?$enConsumersUpdate->getResposta4i() . '<br>':'') . '|Mod sqlServer|Modificat des del sqlServer REEXPEDICIONS el ' . date('Y-m-d H:i:s') . ' ' . print_r($row, true) );
//dump ($enConsumersUpdate);
//die('stop');
$this->em->persist($enConsumersUpdate);
$this->em->flush();
$aResultats[$iCon]['consumer'] = $row;
}
////////////////////////////////////////////////
// TODO: S'ha de treure aquest break a real!!!!!
////////////////////////////////////////////////
//break;
}
$iTotalRegistresLlegits++;
}
}
//////////////////////////////////////////////////
// Actualitzem els valors a la taula ValorsWsAxess
//////////////////////////////////////////////////
if ($bDataModificada)
{
$dateTime = new \DateTime();
$entityValorsWsAxess->setUltimDataModificacioReemplazamentWtp($dateTime->setTimestamp(strtotime($dUltimaModificacio)));
}
$dateTime = new \DateTime();
$entityValorsWsAxess->setUltimaLecturaReemplazamentWtp($dateTime->createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s')));
$this->em->persist($entityValorsWsAxess);
$this->em->flush();
$iIniciRegistres = $iIniciRegistres + $iTotalRegistresLlegits;
////////////////////////////////////////////////
// TODO: S'ha de treure aquest break a real!!!!!
////////////////////////////////////////////////
//break;
} while ($iTotalRegistresLlegits == $iCuantosRegistros);
}
if ($bTest)
{
echo '<br>Fi -> ' . date('Y-m-d H:i:s');
echo '<pre>';
dump ($aResultats);
echo '</pre>';
}
if (!empty($aResultats))
{
$sDirAux = $this->sDir . 'update_ReemplazamentWTP_Axess';
if (!file_exists($sDirAux))
{
mkdir($sDirAux, 0777, true);
chmod($sDirAux, 0777);
}
$sDirAux2 = $sDirAux . '/' . date("Ymd");
if (!file_exists($sDirAux2))
{
mkdir($sDirAux2, 0777);
chmod($sDirAux2, 0777);
}
$aFileXmlRequest = fopen($sDirAux2 . '/' . date("Y_m_d_H_i_s") . '_reemplazament_wtp_' . date("YmdHis") . '.txt', 'w');
foreach ($aResultats as $rId => $rVal)
{
fputs($aFileXmlRequest, $rId . ' : ' . print_r($rVal, true) . PHP_EOL);
}
fclose($aFileXmlRequest);
/*
$sMissatge = '<pre>' . print_r($aResultats, true) . '</pre>';
$this->phpmailer->EnviarAction(array(
'sSubjecte' => "Masella WSAxess Error Consulta_AMB_Consumers",
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => 'jramon@entorno.es',
'sMissatge' => $sMissatge,
));
*/
}
//////////////////////////////////////////////////
// Actualitzem els valors a la taula ValorsWsAxess
//////////////////////////////////////////////////
if ($bDataModificada)
{
$dateTime = new \DateTime();
$entityValorsWsAxess->setUltimDataModificacioReemplazamentWtp($dateTime->setTimestamp(strtotime($dUltimaModificacio)));
}
$dateTime = new \DateTime();
$entityValorsWsAxess->setUltimaLecturaReemplazamentWtp($dateTime->createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s')));
$this->em->persist($entityValorsWsAxess);
$this->em->flush();
return new Response('Finalitzat');
}
function updateWTPBySqlServerAction()
{
set_time_limit(300000);
if ($this->getParameter('kernel.environment') == 'dev')
{
$bTest = true;
echo "Inici actualització a entorno de WTP des de sqlServer: " . date("Y-m-d H:i:s") . '<br>';
} else {
$bTest = false;
}
/* Connect using Windows Authentication. */
try {
$options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
$conn = new \PDO('sqlsrv:Server=' . $this->sServer . ';Database=' . $this->sBDname . ';Encrypt = false;', $this->sUserName, $this->sPassword, $options);
} catch (Exception $e) {
die(print_r($e->getMessage(), false));
}
$sDataHora = date("Y_m_d_H_i_s");
$this->sDir = $this->sBase . 'query_ws/';
$sReturn = "EN-1|No hi ha WTP per modificar";
$iCon = 0;
$aResultats = array();
$sQuery = "SELECT cl "
. " FROM App:ComandesLinies cl INNER JOIN App:Comandes c "
. " WHERE cl.comandes = c.id"
. " AND c.estat = :estat"
. " AND c.enviat = :enviat"
. " AND cl.anulada = :anulada"
. " AND cl.id > :comandesLiniesID"
. " AND (cl.xip_introduit_client is null"
. " OR cl.xip_introduit_client = :xipintroduitclient)"
. " AND (cl.estat = :estatlinia"
. " OR cl.estat = :estatlinia2"
. " OR cl.estat is null"
. " OR cl.estat = :estatlinia3"
. " OR cl.estat = :estatlinia4)"
. " AND cl.journal_no is not null";
//$sQuery .= ' ORDER BY p.id ASC';
$sQuery .= ' ORDER BY c.data ASC';
//echo $sQuery;
$query = $this->em->createQuery($sQuery);
$query->setParameter('estat', 1);
$query->setParameter('enviat', 1);
$query->setParameter('estatlinia', 'open');
$query->setParameter('estatlinia2', 'inwork');
$query->setParameter('estatlinia3', '');
$query->setParameter('estatlinia4', 'aborted');
$query->setParameter('xipintroduitclient', '');
$query->setParameter('anulada', '0');
$query->setParameter('comandesLiniesID', 61794);// això ho fem fer no buscar línies de temporades passades
$objComandes = $query->getResult();
foreach ($objComandes as $key => $val)
{
$aResultats[$iCon]['NJOURNALNR'] = $val->getJournalNo();
$aResultats[$iCon]['SERIALNR'] = $val->getSerialNr();
$aResultats[$iCon]['NPOSNR'] = $val->getPosNo();
$aResultats[$iCon]['NPROJNR'] = $val->getProjNo();
echo '<br>';
echo 'NJOURNALNR : ' . $val->getJournalNo() . '<br>';
echo 'SERIALNR : ' . $val->getSerialNr() . '<br>';
echo 'NPOSNR : ' . $val->getPosNo() . '<br>';
echo 'NPROJNR : ' . $val->getProjNo() . '<br>';
echo '<br>';
///////////////////////////////////////////
// consulta a l'sqlServer amb la data
///////////////////////////////////////////
$tsql = "SELECT * FROM V_AXESS_PREPAIDTICKETS2";
$tsql .= " WHERE 1=1";
$tsql .= " AND nKassaNr = '" . $val->getPosNo() . "'";
$tsql .= " AND nProjNr = '" . $val->getProjNo() . "'";
$tsql .= " AND nJournalNr = '" . $val->getJournalNo() . "'";
//echo $tsql;
//die('stop');
//$getConsumers = $conn->prepare($tsql, [PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL,]);
$aLiniesResult = $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
echo '<br>' . count($aLiniesResult) . '<br>';
$bDataModificada = false;
if (count($aLiniesResult) > 0)
{
$aLinies = $aLiniesResult[0];
echo '<pre>';
print_r($aLinies);
echo '</pre>';
$dateTime = new \DateTime();
$entityComandesLinies = $this->em->getRepository(ComandesLinies::class)->find($val->getId());
$aResultats[$iCon]['sqlserver'] = 'sense resultat';
if ($entityComandesLinies)
{
$aResultats[$iCon]['sqlserver'] = $aLinies;
/////////////////////////////////////
// s'ha d'actualitzar al consumer WTP
/////////////////////////////////////
if ($aLinies['szWtpNr64'] != '')
{
$entityComandesLinies->setXip($aLinies['szWtpNr64']);
if (!is_null($entityComandesLinies->getConsumers()))
{
$entityConsumers = $this->em->getRepository(Consumers::class)->find($entityComandesLinies->getConsumers()->getId());
$entityConsumers->setWtp($aLinies['szWtpNr64']);
$this->em->persist($entityComandesLinies);
$this->em->flush();
}
$entityComandesLinies->setEstat('completed');
$entityComandesLinies->setRespostaEnviat('Actualitza WTP des de SqlServer');
$entityComandesLinies->setDataComunicacio($dateTime->createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s')));
$this->em->persist($entityComandesLinies);
$this->em->flush();
}
}
}
////////////////////////////////////////////////
// TODO: S'ha de treure aquest break a real!!!!!
////////////////////////////////////////////////
//break;
}
if ($bTest)
{
echo '<br>Fi -> ' . date('Y-m-d H:i:s');
echo '<pre>';
dump ($aResultats);
echo '</pre>';
}
if (!empty($aResultats))
{
$sDirAux = $this->sDir . 'update_WTP_by_SqlServer';
if (!file_exists($sDirAux))
{
mkdir($sDirAux, 0777, true);
chmod($sDirAux, 0777);
}
$sDirAux2 = $sDirAux . '/' . date("Ymd");
if (!file_exists($sDirAux2))
{
mkdir($sDirAux2, 0777);
chmod($sDirAux2, 0777);
}
$aFileXmlRequest = fopen($sDirAux2 . '/' . date("Y_m_d_H_i_s") . '_reemplazament_wtp_' . date("YmdHis") . '.txt', 'w');
foreach ($aResultats as $rId => $rVal)
{
fputs($aFileXmlRequest, $rId . ' : ' . print_r($rVal, true) . PHP_EOL);
}
fclose($aFileXmlRequest);
/*
$sMissatge = '<pre>' . print_r($aResultats, true) . '</pre>';
$this->phpmailer->EnviarAction(array(
'sSubjecte' => "Masella WSAxess Error Consulta_AMB_Consumers",
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => 'jramon@entorno.es',
'sMissatge' => $sMissatge,
));
*/
}
return new Response('Finalitzat');
}
function sendEstadisticsProcesAction ()
{
$this->sDir = $this->sBase . 'query_ws/';
$sDirAux = $this->sDir . 'create_attribute_Axess';
if (!file_exists($sDirAux))
{
mkdir($sDirAux, 0777, true);
chmod($sDirAux, 0777);
}
$sDirAux2 = $sDirAux . '/' . date("Ymd");
if (!file_exists($sDirAux2))
{
mkdir($sDirAux2, 0777);
chmod($sDirAux2, 0777);
}
$aFileXmlRequest = fopen($sDirAux2 . '/' . date("Y_m_d_H_i_s") . '_create_attribute_' . date("YmdHis") . '.txt', 'w');
set_time_limit(300000);
$objWebServicesGenerateTokenAccount = new WebServicesGenerateTokenAccountController();
/////////////////////////////////////////////////////////////////////////////////////
/// Quan la cridem com una clase no te acces al getParameter, així li passem el valor
/////////////////////////////////////////////////////////////////////////////////////
$objWebServicesGenerateTokenAccount->setEnviroments($this->getParameter('kernel.environment'));
$objWebServicesGenerateTokenAccount->setObjContainer($this);
$objWebServicesGenerateTokenAccount->setObjGetMailer($this->phpmailer);
echo "Inici actualització de dades estadístiques: " . date("Y-m-d H:i:s") . '<br>';
if ($this->getParameter('kernel.environment') == 'dev')
{
$bTest = true;
} else {
$bTest = false;
}
$sQuery = "SELECT p "
. " FROM App:Comandes p "
. " WHERE p.estat = 1"
. " AND p.enviat = 1"
//. " AND p.enviat = 1)"
//. " OR p.estat = 3)"
. " AND p.proces_estadistic != 1"
//. " AND (p.id = 39954"
//. " OR p.id = 39962"
//. " OR p.id = 39959"
//. " OR p.id = 39958"
//. " OR p.id = 39957"
//. " OR p.id = 39956"
//. " )"
;
$sQuery .= ' ORDER BY p.id ASC';
//echo $sQuery;
$query = $this->em->createQuery($sQuery);
$query->setFirstResult(0);
$query->setMaxResults(350);
$objComandes = $query->getResult();
if ($objComandes)
{
if ($this->getParameter('kernel.environment') == 'dev')
{
//dump($objComandes);
}
foreach ($objComandes as $key => $aComanda)
{
$aAtribut = array();
$bTenimValidateToken = true;
echo '-----------------------------------------------------------------------------------<br>';
echo 'Comanda ->' . $aComanda->getLocalitzador() . '-' . $aComanda->getId() . '-<br>';
fputs($aFileXmlRequest, '-----------------------------------------------------------------------------------' . PHP_EOL);
fputs($aFileXmlRequest, 'Comanda ->' . $aComanda->getLocalitzador() . '-' . $aComanda->getId() . PHP_EOL);
$objComandesLinies = $this->em->getRepository(ComandesLinies::class)->findBy(array(
'comandes' => $aComanda->getId()
));
if ($objComandesLinies)
{
$bErrorAttribut = false;
foreach ($objComandesLinies as $key => $aLinia)
{
//dump($aLinia);
if ($aLinia->getAnulada() == 0) {
echo 'Atribut ->' . $aLinia->getAbonaments()->getAtribut() . '-<br>';
fputs($aFileXmlRequest, ' Línia -> ' . $aLinia->getId() . ' Atribut -> ' . $aLinia->getAbonaments()->getAtribut() . PHP_EOL);
if ($aLinia->getAbonaments()->getAtribut() != '')
{
if (!array_key_exists($aLinia->getAbonaments()->getAtribut(), $aAtribut))
{
$aAtribut[$aLinia->getAbonaments()->getAtribut()] = 0;
}
// if ($aComanda->getEstat() == 3) // Si és una devolució s'ha de restar
// {
// $aAtribut[$aLinia->getAbonaments()->getAtribut()]--;
// } else {
$aAtribut[$aLinia->getAbonaments()->getAtribut()]++;
// }
} else {
fputs($aFileXmlRequest, 'ERROR : No valor attribut.' . PHP_EOL);
fputs($aFileXmlRequest, $aLinia->getAbonaments()->getNomCa() . PHP_EOL);
echo 'ERROR : No valor attribut.' . $aLinia->getAbonaments()->getNomCa() . '<br>';
$bErrorAttribut = true;
}
}
}
if (!empty($aAtribut))
{
//dump ($aAtribut);
echo 'Costumer -> ' . $aComanda->getConsumers()->getCustomerIdProj() . '-' . $aComanda->getConsumers()->getCustomerIdPos() . '-' . $aComanda->getConsumers()->getCustomerIdNum() . '<br>';
fputs($aFileXmlRequest, 'Costumer -> ' . $aComanda->getConsumers()->getCustomerIdProj() . '-' . $aComanda->getConsumers()->getCustomerIdPos() . '-' . $aComanda->getConsumers()->getCustomerIdNum() . PHP_EOL);
$aDades['NPERSPROJNO'] = $aComanda->getConsumers()->getCustomerIdProj();
$aDades['NPERSPOSNO'] = $aComanda->getConsumers()->getCustomerIdPos();
$aDades['NPERSNO'] = $aComanda->getConsumers()->getCustomerIdNum();
$aDades['aAtribut'] = $aAtribut;
////////////////////////////////////////////////////
/// Generem el token permanent del consumer si podem
////////////////////////////////////////////////////
if (is_null($aComanda->getConsumers()->getValidateToken())
|| $aComanda->getConsumers()->getValidateToken() == '')
{
$bTenimValidateToken = false;
$aElements = array(
'i_szUserName' => $aComanda->getConsumers()->getEmail(),
'i_szPassword' => $aComanda->getConsumers()->getClau(),
'i_szLoginToken' => '',
'i_nLoginTypeNr' => 1
);
$jsonReturn = $objWebServicesGenerateTokenAccount->generateTokenAccount($aElements, $this->em);
$aReturnWebServicesGenerateTokenAccount = json_decode($jsonReturn->getContent(), true);
//dump ($aReturnWebServicesGenerateTokenAccount);
if ($aReturnWebServicesGenerateTokenAccount['error']['ConnexioConnectAxess']
&& $aReturnWebServicesGenerateTokenAccount['error']['GenerateToken'])
{
$bTenimValidateToken = true;
}
}
if ($bTenimValidateToken)
{
echo '-' . $aComanda->getConsumers()->getValidateToken() . '-<br>';
echo '<pre>';
print_r($aDades);
echo '<pre>';
$aElements = array(
'i_szUserName' => '',
'i_szPassword' => '',
'i_szLoginToken' => $aComanda->getConsumers()->getValidateToken(),
'i_nLoginTypeNr' => 5
);
$jsonReturn = $objWebServicesGenerateTokenAccount->createAttributeToCustomer($aElements, $aAtribut);
$aReturnCreateAttributeToCustomer = json_decode($jsonReturn->getContent(), true);
dump($aReturnCreateAttributeToCustomer);
fputs($aFileXmlRequest, 'Resposta Axess ' . print_r($aReturnCreateAttributeToCustomer, true) . PHP_EOL);
if ($aReturnCreateAttributeToCustomer['error']['ConnexioConnectAxess']
&& $aReturnCreateAttributeToCustomer['error']['CreateAttribute'])
{
$objComandes = $this->em->getRepository(Comandes::class)->find($aComanda->getId());
$objComandes->setProcesEstadistic(1);
$this->em->persist($objComandes);
$this->em->flush();
fputs($aFileXmlRequest, 'Assiganció correcte' . PHP_EOL);
echo '<br>Assiganció correcte<br>';
} else {
fputs($aFileXmlRequest, 'ERROR : Resposta Axess ' . print_r($aReturnCreateAttributeToCustomer, true) . PHP_EOL);
}
} else {
fputs($aFileXmlRequest, 'ERROR : No Token ' . print_r($aDades, true) . PHP_EOL);
echo '<br>No tenim token de :';
echo '<pre>';
print_r($aDades);
echo '<pre>';
}
} else {
//////////////////////////////////////////////////////////////
// Si no té atributs segurament té totes les línies anul·lades
//////////////////////////////////////////////////////////////
//if ($bErrorAttribut === false)
//{
fputs($aFileXmlRequest, 'Segurament té totes les línies anul·lades o és una assegurança' . PHP_EOL);
echo 'Segurament té totes les línies anul·lades' . '<br>';
$objComandes = $this->em->getRepository(Comandes::class)->find($aComanda->getId());
$objComandes->setProcesEstadistic(1);
$this->em->persist($objComandes);
$this->em->flush();
//}
}
}
}
fclose($aFileXmlRequest);
}
if ($this->getParameter('kernel.environment') == 'dev')
{
}
echo '-----------------------------------------------------------------------------------<br>';
echo "Final actualització de dades estadístiques: " . date("Y-m-d H:i:s") . '<br>';
return new Response('Finalitzat');
}
/*
function sendEstadisticsProcesAction (){
die();
set_time_limit(300000);
$objWebServicesGenerateTokenAccount = new WebServicesGenerateTokenAccountController();
/////////////////////////////////////////////////////////////////////////////////////
/// Quan la cridem com una clase no te acces al getParameter, així li passem el valor
/////////////////////////////////////////////////////////////////////////////////////
$objWebServicesGenerateTokenAccount->setEnviroments($this->getParameter('kernel.environment'));
$objWebServicesGenerateTokenAccount->setObjContainer($this->container);
$objWebServicesGenerateTokenAccount->setObjGetMailer($this->get('mailer'));
if ($this->getParameter('kernel.environment') == 'dev')
{
$bTest = true;
echo "Inici actualització Token account: " . date("Y-m-d H:i:s") . '<br>';
} else {
$bTest = false;
}
$sQuery = "SELECT p "
. " FROM App:Consumers p "
. " WHERE p.historic = 0"
. " AND p.customer_account_no IS NOT NULL"
. " AND p.validate_token IS NULL"
;
$sQuery .= ' ORDER BY p.id ASC';
$query = $this->em->createQuery($sQuery);
$objConsumers = $query->getResult();
if ($objConsumers)
{
if ($this->getParameter('kernel.environment') == 'dev')
{
//dump($objComandes);
}
$iCon = 0;
foreach ($objConsumers as $key => $aConsumer)
{
$bTenimValidateToken = true;
$iCon++;
echo '(' . $iCon . ') Consumer ->account:' . $aConsumer->getCustomerAccountNo() . ' id:' . $aConsumer->getId() . '<br>';
////////////////////////////////////////////////////
/// Generem el token permanent del consumer si podem
////////////////////////////////////////////////////
if (is_null($aConsumer->getValidateToken())
|| $aConsumer->getValidateToken() == '')
{
$bTenimValidateToken = false;
$SZLOGINTOKEN = '';
$aElements = array( 'i_szUserName' => $aConsumer->getEmail(),
'i_szPassword' => $aConsumer->getClau(),
'i_szLoginToken' => '',
'i_nLoginTypeNr' => 1
);
$jsonReturn = $objWebServicesGenerateTokenAccount->generateTokenAccount($aElements, $em);
$aReturnWebServicesGenerateTokenAccount = json_decode($jsonReturn->getContent(), true);
//dump ($aReturnWebServicesGenerateTokenAccount);
if ($aReturnWebServicesGenerateTokenAccount['error']['ConnexioConnectAxess']
&& $aReturnWebServicesGenerateTokenAccount['error']['GenerateToken']) {
$bTenimValidateToken = true;
$SZLOGINTOKEN = $aReturnWebServicesGenerateTokenAccount['aCustomerAccount']['SZLOGINTOKEN'];
}
}
echo $aConsumer->getCustomerIdProj() . '-' . $aConsumer->getCustomerIdPos() . '-' . $aConsumer->getCustomerIdNum() . '<br>';
if ($bTenimValidateToken) {
echo '-' . $SZLOGINTOKEN . '-<br>';
} else {
echo '<br>No tenim token!!!!';
}
echo '<br>--------------------------<br>';
//die('stop');
}
}
if ($this->getParameter('kernel.environment') == 'dev')
{
echo "Final actualització de Token account: " . date("Y-m-d H:i:s") . '<br>';
}
return new Response('Finalitzat');
}
*/
function sendEmailComandesNoAcabadesAction ()
{
$entityValorsWsAxess = $this->em->getRepository(ValorsWsAxess::class)->find(1);
if (is_null($entityValorsWsAxess ->getUltimEnviamentNoComanda())
|| $entityValorsWsAxess ->getUltimEnviamentNoComanda()->format('Y-m-d') != date("Y-m-d"))
{
$sQuery = "SELECT p "
. " FROM App:Comandes p "
. " WHERE p.estat = 0"
. " AND p.lloc_venda = 'Web'"
. " AND p.data >= '" . date("Y-m-d", strtotime('-1 days')) . " 00:00:00'"
. " AND p.data <= '" . date("Y-m-d", strtotime('-1 days')) . " 23:59:59'"
. " AND p.consumers IS NOT NULL";
//echo $sQuery;
$query = $this->em->createQuery($sQuery);
$objComandes = $query->getResult();
//dump($objComandes);
if ($objComandes)
{
$aEmails = array();
foreach ($objComandes as $key => $aComanda)
{
echo '<br>Comanda ->' . $aComanda->getLocalitzador() . '-<br>';
if (!in_array($aComanda->getConsumers()->getEmail(), $aEmails))
{
$aEmails[] = $aComanda->getConsumers()->getEmail();
$bRes = $this->phpmailer->EnviarAction(array(
'sSubjecte' => 'Ajut per acabar la comanda',
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => $aComanda->getConsumers()->getEmail(),
'sMissatge' => $this->renderView('plantillaEmailComandesNoAcabades.html.twig', array()),
));
if ($bRes) echo 'Email enviat<br>';
}
}
}
$dateTime = new \DateTime();
$entityValorsWsAxess->setUltimEnviamentNoComanda($dateTime->createFromFormat('Y-m-d', date("Y-m-d")));
$this->em->persist($entityValorsWsAxess);
$this->em->flush();
} else {
echo 'ja executat avui.';
}
return new Response('Finalitzat');
}
function sendAcceptarRebrePromoDescompteAction ()
{
if ($this->getParameter('kernel.environment') == 'dev')
{
$bTest = true;
echo "Inici actualització rebre promoció i descompte des de sqlServer: " . date("Y-m-d H:i:s") . '<br>';
} else {
$bTest = false;
}
/* Connect using Windows Authentication. */
try {
$options = array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION);
$conn = new \PDO('sqlsrv:Server=' . $this->sServer . ';Database=' . $this->sBDname . ';Encrypt = false;', $this->sUserName, $this->sPassword, $options);
} catch (Exception $e) {
die(print_r($e->getMessage(), false));
}
$sQuery = "SELECT p "
. " FROM App:Rgpd p "
. " WHERE p.enviat = 0"
. " AND p.consumers IS NOT NULL"
. " ORDER BY p.id ASC";
//echo $sQuery;
$query = $this->em->createQuery($sQuery);
$objRgpd = $query->getResult();
//dump($objRgpd);
if ($objRgpd)
{
foreach ($objRgpd as $key => $aRgpd) {
if ($aRgpd->getConsumers()) {
if ($aRgpd->getConsumers()->getCustomeraccountno()) {
echo '<br>Rgpd ->' . $aRgpd->getNewsletter() . '<br>';
echo '<br>Rgpd ->' . $aRgpd->getIdioma() . '<br>';
echo '<br>Rgpd ->' . $aRgpd->getConsumers()->getCustomeraccountno() . '<br>';
///////////////////////////////////////////
// consulta a l'sqlServer amb la data
///////////////////////////////////////////
$tsql = "SELECT * FROM ENTORNO_CUSTOMER_CHECK";
$tsql .= " WHERE 1=1";
$tsql .= " AND CustomerNr =" . $aRgpd->getConsumers()->getCustomeraccountno();
//echo $tsql;
$getCustomerCheck = $conn->query($tsql)->fetchAll(\PDO::FETCH_ASSOC);
echo '<br>Total : ' . count($getCustomerCheck) . '<br>';
if (count($getCustomerCheck) > 0) {
echo '<br>Update<br>';
$tsql = "UPDATE ENTORNO_CUSTOMER_CHECK SET ";
$tsql .= " ComunicationLanguage=:ComunicationLanguage,";
$tsql .= " CheckRebrePromocions=:CheckRebrePromocions";
$tsql .= " WHERE ";
$tsql .= " CustomerNr = :CustomerNr";
} else {
echo '<br>Insert<br>';
$tsql = "INSERT INTO ENTORNO_CUSTOMER_CHECK (";
$tsql .= " CustomerNr,";
$tsql .= " ComunicationLanguage,";
$tsql .= " CheckRebrePromocions";
$tsql .= " ) VALUES (";
$tsql .= " :CustomerNr,";
$tsql .= " :ComunicationLanguage,";
$tsql .= " :CheckRebrePromocions";
$tsql .= " )";
}
//echo $tsql;
// Preparem la sentència SQL
$stmt = $conn->prepare($tsql);
// Assignem valors als paràmetres
$stmt->bindParam(':CustomerNr', $aRgpd->getConsumers()->getCustomeraccountno());
$stmt->bindParam(':ComunicationLanguage', $aRgpd->getIdioma());
$sCheckRebrePromocions = 'n';
if ($aRgpd->getNewsletter() == 1) {
$sCheckRebrePromocions = 's';
}
$stmt->bindParam(':CheckRebrePromocions', $sCheckRebrePromocions);
// Executem la sentència SQL
if ($stmt->execute()) {
if (count($getCustomerCheck) > 0) {
echo "Actualització exitosa!";
} else {
echo "Inserció exitosa!";
}
// Marquem el registre com a enviat
$enRgpd = $this->em->getRepository(Rgpd::class)->find($aRgpd->getId());
$enRgpd->setEnviat(1);
$this->em->persist($enRgpd);
$this->em->flush();
} else {
echo "Error en la inserció: " . $stmt->errorInfo()[2];
}
echo '<br>---------------------<br>';
}
}
}
}
echo '<br>-----------------------------------------------------------------------------------<br>';
echo "Final actualització rebre promoció i descompte: " . date("Y-m-d H:i:s") . '<br>';
return new Response('Finalitzat');
}
}