<?php
namespace App\Controller;
use App\Controller\CorreuController;
use App\Controller\WebServicesCustomerAccountController;
use App\Controller\WebServicesController;
use App\Entity\Abonaments;
use App\Entity\General;
use App\Entity\Paisos;
use App\Entity\Sidebar;
use App\Entity\Sponsors;
use App\Entity\Usuari;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
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\SecurityContext;
use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
use App\Entity\Comandes;
use App\Entity\ComandesLinies;
use App\Entity\Consumers;
use App\Util\RedsysAPI;
use App\Util\changeSize;
use App\Entity\Rgpd;
use App\Util\QRcode;
use App\Util\Util;
use App\Entity\ConsumersHasConsumers;
use App\Controller\WebServicesCompanyController;
class AbonamentsController extends AbstractController
{
public $aEstacions = array( 'MAS' => 'Masella',
'ALP' => 'Alp',
'Extra' => 'Extra');
public $aTipusAbonament = array ( 'AD' => 'adult',
'IN' => 'infant',
'ME' => 'menor',
'V1' => 'vetera',
'V2' => 'vetera2',
'UN' => 'universitari',
'JO' => 'jove',
'JU' => 'junior',
'EN' => 'entrenador');
protected $enSidebar;
protected $enGeneral;
protected $enSponsors;
private $em;
private $objUtil;
private $requestStack;
private $session;
private $translator;
private $params;
private $correuController;
private $phpmailer;
private $sPathUploads;
public function __construct(EntityManagerInterface $em,RequestStack $requestStack,TranslatorInterface $translator, ContainerBagInterface $params, CorreuController $correuController)
{
$this->em = $em;
$this->objUtil = new Util($this->em);
$this->requestStack = $requestStack;
$this->session = $this->requestStack->getSession();
$this->translator = $translator;
$this->params = $params;
$this->correuController = $correuController;
$this->phpmailer = new CorreuController();
$this->sPathUploads = dirname(__FILE__) . "/../../public/uploads/";
$this->enSidebar = $this->em->getRepository(Sidebar::class)->findBy(
array( 'general' => 1)
);
/////////////////////////
// Recoger dades generals
/////////////////////////
$this->enGeneral = $this->em->getRepository(General::class)->findAll();
///////////
// Sponsors
///////////
$this->enSponsors = $this->em->getRepository(Sponsors::class)->findBy(
array( 'visible' => 1),
array('ordre' => 'ASC')
);
}
/**
* @param Request $peticion
* @return Response
*
*/
public function indexAction(Request $peticion)
{
$aGeneral = $this->enGeneral[0];
if (!$aGeneral->getBotigaAbonament())
{
// Obtenir la direcció IP del client
$clientIp = $peticion->getClientIp();
if ($clientIp != '195.77.190.2'
&& $clientIp != '194.36.123.130'
&& $clientIp != '195.235.152.100'
)
{
return $this->redirect($this->generateUrl('home'));
}
}
$session = $peticion->getSession();
$session->start();
$repository = $this->em->getRepository(Abonaments::class);
$aSort = array('ordre' => 'ASC');
$aParam = array( 'estacio' => 'MAS',
'familiar' => 0,
'suplement' => 0,
'actiu' => 1,
'nomes_tablet' => 0,
//'club_esqui' => 0,
'promocio' => 0,
);
$objAbonaments_mas = $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
$aParam = array( 'estacio' => 'ALP',
'familiar' => 0,
'suplement' => 0,
'actiu' => 1,
'nomes_tablet' => 0,
//'club_esqui' => 0,
'promocio' => 0);
$objAbonaments_alp = $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
$aParam = array( 'familiar' => 1,
'actiu' => 1,
'nomes_tablet' => 0,
//'club_esqui' => 0
);
$objAbonaments_familia = $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
$objGeneral = $this->em->getRepository(General::class)->findBy(array('id' => 1));
$blCistella = false;
if ($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')) $blCistella = true;
$sessConsumer_id = '';
if ($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'))
{
$sessConsumer_id = $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id');
}
return $this->render('abonaments.html.twig', array(
'objAbonaments_mas' => $objAbonaments_mas,
'objAbonaments_alp' => $objAbonaments_alp,
'fiOferta' => $objGeneral[0]->getDataFiOferta(),
'blCistella' => $blCistella,
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors,
'abonamentsFamiliars' => count($objAbonaments_familia),
'sessConsumer_id' => $sessConsumer_id,
'util' => $this->objUtil
));
}
/**
* @param Request $peticion
* @return Response
*/
public function formAltaConsumerAction(Request $peticion)
{
$aRequest = $peticion->query;
$aPost = $aRequest->all();
return $this->render('alta_consumer.html.twig', array(
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors,
'aPost' => $aPost
));
}
/**
* @param Request $peticion
* @return Response
*/
public function avisLegalAction(Request $peticion)
{
return $this->render('avisLegal.html.twig', array(
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors
));
}
/**
* @param Request $peticion
* @return Response
*/
public function documentsAction(Request $peticion)
{
$aRequest = $peticion->attributes;
$aRequest2 = $peticion->request;
/////////////////////////////////////////////
/// Actualitzem consumer i wtp als suplements
/////////////////////////////////////////////
$aParam = array( 'comandes' => $this->session->get('sessCol_id'),
'suplement' => 1);
$objComandesLiniesSuplement = $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
if ($objComandesLiniesSuplement)
{
foreach ($objComandesLiniesSuplement as $key => $objLinia)
{
//dump($objLinia->getRelacionatComandesLinies()->getConsumers());
$objComandesLiniesSuplementUpdate = $this->em->getRepository(ComandesLinies::class)->find($objLinia->getId());
$objComandesLiniesSuplementUpdate->setConsumers($objLinia->getRelacionatComandesLinies()->getConsumers());
$objComandesLiniesSuplementUpdate->setXipIntroduitClient($objLinia->getRelacionatComandesLinies()->getXipIntroduitClient());
$this->em->persist($objComandesLiniesSuplementUpdate);
$this->em->flush();
}
}
//////////////////////////////////////////////////////////
// Recuperem les línies de la comanda que no són suplement
//////////////////////////////////////////////////////////
$aParam = array( 'comandes' => $this->session->get('sessCol_id'),
'suplement' => 0);
$objComandesLinies = $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
if ($aRequest->has('backend')
|| $aRequest2->has('backend'))
{
/*
* Insertem informació a log
*/
$this->objUtil->logAction($peticion, $this->getUser());
return $this->render('Backend\Formulario\documents.html.twig', array(
'objComandesLinies' => $objComandesLinies,
'enGeneral' => $this->enGeneral,
'club_esqui' => $this->session->get('club_esqui'),
'util' => $this->objUtil
));
} else {
return $this->render('documents.html.twig', array(
'objComandesLinies' => $objComandesLinies,
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors,
'util' => $this->objUtil
));
}
}
/**
* @param Request $peticion
* @return Response
*/
public function comprovarDadesAction(Request $peticion)
{
$aRequest2 = $peticion->attributes;
$aRequest = $peticion->query;
$repository = $this->em->getRepository(Abonaments::class);
//////////////////////////////////////////////////////////
// Recuperem les linies de la comanda que no són suplement
//////////////////////////////////////////////////////////
$aParam = array(
'comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'),
'suplement' => 0
);
$objComandesLinies = $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
$blConnexioAxess = true;
$blAltaModificacioAxess = true;
///////////////////////////////////////////////////////////////////////////////////////////////
// S'ha de treure els consumers de les línies de comandes i crear-los a la taula dels consumers
///////////////////////////////////////////////////////////////////////////////////////////////
if (count ($objComandesLinies) > 0 )
{
foreach ($objComandesLinies as $key => $aComandesLinies)
{
$aFamiliaDelPagador = array();
$blComandaAmbConsumer = false;
$enComandes = $this->em->getRepository(Comandes::class)->find($aComandesLinies->getComandes()->getId());
if ($enComandes)
{
///////////////////////////////////////////////////////////////////
// Si la comanda s'ha fet abans de logar-se no te el id de consumer
///////////////////////////////////////////////////////////////////
if ($enComandes->getConsumers())
{
$iIdConsumers = $enComandes->getConsumers()->getId();
$blComandaAmbConsumer = true;
} else {
$iIdConsumers = $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id');
}
$enConsumers = $this->em->getRepository(Consumers::class)->find($iIdConsumers);
$aFamiliaDelPagador = array(
'fam_id_proj' => $enConsumers->getCustomerIdProj(),
'fam_id_pos' => $enConsumers->getCustomerIdProj(),
'fam_id_num' => $enConsumers->getCustomerIdProj(),
);
/////////////////////////////////////////////
/// actualitzar consumer pagador a la comanda
/////////////////////////////////////////////
if (!$blComandaAmbConsumer)
{
$enComandes->setConsumers($enConsumers);
$this->em->persist($enComandes);
$this->em->flush();
$blComandaAmbConsumer = true;
}
}
$bEnviarAAxess = true;
$bEnviarAAxessNomesFoto = false;
if ($aComandesLinies->getConsumers())
{
$enConsumersUpdate = $this->em->getRepository(Consumers::class)->find($aComandesLinies->getConsumers()->getId());
///////////////////////////////////////////
// Comprivem si s'ha modificat el Consumers
///////////////////////////////////////////
if ($enConsumersUpdate->getModificat() != 1
&& !is_null($aComandesLinies->getConsumers()->getCustomerIdNum())
&& $aComandesLinies->getConsumers()->getCustomerIdNum() != '')
{
$bEnviarAAxess = false;
}
$enConsumersUpdate->setDataNaixement($aComandesLinies->getDataNaixement());
if ($aComandesLinies->getImatge() != '')
{
$enConsumersUpdate->setImatge($aComandesLinies->getImatge());
/////////////////////////
// s'ha canviat la imatge
/////////////////////////
//$bEnviarAAxess = true;
$bEnviarAAxessNomesFoto = true;
}
if ($aComandesLinies->getDocumento() != '')
{
$enConsumersUpdate->setDocumento($aComandesLinies->getDocumento());
///////////////////////////
// s'ha canviat el document
///////////////////////////
//$bEnviarAAxess = true;
}
if ($aComandesLinies->getResident() != '')
{
$enConsumersUpdate->setResident($aComandesLinies->getResident());
}
if ($aComandesLinies->getFamiliaNombrosa() != '')
{
$enConsumersUpdate->setFamiliaNombrosa($aComandesLinies->getFamiliaNombrosa());
}
$enConsumersUpdate->setModificat(0);
$this->em->persist($enConsumersUpdate);
$this->em->flush();
$con_id = $aComandesLinies->getConsumers()->getId();
///////////////////////////////////////////////////////////////////////
/// esborrem l'array per que no volem canviar la familia que te a Axess
///////////////////////////////////////////////////////////////////////
$aFamiliaDelPagador = array();
} else {
/////////////////////////
// Fem copia dels fitxers
/////////////////////////
if ($aComandesLinies->getImatge() != '')
{
$sOrigen = $this->sPathUploads . "comandeslinies/" . $aComandesLinies->getImatge();
$sDesti = $this->sPathUploads . "consumers/" . $aComandesLinies->getImatge();
if (file_exists($sOrigen)) copy($sOrigen, $sDesti);
}
if ($aComandesLinies->getDocumento() != '')
{
$sOrigen = $this->sPathUploads. "comandeslinies/" . $aComandesLinies->getDocumento();
$sDesti =$this->sPathUploads . "consumers/" . $aComandesLinies->getDocumento();
if (file_exists($sOrigen)) copy($sOrigen, $sDesti);
}
if ($aComandesLinies->getResident() != '')
{
$sOrigen = $this->sPathUploads. "comandeslinies/" . $aComandesLinies->getResident();
$sDesti = $this->sPathUploads . "consumers/" . $aComandesLinies->getResident();
if (file_exists($sOrigen)) copy($sOrigen, $sDesti);
}
if ($aComandesLinies->getFamiliaNombrosa() != '')
{
$sOrigen = $this->sPathUploads . "comandeslinies/" . $aComandesLinies->getFamiliaNombrosa();
$sDesti = $this->sPathUploads . "consumers/" . $aComandesLinies->getFamiliaNombrosa();
if (file_exists($sOrigen)) copy($sOrigen, $sDesti);
}
$enComandes = $this->em->getRepository(Comandes::class)->find($aComandesLinies->getComandes()->getId());
/////////////////////////////////////////////////////////////////
// Si la comanda s'ha fet abans de logar-se no te el id de client
/////////////////////////////////////////////////////////////////
if ($enComandes->getConsumers())
{
$iIdConsumers = $enComandes->getConsumers()->getId();
} else {
$iIdConsumers = $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id');
}
$aParams = array(
'nom' => $aComandesLinies->getNom(),
'cognom1' => $aComandesLinies->getCognom1(),
'cognom2' => $aComandesLinies->getCognom2(),
'data_naixement' => $aComandesLinies->getDataNaixement(),
'historic' => 0
);
$enConsumersAux = $this->em->getRepository(Consumers::class)->findBy($aParams);
if ($aComandesLinies->getCognom2() == ''
&& count($enConsumersAux) == 0)
{
$aParams = array(
'nom' => $aComandesLinies->getNom(),
'cognom1' => $aComandesLinies->getCognom1(),
'cognom2' => null,
'data_naixement' => $aComandesLinies->getDataNaixement(),
'historic' => 0
);
$enConsumersAux = $this->em->getRepository(Consumers::class)->findBy($aParams);
}
///////////////////////////////////
// Si no existeix creem el consumer
///////////////////////////////////
if (count($enConsumersAux) == 0)
{
$enConsumers = new Consumers();
$enConsumers->setNom($aComandesLinies->getNom());
$enConsumers->setCognom1($aComandesLinies->getCognom1());
$enConsumers->setCognom2($aComandesLinies->getCognom2());
$enConsumers->setImatge($aComandesLinies->getImatge());
$enConsumers->setDocumento($aComandesLinies->getDocumento());
$enConsumers->setResident($aComandesLinies->getResident());
$enConsumers->setFamiliaNombrosa($aComandesLinies->getFamiliaNombrosa());
$enConsumers->setDataNaixement($aComandesLinies->getDataNaixement());
$enConsumers->setOrigenEntrada('Alta Entor');
$enConsumers->setTipus('Consumer');
$this->em->persist($enConsumers);
$this->em->flush();
$con_id = $enConsumers->getId();
} else {
$con_id = $enConsumersAux[0]->getId();
$enConsumersUpdate = $this->em->getRepository(Consumers::class)->find($con_id);
$enConsumersUpdate->setDataNaixement($aComandesLinies->getDataNaixement());
$enConsumersUpdate->setImatge($aComandesLinies->getImatge());
$enConsumersUpdate->setDocumento($aComandesLinies->getDocumento());
$enConsumersUpdate->setOrigenEntrada('Modi Entor');
$this->em->persist($enConsumersUpdate);
$this->em->flush();
}
///////////////////////////////////
// El creem a la familia del pagado
///////////////////////////////////
$blRes = $this->forward('App\Controller\ConsumersHasConsumersController::addFamiliaAction', array(
'aValues' => array(
'consumers' => $iIdConsumers,
'consumers_fill' => $con_id
)));
//////////////////////////////
// creem la seva familia també
//////////////////////////////
$blRes = $this->forward('App\Controller\ConsumersHasConsumersController::addFamiliaAction', array(
'aValues' => array(
'consumers' => $con_id,
'consumers_fill' => $con_id
)));
}
if ((isset($con_id)
&& $con_id != ''))
{
/////////////////////
// TRACTAMENT A Axess
/////////////////////
$enConsumers = $this->em->getRepository(Consumers::class)->find($con_id);
if ($bEnviarAAxess == true)
{
$aDadesUpdate['iIdEntorno'] = $con_id;
$aDadesUpdate['ConsumerIdProj'] = $enConsumers->getCustomerIdProj();
$aDadesUpdate['ConsumerIdPos'] = $enConsumers->getCustomerIdPos();
$aDadesUpdate['ConsumerIdNum'] = $enConsumers->getCustomerIdNum();
////////////////////
// Recuperem la foto
////////////////////
$sFoto = '';
if ($enConsumers->getImatge() != '')
{
$sFoto = $enConsumers->getImatge();
}
//////////////////////////
// ALTA O MODIFICACIÓ A Axess
//////////////////////////
$aDades = array();
$aDades['nom'] = $enConsumers->getNom();
$aDades['cognom1'] = $enConsumers->getCognom1();
$aDades['cognom2'] = $enConsumers->getCognom2();
$clsDataNaixement = $enConsumers->getDataNaixement();
$sData = $clsDataNaixement->format("d/m/Y");
$aDades['data_naixement'] = $sData;
$aDades['idEntorno'] = $enConsumers->getId();
if (!empty($aFamiliaDelPagador))
{
$aDades['IdFamilia'] = $aFamiliaDelPagador;
}
$aDades['Foto'] = $sFoto;
/////////////////////////////////////////////////////////////////////////////////////////////////////////
/// No controlem dni ni email per que son abonats i no pagadors, per tant no tenen informat aquests camps
/////////////////////////////////////////////////////////////////////////////////////////////////////////
$jsonResposta = $this->forward('App\Controller\WebServicesController::altaModificacioConsumersAxessAction', array(
'aDades' => $aDades,
'aNoValidacionsDe' => array('DniClientExists', 'EmailClientExists'),
'aDadesUpdate' => $aDadesUpdate
));
//$objWebServicesController = new WebServicesController($this->em,$this->requestStack,$this->params);
//$objWebServicesController->setEnviroments($this->getParameter('kernel.environment'));
//$jsonResposta = $objWebServicesController->altaModificacioConsumersAxessAction($aDades,array('DniClientExists', 'EmailClientExists'),$aDadesUpdate);
$aResposta = json_decode($jsonResposta->getContent(), true);
if (!$aResposta['error']['AltaModificacioAxess']
|| !$aResposta['error']['ConnexioAxess'])
{
$blAltaModificacioAxess = false;
//$this->session->getFlashBag()->add('error', $this->translator->trans("Hi ha un problema amb les seves dades, reviseu les dades dels abonats (data de naixement, Foto, etc...), si l'error persisteix si us plau poseu-vos en contacte amb nosaltres"));
$this->session->getFlashBag()->add('error', $this->translator->trans("Hi ha un problema amb les seves dades, reviseu les dades dels abonats (data de naixement, Foto, etc...), si l'error persisteix si us plau poseu-vos en contacte amb nosaltres"));
///////////////////////////////
// TODO : Com gestionem l'error
///////////////////////////////
$sMissatge = 'ATENCIÓ HI HA HAGUT UN ERROR.<br>';
$sMissatge .= print_r($aResposta, true);
$sMissatge .= print_r($aDades, true);
$this->correuController->EnviarAction(array(
'sMissatge' => $sMissatge,
'sFrom' => $this->params->get('EMAIL_RESERVAS'),
'sTo' => $this->params->get('EMAIL_RESERVAS'),
'sCc' => $this->params->get('EMAIL_ERRORES'),
'sSubjecte' => "Consumer a comanda de Registre Masella Error (AbonamentsConstroller/comprovarDades)"
));
} else {
$enConsumersUpdate = $this->em->getRepository(Consumers::class)->find($con_id);
//dump($aResposta['aTotsCampsPerson']);
//die('stop');
if (!empty($aResposta['aTotsCampsPerson']))
{
$enConsumersUpdate->setDireccio($aResposta['aTotsCampsPerson']['SZSTREET']);
$enConsumersUpdate->setCp($aResposta['aTotsCampsPerson']['SZZIPCODE']);
$enConsumersUpdate->setPoblacio($aResposta['aTotsCampsPerson']['SZCITY']);
$enConsumersUpdate->setTelefon($aResposta['aTotsCampsPerson']['SZPHONE']);
$enConsumersUpdate->setEmail($aResposta['aTotsCampsPerson']['SZEMAIL']);
$enConsumersUpdate->setDni($aResposta['aTotsCampsPerson']['SZTITLE']);
}
$enConsumersUpdate->setCustomerIdProj($aResposta['idAxess']['ConsumerIdProj']);
$enConsumersUpdate->setCustomerIdPos($aResposta['idAxess']['ConsumerIdPos']);
$enConsumersUpdate->setCustomerIdNum($aResposta['idAxess']['ConsumerIdNum']);
$enConsumersUpdate->setResposta4i($aResposta['missatgeAxess']);
$this->em->persist($enConsumersUpdate);
$this->em->flush();
}
///////////////////////////////////////////////
// Actualitzem id d'consumer a la comandesLinies
///////////////////////////////////////////////
$enComandesLiniesUpdate = $this->em->getRepository(ComandesLinies::class)->find($aComandesLinies->getId());
$enComandesLiniesUpdate->setConsumers($enConsumers);
$this->em->persist($enComandesLiniesUpdate);
$this->em->flush();
}
/////////////////////////////////////////////////////////////////
/// Només s'ha actualitzat la foto, per tant només enviem la foto
/////////////////////////////////////////////////////////////////
/// AQUEST ANY ENVIEM SEMPRE LA FOTO A AXESS!!!!!!!!!!
/////////////////////////////////////////////////////////////////
$bEnviarAAxessNomesFoto = true;
if ($bEnviarAAxessNomesFoto)
{
$aElements['Foto'] = $enConsumers->getImatge();
$aElements['ConsumerIdProj'] = $enConsumers->getCustomerIdProj();
$aElements['ConsumerIdPos'] = $enConsumers->getCustomerIdPos();
$aElements['ConsumerIdNum'] = $enConsumers->getCustomerIdNum();
//$jsonResposta = $this->createFotoAxess($aElements);
$jsonResposta = $this->forward('App\Controller\WebServicesController::createFotoAxessAction', array(
'aElements' => $aElements
));
//$objWebServicesController = new WebServicesController($this->em,$this->requestStack,$this->params);
//$objWebServicesController->setEnviroments($this->getParameter('kernel.environment'));
//$jsonResposta = $objWebServicesController->createFotoAxessAction($aElements);
$aResposta = json_decode($jsonResposta->getContent(), true);
if ($aResposta['error'] != 0)
{
$this->session->getFlashBag()->add('error', $this->translator->trans("Hi ha un problema amb les fotos, si us plau poseu-vos en contacte amb nosaltres"));
///////////////////////////////
// TODO : Com gestionem l'error
///////////////////////////////
$sMissatge = 'ATENCIÓ HI HA HAGUT UN ERROR.<br>';
$sMissatge .= print_r($aResposta, true);
$sMissatge .= print_r($aElements, true);
$this->correuController->EnviarAction(array(
'sMissatge' => $sMissatge,
'sFrom' => $this->params->get('EMAIL_RESERVAS'),
'sTo' => $this->params->get('EMAIL_RESERVAS'),
'sCc' => $this->params->get('EMAIL_ERRORES'),
'sSubjecte' => "Foto consumer a comanda de Registre Masella Error (AbonamentsConstroller/comprovarDades)"
));
}
}
}
}
}
//////////////////////////////////////////////////
// Temporada 24/25
// S'ha de fer un 20% de descompte als que a la temporada anterior van comprar alp 1500
// Comprovem si hi ha algun comsumer amb descompte
//////////////////////////////////////////////////
// foreach ($objComandesLinies as $key => $val)
// {
// // Si té descompte marcat però no té cap descompte entrat manualment
// if ($val->getConsumers()->getDescompte() == 1
// && ($val->getDescompte() == ''
// || $val->getDescompte() == 0))
// {
// // S'ha de mirar si és alp2500, a la importació tenim un camp que ens ho indica
// if ($val->getAbonaments()->getAlp2500() == 1)
// {
// //echo '<br>' . $val->getAbonaments()->getTarifaId() . '<br>';
// //echo $val->getConsumers()->getCognom1() . ' ' . $val->getConsumers()->getCognom2() . ' ' . $val->getConsumers()->getNom() . '<br>';
// //echo $val->getPreu() . '<br>';
// $iDescompte = 0;
// if ($val->getPreu() > 0)
// {
// $iDescompte = ($val->getPreu() / 100) * 20;
// }
// // Si compleix els requisits s'ha de guardar el descompte a la línia amb un 20% de descompte
// $objComandesLiniesUpdateDescompte = $this->em->getRepository(ComandesLinies::class)->find($val->getId());
// $objComandesLiniesUpdateDescompte->setDescompte($iDescompte);
// $objComandesLiniesUpdateDescompte->setTipusDescompte("desc2425");
// $this->em->persist($objComandesLiniesUpdateDescompte);
// $this->em->flush();
// }
// }
// }
//////////////////////////////////////////////////////////
// Comprovem si hi ha algun descompte: temporada 2020-2021
//////////////////////////////////////////////////////////
$bDescompte = false;
foreach ($objComandesLinies as $key => $val)
{
if ($val->getDescompte() != ''
&& $val->getDescompte() > 0)
{
$bDescompte = true;
break;
}
}
/////////////////////////////////////////////
/// Actualitzem consumer i wtp als suplements
/////////////////////////////////////////////
$aParam = array(
'comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'),
'suplement' => 1
);
$objComandesLiniesSuplement = $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
if ($objComandesLiniesSuplement)
{
foreach ($objComandesLiniesSuplement as $key => $objLinia)
{
//dump($objLinia->getRelacionatComandesLinies()->getConsumers());
$objComandesLiniesSuplementUpdate = $this->em->getRepository(ComandesLinies::class)->find($objLinia->getId());
$objComandesLiniesSuplementUpdate->setConsumers($objLinia->getRelacionatComandesLinies()->getConsumers());
$objComandesLiniesSuplementUpdate->setXipIntroduitClient($objLinia->getRelacionatComandesLinies()->getXipIntroduitClient());
$this->em->persist($objComandesLiniesSuplementUpdate);
$this->em->flush();
}
}
///////////////////////////////////////////////////////
// Recuperem les linies de la comanda que són suplement
///////////////////////////////////////////////////////
$aParam = array(
'comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'),
'suplement' => 1
);
$objComandesLiniesSuplement = $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
$aSuplements = array();
foreach ($objComandesLiniesSuplement as $key => $val)
{
$aSuplements[] = $val->getRelacionatComandesLinies()->getId() . '-' . $val->getId();
}
$objGeneral = $this->em->getRepository(General::class)->findBy(array('id' => 1));
$total_cistella = $this->_total_cistella();
/////////////////////////////////////////
// Si hi ha error a l'inserció del client
/////////////////////////////////////////
$blErrorInsertConsumer = false;
if ($aRequest->get('error') == 1) $blErrorInsertConsumer = true;
$aPost = $aRequest->all();
$iRgpd = 0;
$iCgat = 0;
$iNewsletter = 0;
///////////////////////////////////////
// si ve acceptada de la plana anterior
///////////////////////////////////////
if ($peticion->request->get('acepto')
&& $peticion->request->get('acepto') == 1)
{
$iRgpd = 1;
// Ara només tenim un check
$iCgat = 1;
}
///////////////////////////////////////
// si ve acceptada de la plana anterior
///////////////////////////////////////
// if ($peticion->request->get('acepto_cgat')
// && $peticion->request->get('acepto_cgat') == 1)
// {
// $iCgat = 1;
// }
$sessConsumer_id = $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id');
if ($sessConsumer_id)
{
$enConsumers = $this->em->getRepository(Consumers::class)->find($sessConsumer_id);
$aPost['nom'] = $enConsumers->getNom();
$aPost['cognom1'] = $enConsumers->getCognom1();
$aPost['cognom2'] = $enConsumers->getCognom2();
$aPost['direccio'] = $enConsumers->getDireccio();
$aPost['cp'] = $enConsumers->getCp();
$aPost['poblacio'] = $enConsumers->getPoblacio();
$aPost['email'] = $enConsumers->getEmail();
$aPost['telefon'] = $enConsumers->getTelefon();
if ($enConsumers->getDataNaixement() != '')
{
$aPost['datanaixement'] = date_format($enConsumers->getDataNaixement(), 'Y-m-d');
}
$aPost['dni'] = $enConsumers->getDni();
//if ($aRequest->has('backend')
// || $aRequest2->has('backend'))
//{
$aPost['nom_empresa'] = $enConsumers->getNomEmpresa();
$aPost['pai_id'] = '';
if ($enConsumers->getPaiId())
{
$aPost['pai_id'] = $enConsumers->getPaiId()->getId();
}
$aPost['nif_empresa'] = $enConsumers->getNifEmpresa();
$aPost['direccio_empresa'] = $enConsumers->getDireccioEmpresa();
$aPost['cp_empresa'] = $enConsumers->getCpEmpresa();
$aPost['poblacio_empresa'] = $enConsumers->getPoblacioEmpresa();
$aPost['provincia_empresa'] = $enConsumers->getProvinciaEmpresa();
//}
///////
// Rgpd
///////
$enRgpd = $this->em->getRepository(Rgpd::class)->findBy(
array(
'consumers' => $sessConsumer_id,
'tipus' => 'Clients'
),
array(
'id' => 'DESC'
)
);
if ($enRgpd)
{
if ($enRgpd[0]->getRgpd() == 1)
{
$iRgpd = 1;
}
if ($enRgpd[0]->getCgat() == 1)
{
$iCgat = 1;
}
if ($enRgpd[0]->getNewsletter() == 1)
{
$iNewsletter = 1;
}
} else {
$enComandes = $this->em->getRepository(Comandes::class)->findBy(array(
'consumers' => $sessConsumer_id,
'estat' => '1'
));
if ($enComandes)
{
$iRgpd = 1;
}
}
if ($enConsumers->getUsuari()
&& $enConsumers->getUsuari()->getCodi() != '')
{
$aPost['tipus_client'] = $enConsumers->getUsuari()->getCodi();
} else {
$aPost['tipus_client'] = '';
}
}
$aPaisos = $this->em->getRepository(Paisos::class)->findAll();
if ($aRequest->has('backend')
|| $aRequest2->has('backend'))
{
///////////////////////////////////////////////////////////////
// Recuperem els valors de la comanda, per la forma de pagament
///////////////////////////////////////////////////////////////
$objComandes = $this->em->getRepository(Comandes::class)->findBy(array('id' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')));
$aPost['forma_pagament'] = $objComandes[0]->getFormaPagament();
$aPost['codi_descompte'] = $objComandes[0]->getCodiDescompte();
$sLlocVenda = $objComandes[0]->getLlocVenda();
////////////////////////////
// Insertem informació a log
////////////////////////////
$this->objUtil->logAction($peticion, $this->getUser());
//$objWebServicesCompany = new WebServicesCompanyController();
/////////////////////////////////////////////////////////////////////////////////////
/// Quan la cridem com una clase no te acces al getParameter, així li passem el valor
/////////////////////////////////////////////////////////////////////////////////////
//$objWebServicesCompany->setEnviroments($this->getParameter('kernel.environment'));
//$objWebServicesCompany->setObjContainer($this);
//$objWebServicesCompany->setObjGetMailer($this->get('mailer'));
//$aResposta = $objWebServicesCompany->get_company_estadistica();
$aCompanyEstadistica = array();
//if ($aResposta['iError'] == 0
// && $aResposta['blExists'] === true)
//{
// $aCompanyEstadistica = $aResposta['companies'];
//}
return $this->render('Backend\Formulario\comprovar_dades.html.twig', array(
'objComandesLinies' => $objComandesLinies,
'objComandesLiniesSuplement' => $objComandesLiniesSuplement,
'fiOferta' => $objGeneral[0]->getDataFiOferta(),
'aSuplements' => $aSuplements,
'total_cistella' => $total_cistella,
'blErrorInsertConsumer' => $blErrorInsertConsumer,
'aPost' => $aPost,
'sessConsumer_id' => $sessConsumer_id,
'enGeneral' => $this->enGeneral,
'iRgpd' => $iRgpd,
'iCgat' => $iCgat,
'iNewsletter' => $iNewsletter,
'club_esqui' =>$this->session->get('club_esqui'),
'bDescompte' => $bDescompte,
'blConnexioAxess' => $blConnexioAxess,
'blAltaModificacioAxess' => $blAltaModificacioAxess,
'aPaisos' => $aPaisos,
'aCompanyEstadistica' => $aCompanyEstadistica,
'util' => $this->objUtil,
'sLlocVenda' => $sLlocVenda
));
} else {
return $this->render('comprovar_dades.html.twig', array(
'objComandesLinies' => $objComandesLinies,
'objComandesLiniesSuplement' => $objComandesLiniesSuplement,
'fiOferta' => $objGeneral[0]->getDataFiOferta(),
'aSuplements' => $aSuplements,
'total_cistella' => $total_cistella,
'blErrorInsertConsumer' => $blErrorInsertConsumer,
'aPost' => $aPost,
'sessConsumer_id' => $sessConsumer_id,
"enSidebar" => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors,
'iRgpd' => $iRgpd,
'iCgat' => $iCgat,
'iNewsletter' => $iNewsletter,
'bDescompte' => $bDescompte,
'blConnexioAxess' => $blConnexioAxess,
'blAltaModificacioAxess' => $blAltaModificacioAxess,
'aPaisos' => $aPaisos,
'util' => $this->objUtil
));
}
}
public function temporadaAction(Request $peticion)
{
$aGeneral = $this->enGeneral[0];
if (!$aGeneral->getComprarVisible())
{
// Obtenir la direcció IP del client
$clientIp = $peticion->getClientIp();
if ($clientIp != '195.77.190.2'
&& $clientIp != '194.36.123.130'
&& $clientIp != '195.235.152.100'
&& $clientIp != '185.254.157.22'
)
{
return $this->redirect($this->generateUrl('home'));
}
}
return $this->render('abonaments_temporada.html.twig', array(
'sessConsumer_id' => $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'),
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors,
'util' => $this->objUtil
));
}
public function classesAction(Request $peticion)
{
$aGeneral = $this->enGeneral[0];
if (!$aGeneral->getBotigaClasses())
{
// Obtenir la direcció IP del client
$clientIp = $peticion->getClientIp();
if ($clientIp != '195.77.190.2'
&& $clientIp != '194.36.123.130'
&& $clientIp != '195.235.152.100'
)
{
return $this->redirect($this->generateUrl('home'));
}
}
return $this->render('abonaments_classes.html.twig', array(
'sessConsumer_id' => $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'),
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors,
'util' => $this->objUtil
));
}
public function botigaAction(Request $peticion)
{
$aGeneral = $this->enGeneral[0];
if (!$aGeneral->getBotigaLloguer())
{
// Obtenir la direcció IP del client
$clientIp = $peticion->getClientIp();
if ($clientIp != '195.77.190.2'
&& $clientIp != '194.36.123.130'
&& $clientIp != '195.235.152.100'
)
{
return $this->redirect($this->generateUrl('home'));
}
}
return $this->render('abonaments_botiga.html.twig', array(
'sessConsumer_id' => $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'),
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors,
'util' => $this->objUtil
));
}
public function familiarAction(Request $peticion)
{
$aRequest2 = $peticion->attributes;
$aRequest = $peticion->query;
$repository = $this->em->getRepository(Abonaments::class);
$aParam = array( 'actiu' => 1,
'familiar' => 1,
'club_esqui' => 0
);
$aParam['estacio'] = 'MAS';
if (!$aRequest->has('backend')
&&
!$aRequest2->has('backend'))
{
$aParam['nomes_tablet'] = 0 ;
} else {
//$aParam['per_id'] = $this->getUser()->getPerfils();
switch ($this->getUser()->getPerfils()->getId())
{
case 1: // Administrador
case 7: // superadmin
$aParam['admin'] = 1;
break;
case 10: // Abonaments-oficines-fires
$aParam['fires_oficina'] = 1;
break;
case 14: // Club d'Esqui
$aParam['per_id'] = $this->getUser()->getPerfils();
break;
default:
// En principi tots els abonaments han de tenir abo_admin a 1 o 0, això ho fem per que si no es un dels perfils
// anterior no volem que surti cap abonament
$aParam['admin'] = 2;
break;
}
// si el pulsa el botó d'abonament de familia nombrosa per clubs mostra les families nombroses de club
if (($aRequest->has('abonamentClub')
&& $aRequest->get('abonamentClub') == 1) ||
($aRequest2->has('abonamentClub')
&& $aRequest2->get('abonamentClub') == 1)
)
{
$aParam['club_esqui'] = 1;
}
}
if ($this->session->get('club_esqui')
|| $peticion->getSession()->get('sessLloc_venda') =='ClubEsqui')
{
$aParam['club_esqui'] = 1;
}
$objAbonaments_mas = $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
$aParam2['desglossat'] = true;
$objAbonaments_desglossat_mas = $this->em->getRepository(Abonaments::class)->getAbonamnets(array_merge($aParam, $aParam2) );
$aAbonaments_desglossat_mas = array();
if ($objAbonaments_desglossat_mas)
{
foreach ($objAbonaments_desglossat_mas as $key => $val)
{
$aAbonaments_desglossat_mas[$val['ticket_type_id']][$val['pool_id']][$val['tarifa_id']][$val['person_type_general_id']]['preu'] = $val['preu'];
$aAbonaments_desglossat_mas[$val['ticket_type_id']][$val['pool_id']][$val['tarifa_id']][$val['person_type_general_id']]['person_type_id'] = $val['person_type_id'];
$aAbonaments_desglossat_mas[$val['ticket_type_id']][$val['pool_id']][$val['tarifa_id']][$val['person_type_general_id']]['id'] = $val['id'];
}
}
//dump($aAbonaments_desglossat_mas);
//dump($objAbonaments_desglossat_mas);
//die('stop');
$aParam['estacio'] = 'ALP';
$objAbonaments_alp = $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
$aParam2['desglossat'] = true;
$objAbonaments_desglossat_alp = $this->em->getRepository(Abonaments::class)->getAbonamnets(array_merge($aParam, $aParam2));
$aAbonaments_desglossat_alp = array();
if ($objAbonaments_desglossat_alp)
{
foreach ($objAbonaments_desglossat_alp as $key => $val)
{
$aAbonaments_desglossat_alp[$val['ticket_type_id']][$val['pool_id']][$val['tarifa_id']][$val['person_type_general_id']]['preu'] = $val['preu'];
$aAbonaments_desglossat_alp[$val['ticket_type_id']][$val['pool_id']][$val['tarifa_id']][$val['person_type_general_id']]['person_type_id'] = $val['person_type_id'];
$aAbonaments_desglossat_alp[$val['ticket_type_id']][$val['pool_id']][$val['tarifa_id']][$val['person_type_general_id']]['id'] = $val['id'];
}
}
$objGeneral = $this->em->getRepository(General::class)->findBy(array('id' => 1));
$blCistella = false;
if ($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')) $blCistella = true;
if ($aRequest->has('backend')
|| $aRequest2->has('backend'))
{
/*
* Insertem informació a log
*/
$this->objUtil->logAction($peticion, $this->getUser());
return $this->render('Backend\Formulario\abonaments_familiar.html.twig', array(
'objAbonaments_mas' => $objAbonaments_mas,
'aAbonaments_desglossat_mas' => $aAbonaments_desglossat_mas,
'objAbonaments_alp' => $objAbonaments_alp,
'aAbonaments_desglossat_alp' => $aAbonaments_desglossat_alp,
'fiOferta' => $objGeneral[0]->getDataFiOferta(),
'blCistella' => $blCistella,
'util' => $this->objUtil
));
} else {
return $this->render('abonaments_familiar.html.twig', array(
'objAbonaments_mas' => $objAbonaments_mas,
'aAbonaments_desglossat_mas' => $aAbonaments_desglossat_mas,
'objAbonaments_alp' => $objAbonaments_alp,
'aAbonaments_desglossat_alp' => $aAbonaments_desglossat_alp,
'fiOferta' => $objGeneral[0]->getDataFiOferta(),
'blCistella' => $blCistella,
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors,
'util' => $this->objUtil
));
}
}
public function tarifesAction(Request $peticion)
{
$aRequest = $peticion->request;
$iBackoffice = ($aRequest->has('iBackoffice')?$aRequest->get('iBackoffice'):0);
$sQuery = "SELECT p"
. " FROM App:Abonaments p "
. " WHERE p.ticket_type_id =:ticket_type_id "
. " AND p.pool_id =:pool_id "
. " AND p.tarifa_id =:tarifa_id "
. " AND p.data_inici <=:data_inici "
. " AND p.data_fi >=:data_fi "
. " AND p.actiu =:actiu "
. " ORDER BY p.person_type_general_id ASC"
;
$aParamAux = array( ":ticket_type_id" => $aRequest->get('ticket_type_id'),
":pool_id" => $aRequest->get('pool_id'),
":tarifa_id" => $aRequest->get('tarifa_id'),
":data_inici" => date("Y-m-d"),
":data_fi" => date("Y-m-d"),
":actiu" => 1,
);
$objAbonaments = $this->em->createQuery($sQuery)->setParameters($aParamAux)->getResult();
/*
$aParam = array('ticket_type_id'=> $aRequest->get('ticket_type_id'),
'pool_id' => $aRequest->get('pool_id'));
$objAbonaments = $this->em->getRepository(Abonaments::class)->findBy($aParam);
*/
$objGeneral = $this->em->getRepository(General::class)->findBy(array('id' => 1));
//dump ($objAbonaments[0]);
$fiOferta = $objGeneral[0]->getDataFiOferta();
if ($iBackoffice == "1")
{
$fiOferta = $objGeneral[0]->getDataFiOfertaBackoffice();
}
return $this->render('inc_tarifes_persones.html.twig', array(
'objAbonaments' => $objAbonaments,
'fiOferta' => $fiOferta,
'util' => $this->objUtil
));
}
public function create_comandaAction($iFromBackend)
{
return new response($this->create_comanda($iFromBackend));
}
public function create_comanda($iFromBackend)
{
///////////////////////////////////
// Comprovem si existeix la sessió
// Si no existeix creem la comanda
///////////////////////////////////
if (!$this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'))
{
$enComandes = new Comandes();
if ($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'))
{
////////////////////////////////////////////////////////
// Si el client està logat ja el vinculem amb la comanda
////////////////////////////////////////////////////////
$enConsumers = $this->em->getRepository(Consumers::class)->find($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'));
$enComandes->setConsumers($enConsumers);
} else {
$enComandes->setConsumers(NULL);
}
$enComandes->setEstat(0);
//////////////////////////////////////////
// Això si vens del formulari de la tablet
//////////////////////////////////////////
if ($iFromBackend == 1
&& $this->requestStack->getCurrentRequest()->getSession()->has('sessLloc_venda'))
{
$enComandes->setLlocVenda($this->requestStack->getCurrentRequest()->getSession()->get('sessLloc_venda'));
} else {
$this->requestStack->getCurrentRequest()->getSession()->set('sessLloc_venda', 'Web');
$enComandes->setLlocVenda('Web');
}
if ($iFromBackend == 1)
{
if ($this->session->get('club_esqui') == 1)
{
///////////////////////////////////////
// Si és un club el posser a la comanda
///////////////////////////////////////
$enUsuari = $this->em->getRepository(Usuari::class)->find($this->getUser()->getId());
$enComandes->setUsuari($enUsuari);
} else {
///////////////////////////////////////////////////////////////////////////////////////////////
/// Si el consumer comprador és el comprador vinculat al club s'ha d'enviar a la caixa de clubs
///////////////////////////////////////////////////////////////////////////////////////////////
if (isset($enConsumers)
&& !is_null($enConsumers->getUsuari())
&& $enConsumers->getUsuari()->getClubEsqui() == 1)
{
$enComandes->setUsuari($enConsumers->getUsuari());
$enComandes->setLlocVenda("ClubEsqui");
$enComandes->setFormaPagament("Credit");
}
}
}
///////////////////////////////////////////
// Comprovem si ve del fomulari del backend
///////////////////////////////////////////
if ($iFromBackend == 1)
{
/*
* Insertem informació a log
*/
$this->objUtil->logAction($this->requestStack->getCurrentRequest(), $this->getUser());
}
$this->em->persist($enComandes);
$this->em->flush();
$id = $enComandes->getId();
/////////////////////////
// Grabem el localitzador
/////////////////////////
//$enComandes->setLocalitzador(date('my') . $id);
$enComandes->setLocalitzador($this->objUtil->createLocalitzador($id));
$this->em->persist($enComandes);
$this->em->flush();
$this->requestStack->getCurrentRequest()->getSession()->set('sessCol_id', $id);
}
return $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id');
}
public function insert_comandes_liniesAction(Request $peticion)
{
$aRequest = $peticion->request;
/////////////////////////////
// Mirem data de fi d'oferta
/////////////////////////////
$blOferta = false;
$objGeneral = $this->em->getRepository(General::class)->findBy(array('id' => 1));
/////////////////////////////////////////////////////////////////////////////////////////
// Comprovem si ve del fomulari del backend ja que tenen una data de fi d'oferta diferent
/////////////////////////////////////////////////////////////////////////////////////////
if ($aRequest->has('backend'))
{
if ($objGeneral[0]->getDataFiOfertaBackoffice()->format('Y-m-d') >= date("Y-m-d")) $blOferta = true;
} else {
if ($objGeneral[0]->getDataFiOferta()->format('Y-m-d') >= date("Y-m-d")) $blOferta = true;
}
$iFromBackend = 0;
if ($aRequest->has('backend')) $iFromBackend = 1;
///////////////////////////////
// Recuperem d'id de la comanda
///////////////////////////////
$iComanda = $this->create_comanda($iFromBackend);
////////////////////////////////////
// Recuperem les dades de la comanda
////////////////////////////////////
$aParam = array('id' => $iComanda);
$enComandes = $this->em->getRepository(Comandes::class)->findBy($aParam);
if ($aRequest->has('abonament'))
{
/////////////////////////////////////
// Recuperem les dades de l'abonament
/////////////////////////////////////
$aParam = array('id' => $aRequest->all('abonament')[0],
'actiu' => 1
);
$enAbonaments = $this->em->getRepository(Abonaments::class)->findOneBy($aParam);
foreach ($this->aTipusAbonament as $key => $val)
{
if ($aRequest->get($val) > 0)
{
$sQuery = "SELECT p"
. " FROM App:Abonaments p "
. " WHERE p.ticket_type_id =:ticket_type_id "
. " AND p.pool_id =:pool_id "
// . " AND p.tarifa_id =:tarifa_id "
. " AND p.data_inici <=:data_inici "
. " AND p.person_type_id =:person_type_id "
. " AND p.data_fi >=:data_fi "
. " AND p.actiu =:actiu "
. " ORDER BY p.person_type_general_id ASC"
;
//echo '-' . $aRequest->get('tarifa_id') . '-';
$aParamAux = array(
":ticket_type_id" => $enAbonaments->getTicketTypeId(),
":person_type_id" => $aRequest->get($val . '_person_type_id'),
":pool_id" => $enAbonaments->getPoolId(),
":data_inici" => date("Y-m-d"),
":data_fi" => date("Y-m-d"),
":actiu" => 1,
);
$objAbonaments = $this->em->createQuery($sQuery)->setParameters($aParamAux)->getResult();
/*
dump($aParamAux);
dump($objAbonaments);
echo '-' . $objAbonaments[0]->getID();
die('stop');
*/
/*
$aParam = array('pool_id' => $enAbonaments->getPoolId(),
'ticket_type_id' => $enAbonaments->getTicketTypeId(),
'person_type_id' => $aRequest->get($val . '_person_type_id'),
'actiu' => 1
);
$enAbonamentsAux = $this->em->getRepository(Abonaments::class)->findOneBy($aParam);
*/
$enAbonamentsAux = $this->em->getRepository(Abonaments::class)->find(array('id' => $objAbonaments[0]->getID()));
for ($iCon = 0; $iCon <$aRequest->get($val); $iCon++)
{
$Preu = $enAbonamentsAux->getPreu();
$AbonamentsTipus = $key;
$this->_insert_comandes_lines($this->em, $enComandes, $enAbonamentsAux, $Preu, $AbonamentsTipus, '', $peticion);
}
}
}
}
$aParameter = array('util' => $this->objUtil);
// Comprovem si ve del fomulari del backend
if ($aRequest->has('backend'))
{
/*
* Insertem informació a log
*/
$this->objUtil->logAction($peticion, $this->getUser());
$aParameter['backend'] = 1;
$sUrl = 'formulario_new';
if ($aRequest->get('comprar') == 'S')
{
$sUrl = 'backend_abonaments_cistella';
}
} else {
$sUrl = 'abonaments_front';
if ($aRequest->get('comprar') == 'S')
{
//////////////////////////
// Si el client està logat
//////////////////////////
if ($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'))
{
$sUrl = 'abonaments_cistella';
} else {
$sUrl = 'abonaments_form_alta_consumer';
}
}
}
return $this->redirect($this->generateUrl($sUrl,$aParameter));
}
public function _insert_comandes_lines($em, $enComandes, $enAbonaments, $Preu, $AbonamentsTipus, $sDetall,Request $peticion)
{
$enComandesLinies = new ComandesLinies();
$enComandesLinies->setComandes($enComandes[0]);
$enComandesLinies->setAbonaments($enAbonaments);
$enComandesLinies->setQuantitat(1);
$enComandesLinies->setPreu($Preu);
$enComandesLinies->setTotal($Preu);
$enComandesLinies->setAbonamentsTipus($AbonamentsTipus);
$sFunctionName = 'getNom' . ucfirst(($peticion->attributes->has('_locale')?$peticion->attributes->get('_locale'):'Ca'));
if ($enAbonaments->getEstacio() == 'Extra')
{
//$enComandesLinies->setDetall($enAbonaments->$sFunctionName() . ' ' . ($sDetall != ''?$sDetall . ' ':'') . $this->aEstacions[$enAbonaments->getEstacio()]);
$enComandesLinies->setDetall($enAbonaments->$sFunctionName() . ' ' . ($sDetall != ''?$sDetall . ' ':''));
} else {
//$enComandesLinies->setDetall($this->aTipusAbonament[$AbonamentsTipus] . ' ' . $enAbonaments->$sFunctionName() . ' ' . ($sDetall != ''?$sDetall . ' ':'') . $this->aEstacions[$enAbonaments->getEstacio()]);
$enComandesLinies->setDetall($this->aTipusAbonament[$AbonamentsTipus] . ' ' . $enAbonaments->$sFunctionName() . ' ' . ($sDetall != ''?$sDetall . ' ':''));
}
$enComandesLinies->setSuplement($enAbonaments->getSuplement());
$enComandesLinies->setConsumers();
// Comprovem si ve del fomulari del backend
if ($this->getUser())
{
/*
* Insertem informació a log
*/
$this->objUtil->logAction($peticion, $this->getUser());
}
$this->em->persist($enComandesLinies);
$this->em->flush();
}
public function insert_comandes_linies_familiarAction(Request $peticion)
{
$aRequest = $peticion->request;
/////////////////////////////
// Mirem data de fi d'oferta
/////////////////////////////
$blOferta = false;
$objGeneral = $this->em->getRepository(General::class)->findBy(array('id' => 1));
if ($objGeneral[0]->getDataFiOferta()->format('Y-m-d') >= date("Y-m-d")) $blOferta = true;
$iFromBackend = 0;
if ($aRequest->has('backend')) $iFromBackend = 1;
///////////////////////////////
// Recuperem d'id de la comanda
///////////////////////////////
$iComanda = $this->create_comanda($iFromBackend);
$aParam = array('id' => $iComanda);
$enComandes = $this->em->getRepository(Comandes::class)->findBy($aParam);
///////////////////////////////////////////////
// Linies de la comanda per abonaments Familiar
///////////////////////////////////////////////
if ($aRequest->has('abonament') != '')
{
//dump($aRequest->get('abonament'));
foreach($aRequest->all('abonament') as $key => $val)
{
$iNumeroPersones = 1;
if ($val != 5 && $val !=10 && $val !=110)
{
$iAbonamentId = $aRequest->get('persones_' . $val);
} else {
$iAbonamentId = $aRequest->get('adult_id_abonament_' . $val);
//////////////////////////////////////////////////////////////////
// Si és el 5 abonament pot tenir més d'una persona per abonament,
// així que generem tantes linies com persones
//////////////////////////////////////////////////////////////////
if ($aRequest->get('adult_' . $val) > 0
|| $aRequest->get('infant_' . $val) > 0)
{
$iNumeroPersones = $aRequest->get('adult_' . $val) + $aRequest->get('infant_' . $val);
}
}
for ($iCon = 0; $iCon<$iNumeroPersones; $iCon++)
{
if ($val == 5 || $val == 10 || $val == 110)
{
if ($aRequest->get('adult_' . $val) > $iCon)
{
$iAbonamentId = $aRequest->get('adult_id_abonament_' . $val);
} else {
$iAbonamentId = $aRequest->get('infant_id_abonament_' . $val);
}
}
// Recuperem les dades de l'abonament
$enAbonaments = $this->em->getRepository(Abonaments::class)->find($iAbonamentId);
$enComandesLinies = new ComandesLinies();
$enComandesLinies->setComandes($enComandes[0]);
$enComandesLinies->setAbonaments($enAbonaments);
$enComandesLinies->setQuantitat(1);
$enComandesLinies->setPreu($enAbonaments->getPreu());
$enComandesLinies->setTotal($enAbonaments->getPreu());
$enComandesLinies->setAbonamentsTipus($enAbonaments->getPersonTypeGeneralId()==1?'AD':'IN');
$sFunctionName = 'getNom' . ucfirst(($peticion->attributes->has('_locale')?$peticion->attributes->get('_locale'):'Ca'));
$enComandesLinies->setDetall($enAbonaments->$sFunctionName() . ' ' . $this->aEstacions[$enAbonaments->getEstacio()]);
$enComandesLinies->setSuplement($enAbonaments->getSuplement());
$enComandesLinies->setConsumers();
$this->em->persist($enComandesLinies);
$this->em->flush();
}
}
}
$aParameter = array('util' => $this->objUtil);
///////////////////////////////////////////
// Comprovem si ve del fomulari del backend
///////////////////////////////////////////
if ($aRequest->has('backend'))
{
/*
* Insertem informació a log
*/
$this->objUtil->logAction($peticion, $this->getUser());
$aParameter['backend'] = 1;
$sUrl = 'formulario_new';
if ($aRequest->get('comprar') == 'S')
{
$sUrl = 'backend_abonaments_cistella';
}
} else {
$sUrl = 'abonaments_front';
if ($aRequest->get('comprar') == 'S')
{
$sUrl = 'abonaments_cistella';
}
}
return $this->redirect($this->generateUrl($sUrl,$aParameter));
//return $this->indexAction($peticion);
}
public function insertDocumentsAction(Request $peticion)
{
// Comprovem si ve del fomulari del backend
if ($this->getUser())
{
/*
* Insertem informació a log
*/
$this->objUtil->logAction($peticion, $this->getUser());
}
$aRequest = $peticion->request;
$emAux = $this->em;
$aFotoAllowed = array(
"image/jpeg",
"image/gif",
"image/png",
"image/tiff"
);
$aDocumentAllowed = array(
"application/pdf",
"application/x-pdf",
"application/vnd.oasis.opendocument.text",
"application/msword",
"image/jpeg",
"image/gif",
"image/png",
"image/tiff"
);
/////////////////////////////////////////
// devuelve el tipo mime de su extensión
/////////////////////////////////////////
$finfo = finfo_open(FILEINFO_MIME_TYPE);
if ($aRequest->has('id'))
{
foreach($aRequest->all('id') as $key => $val)
{
$enComandesLinies = $this->em->getRepository(ComandesLinies::class)->find($val);
$bFotoCorrecta = true;
if ($peticion->files->get('foto_' . $val) != '')
{
$file = $peticion->files->get('foto_' . $val);
if (in_array(finfo_file($finfo, $file), $aFotoAllowed))
{
$enComandesLinies->setImatgeAux($file);
} else {
$bFotoCorrecta = false;
$this->session->getFlashBag()->add('error', $this->translator->trans("El format d'alguna imatge no és correcte: formats permesos(jpeg, gif, png, tiff)"));
}
}
$bFotoDocument = true;
if ($peticion->files->get('document_' . $val) != '')
{
$document = $peticion->files->get('document_' . $val);
if (in_array(finfo_file($finfo, $document), $aDocumentAllowed))
{
$enComandesLinies->setDocumentoAux($document);
} else {
$bFotoDocument = false;
$this->session->getFlashBag()->add('error', $this->translator->trans("El format d'alguns documents no és correcte: formats permesos(pdf, x-pdf, text, msword, jpeg, gif, png, tiff)"));
}
}
$bFotoResident = true;
if ($peticion->files->get('resident_' . $val) != '')
{
$resident = $peticion->files->get('resident_' . $val);
if (in_array(finfo_file($finfo, $resident), $aDocumentAllowed))
{
$enComandesLinies->setResidentAux($resident);
} else {
$bFotoResident = false;
$this->session->getFlashBag()->add('error', $this->translator->trans("El format d'alguns documents no és correcte: formats permesos(pdf, x-pdf, text, msword, jpeg, gif, png, tiff)"));
}
}
$bFotoFamilia = true;
if ($peticion->files->get('familia_nombrosa_' . $val) != '')
{
$familia_nombrosa = $peticion->files->get('familia_nombrosa_' . $val);
if (in_array(finfo_file($finfo, $familia_nombrosa), $aDocumentAllowed))
{
$enComandesLinies->setFamiliaNombrosaAux($familia_nombrosa);
} else {
$bFotoFamilia = false;
$this->session->getFlashBag()->add('error', $this->translator->trans("El format d'alguns documents no és correcte: formats permesos(pdf, x-pdf, text, msword, jpeg, gif, png, tiff)"));
}
}
$this->em->persist($enComandesLinies);
$this->em->flush();
if ($enComandesLinies->getConsumers()
&& method_exists($enComandesLinies->getConsumers(), 'getId'))
{
$enConsumers = $emAux->getRepository(Consumers::class)->find($enComandesLinies->getConsumers()->getId());
if ($enConsumers)
{
$sPath = dirname(__FILE__) . '/../../public/uploads/';
// Fem copia dels fitxers
if ($enComandesLinies->getImatge() != '' && $bFotoCorrecta)
{
$sOrigen = $sPath . 'comandeslinies/' . $enComandesLinies->getImatge();
$sDesti = $sPath . 'consumers/' . $enComandesLinies->getImatge();
if (file_exists($sOrigen) && !file_exists($sDesti))
{
copy($sOrigen, $sDesti);
$miObjSize = new changeSize;
$miObjSize->canviTamanyImatge($sDesti, 250, 0);
$enConsumers->setImatge($enComandesLinies->getImatge());
}
}
if ($enComandesLinies->getDocumento() != '' && $bFotoDocument)
{
$sOrigen = $sPath . 'comandeslinies/' . $enComandesLinies->getDocumento();
$sDesti = $sPath . 'consumers/' . $enComandesLinies->getDocumento();
if (file_exists($sOrigen) && !file_exists($sDesti))
{
copy($sOrigen, $sDesti);
$enConsumers->setDocumento($enComandesLinies->getDocumento());
}
}
if ($enComandesLinies->getResident() != '' && $bFotoResident)
{
$sOrigen = $sPath . 'comandeslinies/' . $enComandesLinies->getResident();
$sDesti = $sPath . 'consumers/' . $enComandesLinies->getResident();
if (file_exists($sOrigen) && !file_exists($sDesti))
{
copy($sOrigen, $sDesti);
$enConsumers->setResident($enComandesLinies->getResident());
}
}
if ($enComandesLinies->getFamiliaNombrosa() != '' && $bFotoFamilia)
{
$sOrigen = $sPath . 'comandeslinies/' . $enComandesLinies->getFamiliaNombrosa();
$sDesti = $sPath . 'consumers/' . $enComandesLinies->getFamiliaNombrosa();
if (file_exists($sOrigen) && !file_exists($sDesti))
{
copy($sOrigen, $sDesti);
$enConsumers->setFamiliaNombrosa($enComandesLinies->getFamiliaNombrosa());
}
}
$emAux->persist($enConsumers);
$emAux->flush();
}
}
}
}
finfo_close($finfo);
return $this->documentsAction($peticion);
}
public function documentDeteleAction(Request $peticion)
{
// Comprovem si ve del fomulari del backend
if ($this->getUser())
{
/*
* Insertem informació a log
*/
$this->objUtil->logAction($peticion, $this->getUser());
}
$aRequest = $peticion->attributes;
$enComandesLiniesAux = $this->em->getRepository(ComandesLinies::class)->findBy(array('id' => $aRequest->get('id'), 'comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')));
if (count ($enComandesLiniesAux) > 0)
{
$enComandesLinies = $this->em->getRepository(ComandesLinies::class)->find($aRequest->get('id'));
//$path = $this->get('kernel')->getRootDir() . '/../web/uploads/comandeslinies/';
$path = $enComandesLinies->getUploadRootDir();
$sFunctionName = 'get' . ucfirst($aRequest->get('tipo'));
$sRutaImatge = $path . $enComandesLinies->$sFunctionName();
if (file_exists($sRutaImatge))
{
unlink($sRutaImatge);
}
$sFunctionName = 'set' . ucfirst($aRequest->get('tipo'));
$enComandesLinies->$sFunctionName(null);
$this->em->persist($enComandesLinies);
$this->em->flush();
}
return $this->documentsAction($peticion);
}
public function cistellaAction(Request $peticion)
{
$aRequest = $peticion->attributes;
$repository = $this->em->getRepository(Abonaments::class);
////////////////////////////////
// Recuperem dades de la comanda
////////////////////////////////
$aParam = array(
'id' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')
);
$objComandes = $this->em->getRepository(Comandes::class)->findBy($aParam);
//////////////////////////////////////////////////////////
// Recuperem les linies de la comanda que no són suplement
//////////////////////////////////////////////////////////
$aParam = array(
'comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'),
'suplement' => 0
);
$objComandesLinies = $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
///////////////////////////////////////////////////////
// Recuperem les linies de la comanda que són suplement
///////////////////////////////////////////////////////
$aParam = array(
'comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'),
'suplement' => 1
);
$objComandesLiniesSuplement = $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
$aSuplements = array();
foreach ($objComandesLiniesSuplement as $key => $val)
{
$aSuplements[] = $val->getRelacionatComandesLinies()->getId() . '-' .$val->getAbonaments()->getId();
}
////////////////////////////
/// Recuperem els suplements
////////////////////////////
$aPersons = array(
1 => 'AD',
2 => 'IN',
6 => 'ME',
7 => 'V1',
8 => 'V2'
);
foreach ($aPersons as $key => $val)
{
$aParam = array(
'estacio' => 'MAS',
'suplement' => 1,
'club_esqui' => 0,
'desglossat' => true,
'person_type_general_id' => $key,
'nomes_tablet' => 0
);
if ($aRequest->has('backend'))
{
$aParam['per_id'] = $this->getUser()->getPerfils();
unset($aParam['nomes_tablet']);
unset($aParam['club_esqui']);
switch ($this->getUser()->getPerfils()->getId())
{
case 1: // Administrador
case 7: // superadmin
$aParam['admin'] = 1;
unset($aParam['per_id']);
break;
case 10: // Abonaments-oficines-fires
$aParam['fires_oficina'] = 1;
unset($aParam['per_id']);
break;
default:
// En principi tots els abonaments han de tenir abo_admin a 1 o 0, això ho fem per que si no es un dels perfils
// anterior no volem que surti cap abonament
$aParam['admin'] = 2;
break;
}
}
if ($this->session->get('club_esqui'))
{
unset($aParam['admin']);
$aParam['club_esqui'] = 1;
}
$objAbonaments_mas[$val] = $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
$aParam['estacio'] = 'ALP';
$objAbonaments_alp[$val] = $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
$aParam['estacio'] = 'Extra';
$objAbonaments_extra[$val] = $this->em->getRepository(Abonaments::class)->getAbonamnets($aParam);
}
$objGeneral = $this->em->getRepository(General::class)->findBy(array('id' => 1));
$enConsumers = array();
$aAbonatsAmbAbonaments = array();
$sNom = '';
$sCognom = '';
$sCognom2 = '';
if ($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'))
{
///////////////////////////////////////////////////////////////////////////////
// Si el consumer pagador està logat, carregem els consumers de la seva familia
///////////////////////////////////////////////////////////////////////////////
$enConsumers = $this->em->getRepository(Consumers::class)->getConsumersOfConsumer($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'));
//$aParam = array('clients' => $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'));
if (!$enConsumers)
{
$enConsumers = $this->em->getRepository(Consumers::class)->findById($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'));
$sNom = $enConsumers[0]->getNom();
$sCognom = $enConsumers[0]->getCognom1();
$sCognom2 = $enConsumers[0]->getCognom2();
} else {
/////////////////////////////////////////////////////////////////////////////
// Si la compra es fa des de clubs d'esquí, oficines o fires no es permete
// més d'un abonament per temporada
// A les tablets (Vendes des d’Oficinies i Fires) i a Clubs d’esquí un
// titular no pugui comprar dos productes diferents, la mateixa persona i en
// la mateixa temporada. Volem que sigui així, però amb els següents matisos:
// -Excepte que ho puguin fer del Departament d’Administració (Ari i Jessica).
// -Que l’únic producte afegit que pugui comprar el mateix titular només sigui
// el producte del suplement de l’Esquí Nocturn i, també òbviament, altres
// productes que siguin serveis complementaris (Ex. Guardaesquís)
//////////////////////////////////////////////////////////////////////////////
/// Temporada 2022-2023: la restricció s'ha ampliat també a les comandes fetes
/// des de el frontoffices
//////////////////////////////////////////////////////////////////////////////
/// Temporada 2025-2026: ara tampoc es pot per administració (ara es diu central)
/// que un titular pugui comprar dos productes diferents, la mateixa persona i en
/// la mateixa temporada
//////////////////////////////////////////////////////////////////////////////
if ($this->session->get('club_esqui') == 1 ||
($this->requestStack->getCurrentRequest()->getSession()->has('sessLloc_venda') &&
($this->requestStack->getCurrentRequest()->getSession()->get('sessLloc_venda') == 'Oficina' ||
$this->requestStack->getCurrentRequest()->getSession()->get('sessLloc_venda') == 'Fira' ||
$this->requestStack->getCurrentRequest()->getSession()->get('sessLloc_venda') == 'ClubEsqui' ||
$this->requestStack->getCurrentRequest()->getSession()->get('sessLloc_venda') == '' ||
$this->requestStack->getCurrentRequest()->getSession()->get('sessLloc_venda') == 'Web' ||
$this->requestStack->getCurrentRequest()->getSession()->get('sessLloc_venda') == 'Administracio' // ara te el nom de central
)
)
)
{
$iAny = date('Y');
$sDataNow = date('m-d');
if ($sDataNow < '07-01') $iAny--;
$enConsumersAbonats = $this->em->getRepository(ConsumersHasConsumers::class)->findBy(array('consumer' => $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id')));
foreach ($enConsumersAbonats as $key => $val)
{
$abonat = $val->getConsumerFill()->getId();
$sql = '
SELECT p FROM
App:ComandesLinies p
JOIN App:Comandes c
WHERE p.comandes = c.id
AND c.id != :com_id'
//AND c.consumers = :con_id
. ' AND c.data >= :data
AND p.suplement = :suplement
AND c.estat = :estat
AND c.devolucio != :devolucio
AND p.anulada != :anulada
AND p.consumers = :abonat
';
$stmt = $this->em->createQuery($sql);
$stmt->setParameter('com_id', $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
//$stmt->setParameter('con_id', $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'));
$stmt->setParameter('data', $iAny . '-07-01');
$stmt->setParameter('suplement', 0);
$stmt->setParameter('estat', 1);
$stmt->setParameter('devolucio', 1);
$stmt->setParameter('anulada', 1);
$stmt->setParameter('abonat', $abonat);
//$stmt->setParameter('estacio', 'Extra');
///////////////////////////////////////////////////
// returns an array of arrays (i.e. a raw data set)
///////////////////////////////////////////////////
$a = $stmt->getResult();
// dump($a);
// die('stop');
foreach ($a as $key => $val)
{
////////////////////////////////////
/// Si la línia te consumer associat
////////////////////////////////////
if ($val->getConsumers())
{
if ($val->getAbonaments()->getEstacio() != 'Extra')
{
if ($val->getAbonaments()->getNocturn() == 1)
{
$aAbonatsAmbAbonaments[$val->getConsumers()->getId()]['nocturn'] = 1;
} else {
$aAbonatsAmbAbonaments[$val->getConsumers()->getId()]['diurn'] = 1;
}
}
}
}
}
}
}
}
///////////////////////////////////////////
// Comprovem si ve del fomulari del backend
///////////////////////////////////////////
if ($aRequest->has('backend'))
{
/*
* Insertem informació a log
*/
$this->objUtil->logAction($peticion, $this->getUser());
return $this->render('Backend\Formulario\cistella.html.twig', array(
'objComandesLinies' => $objComandesLinies,
'objAbonaments_mas' => $objAbonaments_mas,
'objAbonaments_alp' => $objAbonaments_alp,
'objAbonaments_extra' => $objAbonaments_extra,
'fiOferta' => $objGeneral[0]->getDataFiOferta(),
'aSuplements' => $aSuplements,
'enConsumers' => $enConsumers,
'enGeneral' => $this->enGeneral,
'Nom' => $sNom,
'Cognom' => $sCognom,
'Cognom2' => $sCognom2,
'aAbonatsAmbAbonaments' => $aAbonatsAmbAbonaments,
'club_esqui' =>$this->session->get('club_esqui'),
'objComandes' => $objComandes,
'util' => $this->objUtil
));
} else {
return $this->render('cistella.html.twig', array(
'objComandesLinies' => $objComandesLinies,
'objAbonaments_mas' => $objAbonaments_mas,
'objAbonaments_alp' => $objAbonaments_alp,
'fiOferta' => $objGeneral[0]->getDataFiOferta(),
'aSuplements' => $aSuplements,
'enConsumers' => $enConsumers,
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors,
'aAbonatsAmbAbonaments' => $aAbonatsAmbAbonaments,
'util' => $this->objUtil
));
}
}
public function _total_cistella()
{
$iTotal = 0;
if ($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'))
{
$aParam = array('comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
$objComandesLinies = $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
foreach ($objComandesLinies as $key => $val)
{
$iTotal = $iTotal + $val->getTotal() - $val->getDescompte();
}
}
return $iTotal;
}
public function total_cistellaAction()
{
return new Response($this->_total_cistella());
}
public function getDataNaixementAction(Request $peticion)
{
$aRequest = $peticion->attributes;
$enConsumers = $this->em->getRepository(Consumers::class)->find($aRequest->get('val'));
$data = '';
if ($enConsumers)
{
$data = $enConsumers->getDataNaixement();
}
if ($data != '')
{
echo $data->format('Y-m-d');
} else {
echo '*';
}
return new Response('');
}
/*
public function getDescompteAction(Request $peticion)
{
$aRequest = $peticion->attributes;
$enAbonats = $this->em->getRepository(Abonats::class)->find($aRequest->get('val'));
$data = '';
if ($enAbonats)
{
//////////////////////////////////////////////////////////
// Comprovem si ja s'ha utilitzat el descompte de l'abonat
//////////////////////////////////////////////////////////
if ($enAbonats->getDescompteUtilitzat() != 1)
{
$data = $enAbonats->getDescompte();
}
}
echo $data;
return new Response('');
}
public function getDescompteAndUpdateAction(Request $peticion)
{
$aRequest = $peticion->attributes;
$enConsumers = $this->em->getRepository(Consumers::class)->find($aRequest->get('val'));
$data = '';
if ($enConsumers)
{
//////////////////////////////////////////////////////////
// Comprovem si ja s'ha utilitzat el descompte de l'abonat
//////////////////////////////////////////////////////////
if ($enConsumers->getDescompteUtilitzat() != 1
&& $enConsumers->getDescompteEstacio() == $aRequest->get('estacio'))
{
$data = $enConsumers->getDescompte();
}
}
$enComandesLiniesAux = $this->em->getRepository(ComandesLinies::class)->findBy(array('id' => $aRequest->get('id'),
'comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')));
if (count ($enComandesLiniesAux) > 0)
{
$enComandesLinies = $this->em->getRepository(ComandesLinies::class)->find($aRequest->get('id'));
if ($data > 0)
{
$enComandesLinies->setDescompte($data);
$enComandesLinies->setTipusDescompte('C');
} else {
$enComandesLinies->setDescompte(0);
$enComandesLinies->setTipusDescompte('');
}
$this->em->persist($enComandesLinies);
$this->em->flush();
}
echo $data;
return new Response('');
}
*/
public function netDescompteLiniaAction(Request $peticion)
{
$aRequest = $peticion->attributes;
$enComandesLiniesAux = $this->em->getRepository(ComandesLinies::class)->findBy(array('id' => $aRequest->get('id'), 'comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')));
if (count ($enComandesLiniesAux) > 0)
{
$enComandesLinies = $this->em->getRepository(ComandesLinies::class)->find($aRequest->get('id'));
$enComandesLinies->setDescompte(0);
$enComandesLinies->setTipusDescompte('');
$this->em->persist($enComandesLinies);
$this->em->flush();
echo 'ok';
} else {
echo 'ko';
}
return new Response('');
}
public function updateConsumersAction(Request $peticion)
{
// Comprovem si ve del fomulari del backend
if ($this->getUser())
{
/*
* Insertem informació a log
*/
$this->objUtil->logAction($peticion, $this->getUser());
}
$aRequest = $peticion->attributes;
$em2 = $this->em;
if ($aRequest->get('val') == '_*_')
{
$aRequest->set('val', '');
}
//dump ($aRequest);
//die();
$enComandesLiniesAux = $this->em->getRepository(ComandesLinies::class)->findBy(array('id' => $aRequest->get('id'), 'comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')));
if (count ($enComandesLiniesAux) > 0)
{
$enComandesLinies = $this->em->getRepository(ComandesLinies::class)->find($aRequest->get('id'));
if ($aRequest->get('type') == 'consumer')
{
if ($aRequest->get('val') != '')
{
$enConsumers = $this->em->getRepository(Consumers::class)->find($aRequest->get('val'));
$enComandesLinies->setConsumers($enConsumers);
$enComandesLinies->setNom($enConsumers->getNom());
$enComandesLinies->setCognom1($enConsumers->getCognom1());
$enComandesLinies->setCognom2($enConsumers->getCognom2());
} else {
$enComandesLinies->setConsumers(null);
$enComandesLinies->setNom('');
$enComandesLinies->setCognom1('');
$enComandesLinies->setCognom2('');
}
} else {
$sNomFunction = 'set' . ucfirst($aRequest->get('type'));
if ($aRequest->get('type') == 'dataNaixement')
{
if ($aRequest->get('val') != '')
{
$dateTime = new \DateTime();
$enComandesLinies->$sNomFunction($dateTime->setTimestamp(strtotime($aRequest->get('val'))));
if ($enComandesLinies->getConsumers())
{
// S'actualitza la data de naixement al registre de consumer
$enConsumers = $em2->getRepository(Consumers::class)->find($enComandesLinies->getConsumers());
//////////////////////////////////////
// Comprovem si s'ha modificat la data
//////////////////////////////////////
$dateTime = new \DateTime();
if ($enConsumers->getDataNaixement() != $dateTime->setTimestamp(strtotime($aRequest->get('val'))))
{
$enConsumers->setModificat(1);
}
$enConsumers->setDataNaixement($dateTime->setTimestamp(strtotime($aRequest->get('val'))));
$em2->persist($enConsumers);
$em2->flush();
}
}
} else {
$enComandesLinies->$sNomFunction($aRequest->get('val'));
}
}
$this->em->persist($enComandesLinies);
$this->em->flush();
// Actualitzem el nom i cognoms del suplement si en te
if ($aRequest->get('type') == 'nom'
or $aRequest->get('type') == 'cognom1'
or $aRequest->get('type') == 'cognom2')
{
$enComandesLiniesSuplementAux = $this->em->getRepository(ComandesLinies::class)->findBy(array('relacionat_comandes_linies' => $aRequest->get('id')));
if (count($enComandesLiniesSuplementAux) > 0)
{
$enComandesLiniesSuplement = $this->em->getRepository(ComandesLinies::class)->find($enComandesLiniesSuplementAux[0]->getId());
$sNomFunction = 'set' . ucfirst($aRequest->get('type'));
$enComandesLiniesSuplement->$sNomFunction($aRequest->get('val'));
$this->em->persist($enComandesLiniesSuplement);
$this->em->flush();
}
}
return new Response('ok');
} else {
return new Response('ko');
}
}
/*
* Actualitza els camps de les comandes
*
*/
public function updateComandaAction(Request $peticion)
{
///////////////////////////////////////////
// Comprovem si ve del fomulari del backend
///////////////////////////////////////////
if ($this->getUser())
{
////////////////////////////
// Insertem informació a log
////////////////////////////
$this->objUtil->logAction($peticion, $this->getUser());
}
$aRequest = $peticion->attributes;
if ($aRequest->get('val') == '_*_')
{
$aRequest->set('val', '');
}
if ($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id') == $aRequest->get('id'))
{
$enComandesAux = $this->em->getRepository(Comandes::class)->findBy(array('id' => $aRequest->get('id')));
if (count ($enComandesAux) > 0)
{
$enComandes = $this->em->getRepository(Comandes::class)->find($aRequest->get('id'));
$sNomFunction = 'set' . ucfirst($aRequest->get('type'));
$enComandes->$sNomFunction($aRequest->get('val'));
$this->em->persist($enComandes);
$this->em->flush();
return new Response('ok');
} else {
return new Response('ko');
}
} else {
return new Response('ko');
}
}
public function insertSuplementsAction(Request $peticion)
{
// Comprovem si ve del fomulari del backend
if ($this->getUser())
{
/*
* Insertem informació a log
*/
$this->objUtil->logAction($peticion, $this->getUser());
}
$aRequest = $peticion->attributes;
// Mirem data de fi d'oferta
$blOferta = false;
$objGeneral = $this->em->getRepository(General::class)->findBy(array('id' => 1));
if ($objGeneral[0]->getDataFiOferta()->format('Y-m-d') >= date("Y-m-d")) $blOferta = true;
$enComandesLiniesAux = $this->em->getRepository(ComandesLinies::class)->findBY(
array(
'id' => $aRequest->get('id_related'),
'comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')
));
if (count ($enComandesLiniesAux) > 0)
{
$enComandesLinies = $this->em->getRepository(ComandesLinies::class)->find($aRequest->get('id_related'));
$enAbonaments = $this->em->getRepository(Abonaments::class)->find($aRequest->get('id_own'));
$enComandesLiniesNew = new ComandesLinies();
$enComandesLiniesNew->setComandes($enComandesLinies->getComandes());
$enComandesLiniesNew->setAbonaments($enAbonaments);
$enComandesLiniesNew->setRelacionatComandesLinies($enComandesLinies);
$enComandesLiniesNew->setQuantitat(1);
$enComandesLiniesNew->setNom($enComandesLiniesAux[0]->getNom());
$enComandesLiniesNew->setCognom1($enComandesLiniesAux[0]->getCognom1());
$enComandesLiniesNew->setCognom2($enComandesLiniesAux[0]->getCognom2());
/*
$sFunctionName = 'getPreu' . ucfirst($this->aTipusAbonament[$enComandesLinies->getAbonamentsTipus()]) . ($blOferta?'Promo':'');
if ($blOferta
&& is_null($enAbonaments->$sFunctionName()))
{
$sFunctionName = 'getPreu' . ucfirst($this->aTipusAbonament[$enComandesLinies->getAbonamentsTipus()]);
}
//mail ('jramon@entorno.es', 'restored.masella', '-' . $sFunctionName . '-');
$enComandesLiniesNew->setPreu($enAbonaments->$sFunctionName());
$enComandesLiniesNew->setTotal($enAbonaments->$sFunctionName());
*/
$enComandesLiniesNew->setPreu($enAbonaments->getPreu());
$enComandesLiniesNew->setTotal($enAbonaments->getPreu());
$sFunctionName = 'getNom' . ucfirst(($peticion->attributes->has('_locale')?$peticion->attributes->get('_locale'):'Ca'));
//$enComandesLiniesNew->setDetall($enAbonaments->$sFunctionName() . ' ' . $this->aEstacions[$enAbonaments->getEstacio()]);
$enComandesLiniesNew->setDetall($enAbonaments->$sFunctionName());
$enComandesLiniesNew->setAbonamentsTipus($enComandesLinies->getAbonamentsTipus());
$enComandesLiniesNew->setSuplement($enAbonaments->getSuplement());
$enComandesLiniesNew->setConsumers();
$this->em->persist($enComandesLiniesNew);
$this->em->flush();
return new Response('ok');
}
return new Response('ko');
}
public function deleteSuplementAction(Request $peticion)
{
// Comprovem si ve del fomulari del backend
if ($this->getUser())
{
/*
* Insertem informació a log
*/
$this->objUtil->logAction($peticion, $this->getUser());
}
$aRequest = $peticion->attributes;
$enComandesLiniesAux = $this->em->getRepository(ComandesLinies::class)->findBY(array('abonaments' => $aRequest->get('id_own'), 'relacionat_comandes_linies' => $aRequest->get('id_related'),'comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')));
if (count ($enComandesLiniesAux) > 0)
{
$enComandesLinies = $this->em->getRepository(ComandesLinies::class)->find($enComandesLiniesAux[0]->getId());
if (!$enComandesLinies)
{
throw $this->createNotFoundException("No es troba l'abonament");
}
$this->em->remove($enComandesLinies);
$this->em->flush();
return new Response('ok');
}
return new Response('ko');
}
public function deleteAbonamentAction(Request $peticion)
{
// Comprovem si ve del fomulari del backend
if ($this->getUser())
{
/*
* Insertem informació a log
*/
$this->objUtil->logAction($peticion, $this->getUser());
}
$aRequest = $peticion->attributes;
$enComandesLiniesAux = $this->em->getRepository(ComandesLinies::class)->findBY(array('id' => $aRequest->get('id')));
if (count ($enComandesLiniesAux) > 0)
{
// Mirem si t'he suplements associats
$enComandesLiniesAux2 = $this->em->getRepository(ComandesLinies::class)->findBY(array('relacionat_comandes_linies' => $aRequest->get('id')));
foreach ($enComandesLiniesAux2 as $key => $val)
{
$enComandesLiniesSuplement = $this->em->getRepository(ComandesLinies::class)->find($val->getId());
$this->em->remove($enComandesLiniesSuplement);
$this->em->flush();
}
// esborrem la linia de comanda
$enComandesLinies = $this->em->getRepository(ComandesLinies::class)->find($enComandesLiniesAux[0]->getId());
if (!$enComandesLinies)
{
throw $this->createNotFoundException("No es troba l'abonament");
}
$this->em->remove($enComandesLinies);
$this->em->flush();
return new Response('ok');
}
return new Response('ko');
}
public function altaConsumerAction(Request $peticion)
{
$aRequest = $peticion->request;
$aParam = array();
if (!$this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'))
{
if ($aRequest->get('nom') != ''
&& $aRequest->get('cognom1') != ''
&& $aRequest->get('data_naixement') != ''
&& $aRequest->get('email') != '')
{
$id = '';
/////////////////////////////////////////////////////
/// Comprovem si existeix com a consumer consumer
/////////////////////////////////////////////////////
$sDataGirada = trim($aRequest->get('data_naixement'));
if (strpos($aRequest->get('data_naixement'),'/' ) !== false)
{
$sDataGirada = $this->objUtil->dataFormatYYYYMMDD(trim($aRequest->get('data_naixement')));
}
$aParams = array( 'Nombre' => substr(trim($aRequest->get('nom')), 0, 50),
'cognom1' => trim($aRequest->get('cognom1')),
'cognom2' => trim($aRequest->get('cognom2')),
'dataNaixement' => $sDataGirada
);
$aDadesUpdate = array();
$response = $this->forward('App\Controller\ConsumersController::check_exist_consumerAction', array(
'aParams' => $aParams
));
if ($response->getContent() == 0)
{
$enConsumers = new Consumers();
} else {
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// Si el consumer existeix com a consumer s'ha s'actualitzar com a pagador i afegir a la familia ell mateix
///////////////////////////////////////////////////////////////////////////////////////////////////////////
$enConsumers = $this->em->getRepository(Consumers::class)->find($response->getContent());
if ($enConsumers->GetTipus() == 'Consumer')
{
$aDadesUpdate = array(
'iIdEntorno' => $enConsumers->getId(),
'ConsumerIdProj'=> $enConsumers->getCustomerIdProj(),
'ConsumerIdPos' => $enConsumers->getCustomerIdPos(),
'ConsumerIdNum' => $enConsumers->getCustomerIdNum()
);
} else {
$enConsumers = new Consumers();
}
}
$jsonResposta = $this->forward('App\Controller\WebServicesController::checkConsumersAmbEmailAxessAction', array(
'aDades' => $aRequest->all()
));
//$objWebServicesController = new WebServicesController($this->em,$this->requestStack,$this->params);
//$objWebServicesController->setEnviroments($this->getParameter('kernel.environment'));
//$jsonResposta = $objWebServicesController->checkConsumersAmbEmailAxessAction($aRequest->all());
$aResposta = json_decode($jsonResposta->getContent(), true);
$aNoValidacionsDe = array();
if ($aResposta['error']['ConnexioAxess']
&& $aResposta['error']['ConsumerExistsAxess'])
{
$aDadesUpdate = array(
'iIdEntorno' => NULL,
'ConsumerIdProj' => $aResposta['idAxess']['ConsumerIdProj'],
'ConsumerIdPos' => $aResposta['idAxess']['ConsumerIdPos'],
'ConsumerIdNum' => $aResposta['idAxess']['ConsumerIdNum'],
);
//////////////////////////////
/// No em de comprovar l'email
//////////////////////////////
$aNoValidacionsDe = array('EmailClientExists');
}
$jsonResposta = $this->forward('App\Controller\WebServicesController::altaModificacioConsumersAxessAction', array(
'aDades' => $aRequest->all(),
'aNoValidacionsDe' => $aNoValidacionsDe,
'aDadesUpdate' => $aDadesUpdate));
//$objWebServicesController = new WebServicesController($this->em,$this->requestStack,$this->params);
//$objWebServicesController->setEnviroments($this->getParameter('kernel.environment'));
//$jsonResposta = $objWebServicesController->altaModificacioConsumersAxessAction($aRequest->all(),$aNoValidacionsDe,$aDadesUpdate);
$aResposta = json_decode($jsonResposta->getContent(), true);
if ($aResposta['error']['AltaModificacioAxess'])
{
///////////////////////////////////////////////
// Si no existeix creem/actualitzem el consumer
///////////////////////////////////////////////
$enConsumers->setNom($aRequest->get('nom'));
$enConsumers->setCognom1($aRequest->get('cognom1'));
$enConsumers->setCognom2($aRequest->get('cognom2'));
$enConsumers->setDireccio($aRequest->get('direccio'));
$enConsumers->setCp($aRequest->get('cp'));
$enConsumers->setPoblacio($aRequest->get('poblacio'));
$dateTime = new \DateTime();
$enConsumers->setDataNaixement($dateTime->setTimestamp(strtotime($aRequest->get('data_naixement'))));
$enConsumers->setTelefon($aRequest->get('telefon'));
$enConsumers->setEmail($aRequest->get('email'));
$enConsumers->setClau($this->objUtil->texto_aleatorio());
$enConsumers->setDni($aRequest->get('dni'));
$enConsumers->setNomEmpresa($aRequest->get('nom_empresa'));
$enConsumers->setNifEmpresa($aRequest->get('nif_empresa'));
$enConsumers->setDireccioEmpresa($aRequest->get('direccio_empresa'));
$enConsumers->setCpEmpresa($aRequest->get('cp_empresa'));
$enConsumers->setPoblacioEmpresa($aRequest->get('poblacio_empresa'));
$enConsumers->setProvinciaEmpresa($aRequest->get('provincia_empresa'));
$enConsumers->setOrigenEntrada('Alta Entor');
$enConsumers->setTipus('Pagador');
$enConsumers->setCustomerIdProj($aResposta['idAxess']['ConsumerIdProj']);
$enConsumers->setCustomerIdPos($aResposta['idAxess']['ConsumerIdPos']);
$enConsumers->setCustomerIdNum($aResposta['idAxess']['ConsumerIdNum']);
$enConsumers->setResposta4i($aResposta['missatgeAxess']);
$this->em->persist($enConsumers);
$this->em->flush();
$id = $enConsumers->getId();
//////////////////////////
// Creem Familia
//////////////////////////
$blRes = $this->forward('App\Controller\ConsumersHasConsumersController::addFamiliaAction', array(
'aValues' => array(
'consumers' => $id,
'consumers_fill'=> $id
)));
////////////////////////////////////
/// Creem la entrada a la taula RGPD
////////////////////////////////////
$enRgpd = new Rgpd();
$enRgpd->setTipus('Clients');
if ($aRequest->get('acepto'))
{
$enRgpd->setRgpd(1);
$enRgpd->setCgat(1);
}
//if ($aRequest->get('acepto_cgat')) $enRgpd->setCgat(1);
$dateTime = new \DateTime();
$enRgpd->setData($dateTime->setTimestamp(strtotime(date('d-m-Y H:i:s'))));
$enRgpd->setIp($this->objUtil->getIpConsumer());
$enRgpd->setEmail($aRequest->get('email'));
$enRgpd->setConsumers($enConsumers);
// afegit l'idioma
$enRgpd->setIdioma('ca');
if ($peticion->attributes->has('_locale'))
{
$enRgpd->setIdioma($peticion->attributes->get('_locale'));
}
$this->em->persist($enRgpd);
$this->em->flush();
//////////////////////////////////////////
/// Creem el CustomerAccount
//////////////////////////////////////////
$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);
$aElements = array( 'i_nPersProjNo' => $enConsumers->getCustomerIdProj(),
'i_nPersPosNo' => $enConsumers->getCustomerIdPos(),
'i_nPersPersNo' => $enConsumers->getCustomerIdNum(),
'i_szUserName' => $enConsumers->getEmail(),
'i_szPassword' => $enConsumers->getClau(),
'i_encryptmail' => 0,
);
$jsonReturn = $objWebServicesCustomerAccount->createCustomerAccount($aElements);
$aReturnCreateCustomerAccount = json_decode($jsonReturn->getContent(), true);
if ($aReturnCreateCustomerAccount['error']['CreateCustomerFromPerson'])
{
$enConsumers->setCustomerAccountNo($aReturnCreateCustomerAccount['aCustomerAccount']['NCUSTOMERACCOUNTNO']);
$enConsumers->setValidateHash($aReturnCreateCustomerAccount['aCustomerAccount']['SZVALIDATEHASH']);
$enConsumers->setValidateToken($aReturnCreateCustomerAccount['aCustomerAccount']['SZLOGINTOKEN']);
} else {
///////////////////////////////////////////////////////////////////////////
// l'Error -3 segurament és per que ja existeix Account per aquest customer
///////////////////////////////////////////////////////////////////////////
if ($aReturnCreateCustomerAccount['error']['NERRORNO'] != -3)
{
if (!$aReturnCreateCustomerAccount['error']['CreateCustomerFromPerson']) $this->addFlash('warning', "S'ha produit un error de a l'hora de crear el customer account Axess");
if (!$aReturnCreateCustomerAccount['error']['ConnexioConnectAxess']) $this->addFlash('warning', "S'ha produit un error de comunicació amb Axess DCI4ConnectCRM") . ':' . $aResposta['error']['SZERRORMESSAGE'];
}
}
$enConsumers->setRespostaDci4Connect(print_r($aReturnCreateCustomerAccount,true));
$this->em->persist($enConsumers);
$this->em->flush();
}
$sMissatgeError = '';
if (!$aResposta['error']['ConsumerExistsEntorno']) {
if (!$aResposta['error']['ConsumerExistAxessAmbDiferentDNI']) {
if (!$aResposta['error']['ConsumerExistAxessAmbDiferentEmail']) {
if ($aResposta['error']['AltaModificacioAxess']) {
if ($aResposta['error']['ConnexioAxess']) {
if ($aResposta['error']['DniClientExists']) {
$sMissatgeError = "El DNI ja existeix a una altre fitxa de consumer";
}
} else {
$sMissatgeError = "S'ha produit un error de comunicació amb Axess";
}
} else {
$sMissatgeError = "S'ha produit un error de a l'hora de insertar/modificar el consumer a Axess";
}
} else {
$sMissatgeError = "El nom, cognoms i data de naixement ja existeix a Axess però amb un altre Email";
}
} else {
$sMissatgeError = "El nom, cognoms i data de naixement ja existeix a Axess però amb un altre DNI";
}
} else {
$sMissatgeError = "El nom, cognoms i data de naixement ja existeix";
}
////////////////////////////////////////////////////
// Si existeix comprovem que el DNI no està informat
////////////////////////////////////////////////////
if ($sMissatgeError != '')
{
$this->session->getFlashBag()->add('error', $this->translator->trans("Hi ha un problema amb les seves dades, si us plau poseu-vos en contacte amb nosaltres"));
$sMissatge = '\n\nATENCIÓ HI HA HAGUT UN ERROR.' . $sMissatgeError;
$sMissatge .= print_r($aRequest, true);
if (isset($aResposta)) {
$sMissatge .= print_r($aResposta, true);
}
$this->phpmailer->EnviarAction(array(
'sMissatge' => $sMissatge,
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => $this->getParameter('EMAIL_RESERVAS'),
'sCc' => $this->getParameter('EMAIL_ERRORES'),
'sSubjecte' => "Solicitud de Registre Masella Error"
));
}
if ($aResposta['error']['AltaModificacioAxess'] === false)
{
$this->requestStack->getCurrentRequest()->getSession()->set('sessConsumer_id', '');
$aParam = array('nom' => $aRequest->get('nom'),
'cognom1' => $aRequest->get('cognom1'),
'cognom2' => $aRequest->get('cognom2'),
'direccio' => $aRequest->get('direccio'),
'cp' => $aRequest->get('cp'),
'poblacio' => $aRequest->get('poblacio'),
'data_naixement' => $aRequest->get('data_naixement'),
'telefon' => $aRequest->get('telefon'),
'email' => $aRequest->get('email'),
'dni' => $aRequest->get('dni'),
'error' => true
);
$aParam['nom_empresa'] = $aRequest->get('nom_empresa');
$aParam['nif_empresa'] = $aRequest->get('nif_empresa');
$aParam['direccio_empresa'] = $aRequest->get('direccio_empresa');
$aParam['cp_empresa'] = $aRequest->get('cp_empresa');
$aParam['poblacio_empresa'] = $aRequest->get('poblacio_empresa');
$aParam['factura'] = $aRequest->get('factura');
$sUrl = 'abonaments_form_alta_consumer';
;
if ($aResposta['error']['DniClientExists']) {
$this->session->getFlashBag()->add('error', $this->translator->trans("El dni ja existeix a la base de dades de clients, logis o posis en contacte amb nosaltres"));
} elseif ( $aResposta['error']['EmailClientExists']) {
$this->session->getFlashBag()->add('error', $this->translator->trans("El email ja existeix a la base de dades de clients, logis o posis en contacte amb nosaltres"));
} elseif ($aResposta['error']['ConsumerExistAxessAmbDiferentEmail']) {
$this->session->getFlashBag()->add('error', $this->translator->trans("Aquest client ja existeix a Masella però amb un altre Email"));
} elseif ( $aResposta['error']['ConsumerExistsEntorno']){
$this->session->getFlashBag()->add('error', $this->translator->trans("Aquest client ja existeix a Masella"));
} else {
$this->session->getFlashBag()->add('error', $this->translator->trans("S'ha produit un error a l'hora de guardar la comanda, torna-ho a prova en uns moment"));
}
} else {
///////////////////////////////
// Omplim la sessió del client
///////////////////////////////
$this->requestStack->getCurrentRequest()->getSession()->set('sessConsumer_id', $id);
////////////////////////////////////
// Recuperem les dades de la comanda
////////////////////////////////////
$enComandes = $this->em->getRepository(Comandes::class)->find($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
////////////////////////////////////////////////////////////////////////////////////////////////////////
// Guardem el client per si es no ho si s'ha tingut que registrà a posteriori per ha vist que ja existia
////////////////////////////////////////////////////////////////////////////////////////////////////////
$enComandes->setConsumers($enConsumers);
$this->em->persist($enComandes);
$this->em->flush();
$enComandes = $this->em->getRepository(Comandes::class)->find($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
if ($aRequest->get('newsletter') == 1) {
$aDades['nom'] = $aRequest->get('nom');
//$aDades['cognoms'] = $aRequest->get('cognoms');
$aDades['cognoms'] = $aRequest->get('cognom1') . ' ' . $aRequest->get('cognom2');
$aDades['email'] = $aRequest->get('email');
$aDades['adreca'] = $aRequest->get('direccio');
$aDades['poblacio'] = $aRequest->get('poblacio');
$sResp = $this->viamailing($aDades);
}
/////////////////////////////
// Enviem les dades al client
/////////////////////////////
$sMissatge = $this->translator->trans("DADES D'ACCÉS") . "\n\n";
$sMissatge .= $this->translator->trans("Aquestes sòn les seves dades d'accés, a partir d'ara podrà accedir a l'Àrea de client, i en les següents compres no haurà d'omplir de nou les dades") . "\n";
$sMissatge .= $this->translator->trans("Email: ") . $enConsumers->getEmail() . "\n";
$sMissatge .= $this->translator->trans("Clau: ") . $enConsumers->getClau() . "\n";
$sMissatge .= $this->translator->trans("Per seguretat recomanem canviar la clau.") . "\n";
$this->phpmailer->EnviarAction(array(
'sSubjecte' => "Dades d'accés",
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => $enConsumers->getEmail(),
//'sCc' => $this->getParameter('EMAIL_ERRORES'),
'sMissatge' => $sMissatge,
));
//$sUrl = 'abonaments_insert_comandes_linies';
$sUrl = 'abonaments_cistella';
}
} else {
$sUrl = 'abonaments_form_alta_consumer';
$this->session->getFlashBag()->add('error', $this->translator->trans("Hi ha un problema amb les seves dades, si us plau poseu-vos en contacte amb nosaltres"));
}
} else {
$sUrl = 'area_privada_dades';
}
return $this->redirect($this->generateUrl($sUrl, $aParam));
}
public function guardarClientAction(Request $peticion)
{
$aRequest = $peticion->request;
$iError = 0;
$aMissatgeError = array(0 => 'Operació correcte',
1 => "S'ha produït un error al login, torneu-vos a logar i torneu a realitzar la comanda. Si el problema persisteix poseu-vos en contacte amb nosaltres.",
2 => "El nom, cognoms i data de naixement ja existeix.",
3 => "El nom, cognoms i data de naixement ja existeix a Axess però amb un altre DNI",
7 => "El nom, cognoms i data de naixement ja existeix a Axess però amb un altre Email",
4 => "El DNI ja existeix a una altre fitxa de consumer",
5 => "S'ha produït un error a l'hora de guardar la comanda, torna-ho a prova en uns moment",
6 => "El Nif de la Company ja existeix en una altre company",
//10 => "S'ha produit un error de comunicació amb Axess"
10 => "S'ha produït un error a l'hora de guardar la comanda, contacteu amb nosaltres.",
11 => "S'ha produït un error a l'hora de guardar la comanda, contacteu amb nosaltres."
);
$aParam = array();
if ($this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'))
{
$id = $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id');
$enConsumers = $this->em->getRepository(Consumers::class)->find($id);
if ($enConsumers)
{
if ($aRequest->get('dadesModificades') == 1)
{
//////////////////////////////
// Comprovació i envar a Axess
//////////////////////////////
$jsonResposta = $this->forward('App\Controller\WebServicesController::altaModificacioConsumersAxessAction', array(
'aDades' => $aRequest->all(),
'aNoValidacionsDe' => array('EmailClientExists'),
'aDadesUpdate' => array(
'iIdEntorno' => $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'),
'ConsumerIdProj'=> $enConsumers->getCustomerIdProj(),
'ConsumerIdPos' => $enConsumers->getCustomerIdPos(),
'ConsumerIdNum' => $enConsumers->getCustomerIdNum(),
)));
/*
$aDadesUpdate = array(
'iIdEntorno' => $this->requestStack->getCurrentRequest()->getSession()->get('sessConsumer_id'),
'ConsumerIdProj'=> $enConsumers->getCustomerIdProj(),
'ConsumerIdPos' => $enConsumers->getCustomerIdPos(),
'ConsumerIdNum' => $enConsumers->getCustomerIdNum(),
);
$objWebServicesController = new WebServicesController($this->em,$this->requestStack,$this->params);
$objWebServicesController->setEnviroments($this->getParameter('kernel.environment'));
$jsonResposta = $objWebServicesController->altaModificacioConsumersAxessAction($aRequest->all(),array('EmailClientExists'),$aDadesUpdate);
*/
$aResposta = json_decode($jsonResposta->getContent(), true);
if ($aResposta['error']['AltaModificacioAxess'])
{
//////////////////////////////////
// Si te el dni buit s'ha d'omplir
//////////////////////////////////
if ($enConsumers->getDni() == '')
{
$enConsumers->setDni($aRequest->get('dni'));
}
if ($enConsumers->getDireccio() == '') {
$enConsumers->setDireccio($aRequest->get('direccio'));
}
if ($enConsumers->getCp() == '') {
$enConsumers->setCp($aRequest->get('cp'));
}
if ($enConsumers->getPoblacio() == '') {
$enConsumers->setPoblacio($aRequest->get('poblacio'));
}
if ($enConsumers->getTelefon() == '') {
$enConsumers->setTelefon($aRequest->get('telefon'));
}
$sTipusOld = $enConsumers->getTipus();
if ($aRequest->has('backend'))
{
$enConsumers->setNom($aRequest->get('nom'));
$enConsumers->setCognom1($aRequest->get('cognom1'));
$enConsumers->setCognom2($aRequest->get('cognom2'));
$dateTime = new \DateTime();
$enConsumers->setDataNaixement($dateTime->setTimestamp(strtotime($aRequest->get('data_naixement'))));
$enConsumers->setTipus('Pagador');
if ($enConsumers->getClau() == '')
{
$enConsumers->setClau($this->objUtil->texto_aleatorio());
}
}
} else {
$iError = 5;
if ($aResposta['error']['ConsumerExistsEntorno']) $iError = 2;
if ($aResposta['error']['ConsumerExistAxessAmbDiferentDNI']) $iError = 3;
if ($aResposta['error']['ConsumerExistAxessAmbDiferentEmail']) $iError = 7;
if ($aResposta['error']['DniClientExists']) $iError = 4;
if ($aResposta['error']['ConnexioAxess']) $iError = 10;
}
}
if ($iError==0)
{
//if ($aRequest->get('dadesModificadesFacturacio') == 1) {
$enConsumers->setNomEmpresa($aRequest->get('nom_empresa'));
$sPaisIso2 = '';
if ($aRequest->get('pai_id') != '')
{
$objPais = $this->em->getRepository(Paisos::class)->find($aRequest->get('pai_id'));
if ($objPais)
{
$enConsumers->setPaiId($objPais);
$sPaisIso2 = $objPais->getIso2();
}
}
$enConsumers->setNifEmpresa($aRequest->get('nif_empresa'));
$enConsumers->setDireccioEmpresa($aRequest->get('direccio_empresa'));
$enConsumers->setCpEmpresa($aRequest->get('cp_empresa'));
$enConsumers->setPoblacioEmpresa($aRequest->get('poblacio_empresa'));
$enConsumers->setProvinciaEmpresa($aRequest->get('provincia_empresa'));
////////////////////////////////////////////////////////
/// Si trien una companyia per estadistiques de la combo
////////////////////////////////////////////////////////
if ($aRequest->has('companyia_estadistica')
&& $aRequest->get('companyia_estadistica') != '')
{
$aIdCompanyia = explode('-', $aRequest->get('companyia_estadistica'));
$enConsumers->setCompanyProjNo($aIdCompanyia[0]);
$enConsumers->setCompanyPosNo($aIdCompanyia[1]);
$enConsumers->setCompanyNum($aIdCompanyia[2]);
$CompanyProjNo = $aIdCompanyia[0];
$CompanyPosNo = $aIdCompanyia[1];
$CompanyNum = $aIdCompanyia[2];
}
//}
if (!$aRequest->has('companyia_estadistica')
|| ($aRequest->has('companyia_estadistica')
&& $aRequest->get('companyia_estadistica') == ''))
{
///////////////////////////////////////////////////////////////////////////////////////////
/// Si es demana dades de facturació i no tenen els id D'axess o s'ha modificat alguna dada
/// busquem si existeix a la base de dades de masella
///////////////////////////////////////////////////////////////////////////////////////////
$CompanyProjNo = $enConsumers->getCompanyProjNo();
$CompanyPosNo = $enConsumers->getCompanyPosNo();
$CompanyNum = $enConsumers->getCompanyNum();
if ($aRequest->get('factura') == 1
&& ($enConsumers->getCompanyProjNo() == ''
|| $enConsumers->getCompanyPosNo() == ''
|| $enConsumers->getCompanyNum() == ''
|| $aRequest->get('dadesModificadesFacturacio') == 1
))
{
$aElements = array(
'nom_empresa' => $aRequest->get('nom_empresa'),
'pai_id' => $sPaisIso2,
'nif_empresa' => $aRequest->get('nif_empresa'),
'direccio_empresa' => $aRequest->get('direccio_empresa'),
'cp_empresa' => $aRequest->get('cp_empresa'),
'poblacio_empresa' => $aRequest->get('poblacio_empresa'),
'provincia_empresa' => $aRequest->get('provincia_empresa')
);
$aDadesUpdate = array();
$objWebServicesCompany = new WebServicesCompanyController();
/////////////////////////////////////////////////////////////////////////////////////
/// Quan la cridem com una clase no te acces al getParameter, així li passem el valor
/////////////////////////////////////////////////////////////////////////////////////
$objWebServicesCompany->setEnviroments($this->getParameter('kernel.environment'));
$objWebServicesCompany->setObjContainer($this);
$objWebServicesCompany->setObjGetMailer($this->phpmailer);
$jsonResposta = $objWebServicesCompany->altaModificacioCompanyAxessAction($aElements, array(''), $aDadesUpdate);
/*
$jsonResposta = $this->forward('App\Controller\WebServicesCompanyController::altaModificacioCompanyAxessAction', array(
'aDades' => $aElements,
'aNoValidacionsDe' => array(''),
'aDadesUpdate' => $aDadesUpdate
));
*/
//dump ($jsonResposta);
$aResposta = json_decode($jsonResposta->getContent(), true);
if ($aResposta['error']['AltaModificacioAxess'])
{
$enConsumers->setCompanyProjNo($aResposta['idAxess']['NCOMPANYPROJNR']);
$enConsumers->setCompanyPosNo($aResposta['idAxess']['NCOMPANYPOSNR']);
$enConsumers->setCompanyNum($aResposta['idAxess']['NCOMPANYNR']);
$CompanyProjNo = $aResposta['idAxess']['NCOMPANYPROJNR'];
$CompanyPosNo = $aResposta['idAxess']['NCOMPANYPOSNR'];
$CompanyNum = $aResposta['idAxess']['NCOMPANYNR'];
} else {
$iError = 5;
if ($aResposta['error']['NifCompanyExists']) $iError = 6;
if (!$aResposta['error']['ConnexioAxess']) $iError = 10;
if (!$aResposta['error']['ConnexioSQLSelver']) $iError = 11;
}
}
}
if ($aRequest->get('dadesModificades') == 1
|| $aRequest->get('dadesModificadesFacturacio') == 1)
{
$this->em->persist($enConsumers);
$this->em->flush();
if ($aRequest->get('dadesModificades') == 1)
{
//////////////////////////////////////////
/// Si és pagador creem el CustomerAccount
//////////////////////////////////////////
if ($enConsumers->getTipus() == 'Pagador'
&& $sTipusOld == 'Consumer')
{
//*****************
$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);
$aElements = array(
'i_nPersProjNo' => $enConsumers->getCustomerIdProj(),
'i_nPersPosNo' => $enConsumers->getCustomerIdPos(),
'i_nPersPersNo' => $enConsumers->getCustomerIdNum(),
'i_szUserName' => $enConsumers->getEmail(),
'i_szPassword' => $enConsumers->getClau(),
'i_encryptmail' => 0,
);
$jsonReturn = $objWebServicesCustomerAccount->createCustomerAccount($aElements);
$aReturnCreateCustomerAccount = json_decode($jsonReturn->getContent(), true);
if ($aReturnCreateCustomerAccount['error']['CreateCustomerFromPerson'])
{
$enConsumers->setCustomerAccountNo($aReturnCreateCustomerAccount['aCustomerAccount']['NCUSTOMERACCOUNTNO']);
$enConsumers->setValidateHash($aReturnCreateCustomerAccount['aCustomerAccount']['SZVALIDATEHASH']);
$enConsumers->setValidateToken($aReturnCreateCustomerAccount['aCustomerAccount']['SZLOGINTOKEN']);
} else {
///////////////////////////////////////////////////////////////////////////
// l'Error -3 segurament és per que ja existeix Account per aquest customer
///////////////////////////////////////////////////////////////////////////
if ($aReturnCreateCustomerAccount['error']['NERRORNO'] != -3)
{
if (!$aReturnCreateCustomerAccount['error']['CreateCustomerFromPerson']) $this->addFlash('warning', "S'ha produit un error de a l'hora de crear el customer account Axess");
if (!$aReturnCreateCustomerAccount['error']['ConnexioConnectAxess']) $this->addFlash('warning', "S'ha produit un error de comunicació amb Axess DCI4ConnectCRM") . ':' . $aResposta['error']['SZERRORMESSAGE'];
}
}
$enConsumers->setRespostaDci4Connect(print_r($aReturnCreateCustomerAccount,true));
$this->em->persist($enConsumers);
$this->em->flush();
}
}
}
if ($aRequest->get('acepto') == 1)
{
$id = $enConsumers->getId();
$enRgpd = new Rgpd();
$enRgpd->setTipus('Clients');
if ($aRequest->get('acepto'))
{
$enRgpd->setRgpd(1);
$enRgpd->setCgat(1);
}
//if ($aRequest->get('acepto_cgat')) $enRgpd->setCgat(1);
if ($aRequest->get('newsletter')) $enRgpd->setNewsletter(1);
// afegit l'idioma
if ($peticion->attributes->has('_locale'))
{
$enRgpd->setIdioma($peticion->attributes->get('_locale'));
}
$dateTime = new \DateTime();
$enRgpd->setData($dateTime->setTimestamp(strtotime(date('d-m-Y H:i:s'))));
$enRgpd->setIp($this->objUtil->getIpConsumer());
$enRgpd->setEmail($enConsumers->getEmail());
$enRgpd->setConsumers($enConsumers);
$this->em->persist($enRgpd);
$this->em->flush();
}
if ($aRequest->get('newsletter') == 1)
{
$aDades['nom'] = $aRequest->get('nom');
$aDades['cognoms'] = $aRequest->get('cognom1') . ' ' . $aRequest->get('cognom2');
$aDades['email'] = $aRequest->get('email');
$aDades['adreca'] = $aRequest->get('direccio');
$aDades['poblacio'] = $aRequest->get('poblacio');
$sResp = $this->viamailing($aDades);
}
/////////////////////////////////////////////
/// Guardem si el client vol rebre newletters
/// !!! SEMBLA QUR NO ÉS EL MÈTODE CORRECTE !!! PENDENT DE QUE AXESS ENS DIGUI QUELCOM
/////////////////////////////////////////////
/*
$aElements = array( 'BMARKETING' => ($aRequest->get('newsletter') == 1 ? '-1' : '0'),
'BRETRANSMISSION3RDPARTY' => 0,
'BSTORAGE' => ($aRequest->get('acepto') == 1 ? '-1' : '0'),
'BTRANSACTRETRANSMISSION' => 0,
'NPERSPOSNO' => $enConsumers->getCustomerIdPos(),
'NPERSNO' => $enConsumers->getCustomerIdNum(),
'NPERSPROJNO' => $enConsumers->getCustomerIdProj());
$jsonReturn = $this->forward('App\Controller\WebServicesController::marcaNewsletteriAcceptacio', array(
'aElements' => $aElements,
));
$aReturn = json_decode($jsonReturn->getContent(), true);
/////////////////////////////////////////////////////////////////////////
/// TODO: que fem si dona error, de moment s'envia un mail i continua....
/////////////////////////////////////////////////////////////////////////
*/
$enComandes = $this->em->getRepository(Comandes::class)->find($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
////////////////////////////////////
// Si ve del backend (del formulari)
////////////////////////////////////
if ($aRequest->has('backend'))
{
//$enComandes->setObservacionsPagament($aRequest->get('observacions_pagament'));
$enComandes->setPagamentTargeta($aRequest->get('pagament_targeta'));
$enComandes->setPagamentEfectiu($aRequest->get('pagament_efectiu'));
$enComandes->setCodiDescompte($aRequest->get('codi_descompte'));
$enComandes->setDescompte($aRequest->get('descompte'));
$enComandes->setObservacionsInternas($aRequest->get('observacions_internas'));
$enComandes->setFirmaCodi($aRequest->get('firma_codi'));
$enComandes->setTipusClient($aRequest->get('tipus_client'));
$enComandes->setEstat(1);
} else {
$enComandes->setLlocVenda('Web');
}
$enComandes->setFormaPagament($aRequest->get('forma_pagament'));
$enComandes->setNomEmpresa($aRequest->get('nom_empresa'));
$enComandes->setNifEmpresa($aRequest->get('nif_empresa'));
$enComandes->setDireccioEmpresa($aRequest->get('direccio_empresa'));
$enComandes->setCpEmpresa($aRequest->get('cp_empresa'));
$enComandes->setPoblacioEmpresa($aRequest->get('poblacio_empresa'));
$enComandes->setProvinciaEmpresa($aRequest->get('provincia_empresa'));
if ($aRequest->get('pai_id') != '')
{
$objPais = $this->em->getRepository(Paisos::class)->find($aRequest->get('pai_id'));
if ($objPais)
{
$enComandes->setPaiIdEmpresa($objPais);
}
}
$enComandes->setFactura($aRequest->get('factura'));
if ($aRequest->get('factura') == 1)
{
$enComandes->setCompanyProjNo($CompanyProjNo);
$enComandes->setCompanyPosNo($CompanyPosNo);
$enComandes->setCompanyNum($CompanyNum);
}
$this->em->persist($enComandes);
$this->em->flush();
if ($aRequest->has('backend'))
{
////////////////////////////
// Insertem informació a log
////////////////////////////
$this->objUtil->logAction($peticion, $this->getUser());
$sUrl = 'backend_formulario_fitxa';
} else {
if ($aRequest->get('forma_pagament') == 'Transferencia')
{
$sUrl = 'abonaments_transferencia';
} else {
$sUrl = 'abonaments_enviar_tpv';
}
}
}
} else {
$iError = 1;
}
} else {
$iError = 1;
}
if ($iError != 0)
{
$sMissatge = 'ATENCIÓ HI HA HAGUT UN ERROR' . "\n\n";
$sMissatge .= 'controller/AbonamentsController function guardarClientAction' . "\n\n";
$sMissatge .= (isset($aResposta)?print_r($aResposta, true):'') . ' Error code:' . $iError . "\n\n";
$sMissatge .= print_r($aRequest->all(), true) . "\n\n";
$sMissatge .= 'Id comanda: ' . $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id');
$this->phpmailer->EnviarAction(array(
'sSubjecte' => "Solicitud de Registre Masella Error",
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => $this->getParameter('EMAIL_RESERVAS'),
'sCc' => $this->getParameter('EMAIL_ERRORES'),
'sMissatge' => $sMissatge,
));
$aParam = array( 'nom' => $aRequest->get('nom'),
'cognom1' => $aRequest->get('cognom1'),
'cognom2' => $aRequest->get('cognom2'),
'direccio' => $aRequest->get('direccio'),
'cp' => $aRequest->get('cp'),
'poblacio' => $aRequest->get('poblacio'),
'datanaixement' => $aRequest->get('datanaixement'),
'telefon' => $aRequest->get('telefon'),
'email' => $aRequest->get('email'),
'dni' => $aRequest->get('dni'),
'error' => true
);
$aParam['nom_empresa'] = $aRequest->get('nom_empresa');
$aParam['nif_empresa'] = $aRequest->get('nif_empresa');
$aParam['direccio_empresa'] = $aRequest->get('direccio_empresa');
$aParam['cp_empresa'] = $aRequest->get('cp_empresa');
$aParam['poblacio_empresa'] = $aRequest->get('poblacio_empresa');
$aParam['factura'] = $aRequest->get('factura');
if ($aRequest->has('backend'))
{
//$aParam['forma_pagament'] = $aRequest->get('forma_pagament');
//$aParam['observacions_pagament'] = $aRequest->get('observacions_pagament');
//$aParam['pagament_targeta'] = $aRequest->get('pagament_targeta');
//$aParam['pagament_efectiu'] = $aRequest->get('pagament_efectiu');
//$aParam['codi_descompte'] = $aRequest->get('codi_descompte');
//$aParam['descompte'] = $aRequest->get('descompte');
$aParam['observacions_internas'] = $aRequest->get('observacions_internas');
//$aParam['firma_codi'] = $aRequest->get('firma_codi');
$aParam['backend'] = 1;
}
if ($aRequest->has('backend')) {
$sUrl = 'backend_comandes_comprovar_dades';
} else {
$sUrl = 'comandes_comprovar_dades';
}
$this->session->getFlashBag()->add('error', $this->translator->trans($aMissatgeError[$iError]));
}
return $this->redirect($this->generateUrl($sUrl, $aParam));
}
public function viamailing($aDades)
{
$sURL = $this->getParameter('URL_NEWSLETTER');
$sXML = "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<command>
<data>
<nombre>" . utf8_encode($aDades['nom']) . "</nombre>
<apellidos>" . utf8_encode($aDades['cognoms']) . "</apellidos>
<email>" . utf8_encode($aDades['email']) . "</email>
<cp></cp>
<direccion>" . utf8_encode($aDades['adreca']) . "</direccion>
<poblacion>" . utf8_encode($aDades['poblacio']) . "</poblacion>
<provincia></provincia>
<telefono1></telefono1>
<telefono2></telefono2>
<fax></fax>
<pais></pais>
<observaciones>IP: " . $this->objUtil->getIpConsumer() . "</observaciones>
<empresa></empresa>
<actualizar>s</actualizar>
<activo>1</activo>
</data>
";
$sXML .= "<login>";
$sXML .= "<email_administrador>" . $this->getParameter('EMAIL_VIAMAILING') . "</email_administrador>
<password>" . $this->getParameter('CLAVE_VIAMAILING') . "</password>";
$sXML .= "</login></command>";
$sResposta = $this->llamada($sXML, $sURL);
// Enviem de les dades del contacte
$sMissatge = "SOLICITUD DE REGISTRE\n\n";
$sMissatge .= "Nom: " . $aDades['nom'] . "\n" ;
$sMissatge .= "Cognoms: " . $aDades['cognoms'] . "\n" ;
$sMissatge .= "Adreça: " . $aDades['adreca'] . "\n" ;
$sMissatge .= "Població: " . $aDades['poblacio'] . "\n" ;
$sMissatge .= "E-mail: " . $aDades['email'] . "\n" ;
$sMissatge .= "Data d'aceptació de condicions: " . date('d-m-Y H:i:s') . "\n" ;
$sMissatge .= "Ip: " . $this->objUtil->getIpConsumer() . "\n" ;
$p = xml_parser_create();
xml_parse_into_struct($p, $sResposta, $aVals, $aIndex);
if ($aVals[2]['value'] != 0)
{
$sMissatge .= '\n\nATENCIÓ HI HA HAGUT UN ERROR ' . $aVals[2]['value'] . ', si us plau contacti amb entorno digital';
$sMissatge2 = print_r($sResposta, true);
$this->phpmailer->EnviarAction(array(
'sSubjecte' => "Solicitud de Registre Masella(viamailig",
'sFrom' => $this->getParameter('EMAIL_NEWSLETTER'),
'sTo' => $this->getParameter('EMAIL_ERRORES'),
//'sCc' => $this->getParameter('EMAIL_ERRORES'),
'sMissatge' => $sMissatge . $sMissatge2,
));
}
$this->phpmailer->EnviarAction(array(
'sSubjecte' => "Solicitud de Registre",
'sFrom' => $this->getParameter('EMAIL_NEWSLETTER'),
'sTo' => $this->getParameter('EMAIL_NEWSLETTER'),
//'sCc' => $this->getParameter('EMAIL_ERRORES'),
'sMissatge' => $sMissatge,
));
return $sMissatge;
}
function llamada($sSend, $sURL, $iTimeOut=30)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $sURL);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, $iTimeOut);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type: text/xml; charset=UTF-8"));
curl_setopt($ch, CURLOPT_POSTFIELDS, $sSend);
$server_response = curl_exec($ch);
if (is_null($server_response))
{
$server_response = "Error en la comunicación con Entorno. Intentelo de nuevo más tarde.";
}
curl_close ($ch);
return ($server_response);
}
public function enviarTpvAction(Request $peticion)
{
// TPV sha1
$aTpv = array();
$aTpv['url'] = $this->getParameter('TPV_DIRECCION_PAGO');
$aTpv['Ds_Merchant_Amount'] = number_format($this->_total_cistella() * 100,0,'','');
///////////////////////
// Recuperem la comanda
///////////////////////
$enComandes = $this->em->getRepository(Comandes::class)->find($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
$aTpv['Ds_Merchant_Order'] = $enComandes->getLocalitzador();
$aTpv['Ds_Merchant_MerchantCode'] = $this->getParameter('TPV_CODIGO_COMERCIO');
$aTpv['Ds_Merchant_Currency'] = $this->getParameter('TPV_CURRENCY');
$aTpv['Ds_Merchant_TransactionType'] = $this->getParameter('TPV_TIPO_OPERACION');
$aTpv['Ds_Merchant_MerchantURL'] = $this->getParameter('TPV_NOTIFICACION');
$aTpv['Ds_Merchant_Terminal'] = $this->getParameter('TPV_TERMINAL');
$aTpv['Ds_Merchant_UrlOK'] = $this->getParameter('TPV_OK');
$aTpv['Ds_Merchant_UrlKO'] = $this->getParameter('TPV_KO');
$message = $aTpv['Ds_Merchant_Amount'] . $aTpv['Ds_Merchant_Order'] . $this->getParameter('TPV_CODIGO_COMERCIO') . $this->getParameter('TPV_CURRENCY') . $this->getParameter('TPV_TIPO_OPERACION') . $this->getParameter('TPV_NOTIFICACION') . $this->getParameter('TPV_CLAVE');
$aTpv['Ds_Merchant_MerchantSignature'] = (sha1($message));
$aTpv['Ds_Merchant_MerchantName'] = $this->getParameter('TPV_NOMBRE_COMERCIO');
$aTpv['Ds_Merchant_ProductDescription'] = $this->getParameter('TPV_NOMBRE_PRODUCTO');
$aTpv['Ds_Merchant_Titular'] = $enComandes->getConsumers();
$aTpv['TPV_CLAVE_SHA256'] = $this->getParameter('TPV_CLAVE_SHA256');
//////////////////////////////////////
// Dades de proves
// https://sis-t.redsys.es:25443/sis/realizarPago
//////////////////////////////////////
if ($_SERVER['SERVER_NAME'] == 'beta.masella.com'
|| $_SERVER['SERVER_NAME'] == 'masella015.developer.entorno.es'
|| $_SERVER['SERVER_NAME'] == 'dev23.masella.com'
|| $_SERVER['SERVER_NAME'] == 'sf6.masella.com'
|| $_SERVER['SERVER_NAME'] == 'new.masella.com'
)
{
$aTpv['url'] = 'https://sis-t.redsys.es:25443/sis/realizarPago';
$aTpv['Ds_Merchant_MerchantURL'] = 'https://' . $_SERVER['SERVER_NAME'] . '/notificacion';
$aTpv['Ds_Merchant_UrlOK'] = 'https://' . $_SERVER['SERVER_NAME'] . '/retornOk';
$aTpv['Ds_Merchant_UrlKO'] = 'https://' . $_SERVER['SERVER_NAME'] . '/retornKo';
$aTpv['Ds_Merchant_MerchantCode'] = "322005760";
$aTpv['Ds_Merchant_Terminal'] = "1";
$aTpv['Ds_Merchant_Currency'] = "978";
$aTpv['TPV_CLAVE_SHA256'] = "sq7HjrUOBfKmC576ILgskD5srU870gJ7";
}
switch ($peticion->attributes->get('_locale'))
{
case 'es': $aTpv['Ds_Merchant_ConsumerLanguage'] = '001'; break;
case 'en': $aTpv['Ds_Merchant_ConsumerLanguage'] = '002'; break;
case 'ca': $aTpv['Ds_Merchant_ConsumerLanguage'] = '003'; break;
case 'fr': $aTpv['Ds_Merchant_ConsumerLanguage'] = '004'; break;
case 'pt': $aTpv['Ds_Merchant_ConsumerLanguage'] = '009'; break;
default: $aTpv['Ds_Merchant_ConsumerLanguage'] = '001';
}
// TPV sha256
// Se crea Objeto
$miObj = new RedsysAPI;
// Se Rellenan los campos
$miObj->setParameter("DS_MERCHANT_AMOUNT", $aTpv['Ds_Merchant_Amount']);
$miObj->setParameter("DS_MERCHANT_ORDER", $aTpv['Ds_Merchant_Order']);
$miObj->setParameter("DS_MERCHANT_MERCHANTCODE", $aTpv['Ds_Merchant_MerchantCode']);
$miObj->setParameter("DS_MERCHANT_CURRENCY", $aTpv['Ds_Merchant_Currency']);
$miObj->setParameter("DS_MERCHANT_TRANSACTIONTYPE", $aTpv['Ds_Merchant_TransactionType']);
$miObj->setParameter("DS_MERCHANT_TERMINAL", $aTpv['Ds_Merchant_Terminal']);
$miObj->setParameter("DS_MERCHANT_MERCHANTURL", $aTpv['Ds_Merchant_MerchantURL']);
$miObj->setParameter("DS_MERCHANT_URLOK", $aTpv['Ds_Merchant_UrlOK']);
$miObj->setParameter("DS_MERCHANT_URLKO", $aTpv['Ds_Merchant_UrlKO']);
$miObj->setParameter("DS_MERCHANT_CONSUMERLANGUAGE", $aTpv['Ds_Merchant_ConsumerLanguage']);
//$miObj->setParameter("DS_MERCHANT_PAYMETHODS", 'T');
$aTpvSHA255 = array();
//Datos de configuración
$aTpvSHA255['Ds_SignatureVersion'] = "HMAC_SHA256_V1";
$kc = $aTpv['TPV_CLAVE_SHA256'];//Clave recuperada de CANALES
// Se generan los parámetros de la petición
$request = "";
$aTpvSHA255['Ds_MerchantParameters'] = $miObj->createMerchantParameters();
$aTpvSHA255['Ds_Signature'] = $miObj->createMerchantSignature($kc);
//3DS2
/*
$aTpvSHA255_3DS2 = new \stdClass();
$aTpvSHA255_3DS2->DS_MERCHANT_MERCHANTCODE = $aTpv['Ds_Merchant_MerchantCode'];
$aTpvSHA255_3DS2->DS_MERCHANT_TERMINAL = $aTpv['Ds_Merchant_Terminal'];
$aTpvSHA255_3DS2->DS_MERCHANT_TRANSACTIONTYPE = $aTpv['Ds_Merchant_TransactionType'];
$aTpvSHA255_3DS2->DS_MERCHANT_AMOUNT = $aTpv['Ds_Merchant_Amount'];
$aTpvSHA255_3DS2->DS_MERCHANT_CURRENCY = $aTpv['Ds_Merchant_Currency'];
$aTpvSHA255_3DS2->DS_MERCHANT_ORDER = $aTpv['Ds_Merchant_Order'];
$aTpvSHA255_3DS2->DS_MERCHANT_MERCHANTURL = $aTpv['Ds_Merchant_MerchantURL'];
$aTpvSHA255_3DS2->DS_MERCHANT_URLOK = $aTpv['Ds_Merchant_UrlOK'];
$aTpvSHA255_3DS2->DS_MERCHANT_URLKO = $aTpv['Ds_Merchant_UrlKO'];
$aTpvSHA255_3DS2->DS_MERCHANT_CONSUMERLANGUAGE = $aTpv['Ds_Merchant_ConsumerLanguage'];
$datos_3DSecure_v2 = new \stdClass();
$datos_3DSecure_v2->cardholderName = trim($enComandes->getClients()->getNom() . ' ' . $enComandes->getClients()->getCognom1() . ' ' . $enComandes->getClients()->getCognom2());
$datos_3DSecure_v2->Email = $enComandes->getClients()->getEmail();
$aTpvSHA255_3DS2->DS_MERCHANT_EMV3DS = $datos_3DSecure_v2;
$json_datos_peticion = json_encode($aTpvSHA255_3DS2);
// Codificación en Base64 del JSON con los datos de la petición.
$json_peticion_codificado = base64_encode($json_datos_peticion);
$clave_decodificada = base64_decode($this->getParameter('TPV_CLAVE_SHA256'));
if (phpversion()< '7.0')
{
// Se establece un IV por defecto
$bytes = array(0,0,0,0,0,0,0,0);
$iv = implode(array_map("chr", $bytes));
// Se cifra
$clave_cifrado = mcrypt_encrypt(MCRYPT_3DES, $clave_decodificada, $aTpv['Ds_Merchant_Order'], MCRYPT_MODE_CBC, $iv);
} else {
// Se diversifica la clave con el Número de Pedido y se genera la clave de cifrado.
$l = ceil(strlen($aTpv['Ds_Merchant_Order']) / 8) * 8;
// Se cifra
$clave_cifrado = substr(openssl_encrypt($aTpv['Ds_Merchant_Order'] . str_repeat("\0", $l - strlen($aTpv['Ds_Merchant_Order'])), 'des-ede3-cbc', $clave_decodificada, OPENSSL_RAW_DATA, "\0\0\0\0\0\0\0\0"), 0, $l);
}
// MAC256 del JSON codificado y la clave de cifrado generada.
$firma = hash_hmac('sha256', $json_peticion_codificado, $clave_cifrado, true);
$firma_codificada = base64_encode($firma);
$aTpv_3DS2 = array();
$aTpv_3DS2['Ds_SignatureVersion'] = "HMAC_SHA256_V1";
$aTpv_3DS2['Ds_MerchantParameters'] = $json_peticion_codificado;
$aTpv_3DS2['Ds_Signature'] = $firma_codificada;
*/
/*
echo 'array<br>';
echo '<pre>';
print_r($aTpvSHA255_3DS2);
echo '</pre>';
echo '<br>json_encode<br>';
echo $json_datos_peticion;
echo '<br>base64_encode<br>';
echo $json_peticion_codificado;
echo '<br>clay SHA256<br>';
echo $this->getParameter('TPV_CLAVE_SHA256');
echo '<br>base64_decode tpv clay SHA256<br>';
echo $clave_decodificada;
echo '<br>clau xifrada (versió php ' . phpversion() . ')<br>';
echo $clave_cifrado;
echo '<br>firma<br>';
echo $firma;
echo '<br>Dates enviades per post a https://sis-t.redsys.es:25443/sis/realizarPago<br>';
echo '<pre>';
print_r($aTpv_3DS2);
echo '</pre>';
*/
$this->requestStack->getCurrentRequest()->getSession()->remove('sessCol_id');
//$sSHA255 = false;
$sSHA255 = true;
$b3DS2 = false;
/*
if ($_SERVER['REMOTE_ADDR'] == '195.77.190.2'
|| $_SERVER['REMOTE_ADDR'] != '194.36.123.130'
|| $_SERVER['REMOTE_ADDR'] == '192.168.120.104' )
{
$aTpv['url'] = 'https://sis-t.redsys.es:25443/sis/realizarPago';
$b3DS2 = true;
}
*/
return $this->render('tpv.html.twig', array(
'aTpv' => $aTpv,
'aTpvSHA255' => $aTpvSHA255,
'sSHA255' => $sSHA255,
'b3DS2' => $b3DS2,
//'aTpv_3DS2' => $aTpv_3DS2
));
}
public function notificacionAction(Request $peticion)
{
//////////////////////////////////////
// Dades de proves
// https://sis-t.redsys.es:25443/sis/realizarPago
//////////////////////////////////////
$aTpv['TPV_CLAVE_SHA256'] = $this->getParameter('TPV_CLAVE_SHA256');
if ($_SERVER['SERVER_NAME'] == 'beta.masella.com'
|| $_SERVER['SERVER_NAME'] == 'masella015.developer.entorno.es'
|| $_SERVER['SERVER_NAME'] == 'dev23.masella.com'
|| $_SERVER['SERVER_NAME'] == 'sf6.masella.com'
)
{
$aTpv['TPV_CLAVE_SHA256'] = "sq7HjrUOBfKmC576ILgskD5srU870gJ7";
}
$aRequest = $peticion->request;
$sMissatge = 'Dades: ' . print_r($aRequest->all(), true);
$this->phpmailer->EnviarAction(array(
'sSubjecte' => "Masella Dades tpv notificacion",
'sFrom' => $this->getParameter('EMAIL_NEWSLETTER'),
'sTo' => 'jramon@entorno.es',
//'sCc' => $this->getParameter('EMAIL_ERRORES'),
'sMissatge' => $sMissatge . ' ' . $_SERVER['SERVER_NAME'],
));
//die ('notificació');
// mail('jramon@entorno.es', 'Masella Dades tpv notificacion', 'Dades: ' . print_r($aRequest->all(), true));
$bFirmaCorrecta = false;
if ($aRequest->get("Ds_MerchantParameters"))
{
//SHA256
$miObj = new RedsysAPI;
$version = $aRequest->get("Ds_SignatureVersion");
$datos = $aRequest->get("Ds_MerchantParameters");
$signatureRecibida = $aRequest->get("Ds_Signature");
$decodec = $miObj->decodeMerchantParameters($datos);
$kc = $aTpv['TPV_CLAVE_SHA256']; //Clave recuperada de CANALES
$firma = $miObj->createMerchantSignatureNotif($kc,$datos);
$aRequest->set("Ds_Response", $miObj->getParameter('Ds_Response'));
$aRequest->set("Ds_Order", $miObj->getParameter('Ds_Order'));
$aRequest->set("Ds_AuthorisationCode", $miObj->getParameter('Ds_AuthorisationCode'));
if ($firma === $signatureRecibida) $bFirmaCorrecta = true;
} else {
$message = $aRequest->get("Ds_Amount") . $aRequest->get("Ds_Order") . $aRequest->get("Ds_MerchantCode") . $aRequest->get("Ds_Currency") . $aRequest->get("Ds_Response") . $this->getParameter('TPV_CLAVE');
$signature = sha1($message);
if (trim(strtoupper($aRequest->get("Ds_Signature"))) == trim(strtoupper($signature))) $bFirmaCorrecta = true;
}
$respuesta = intval($aRequest->get("Ds_Response"));
$pedido = $aRequest->get("Ds_Order");
/*** Dades per fer proves */
$blText = false;
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
if ($_SERVER['HTTP_X_FORWARDED_FOR'] == '195.77.190.2'
|| $_SERVER['HTTP_X_FORWARDED_FOR'] == '192.168.120.104' )
{
echo 'test<br>';
$blText = true;
$respuesta = 0;
$pedido = "ED220739635";
}
} else {
if ($_SERVER['SERVER_NAME'] == 'masella015.developer.entorno.es'
// || $_SERVER['SERVER_NAME'] == 'sf6.masella.com'
)
{
echo 'test<br>';
$blText = true;
$respuesta = 0;
$pedido = "ED220739635";
}
}
if ($bFirmaCorrecta || $blText)
{
$pagoOK = 0;
if ($respuesta >= 0 && $respuesta <= 99)
{
$men = "- Transacción autorizada para pagos y preautorizaciones";
$men .= "\n- Cod.Autorización: " . $aRequest->get("Ds_AuthorisationCode");
$pagoOK = 1;
}
else if ($respuesta == 900)
{
$men = "- Transacción autorizada para devoluciones y confirmaciones";
$men .= "\n- Cod.Autorización: " . $aRequest->get("Ds_AuthorisationCode");
$pagoOK = 1;
}
else if ($respuesta == 101)
{
$men = "- Tarjeta caducada";
}
else if ($respuesta == 102)
{
$men = "- Tarjeta en excepción transitoria o bajo sospecha de fraude";
}
else if ($respuesta == 104)
{
$men = "- Operación no permitida para esa tarjeta o terminal";
}
else if ($respuesta == 116)
{
$men = "- Disponible insuficiente";
}
else if ($respuesta == 118)
{
$men = "- Tarjeta no registrada";
}
else if ($respuesta == 180)
{
$men = "- Tarjeta ajena al servicio";
}
else if ($respuesta == 184)
{
$men = "- Error en la autenticación del titular";
}
else if ($respuesta == 190)
{
$men = "- Denegación sin especificar Motivo";
}
else if ($respuesta == 191)
{
$men = "- Fecha de caducidad errónea";
}
else if ($respuesta == 202)
{
$men = "- Tarjeta en excepción transitoria o bajo sospecha de fraude con retirada de tarjeta";
}
else if ($respuesta == 912 || $respuesta == 9912)
{
$men = "- Emisor no disponible";
}
else {
$men = "- Transacción denegada [Cod. Respuesta: " . $respuesta . "]";
// Envio del email - Aviso notificacion Denegada
$Asunto = "NOTIFICACIÓN RESERVA MASELLA CANCELADA";
$text = "\n\nDs_Order = " . $pedido;
$text .= "\n\n- Transacción denegada [Cod. Respuesta: " . $respuesta . "]";
$De = $this->getParameter('EMAIL_RESERVAS');
//mail($this->getParameter('EMAIL_ERRORES'), $Asunto, $text, "FROM: ".$De);
}
$sObservacionesPedido = $men;
$enComandesAux = $this->em->getRepository(Comandes::class)->findBy(array('localitzador' => $pedido));
if (!$enComandesAux)
{
mail($this->getParameter('EMAIL_ERRORES'), 'Masella: error al obtener pedido', 'No se han obtenido los datos del pedido: ' . print_r($aRequest->all(), true));
die('Masella: error al obtener pedido');
}
$enComandes = $this->em->getRepository(Comandes::class)->find($enComandesAux[0]->getId());
//$enComandes->setObservacions($enClients);
//$this->em->persist($enComandes);
//$this->em->flush();
if ($pagoOK)
{
$bDocumentacioAdjunta = false;
$enComandesLinies = $this->em->getRepository(ComandesLinies::class)->findBy(array('comandes' => $enComandes->getId()));
if (!$enComandesLinies)
{
mail($this->getParameter('EMAIL_ERRORES'), 'Masella: no hay lineas', 'Los datos obtenidos en notificacion son: ' . print_r($aRequest->all(),true) . '--> Comandes ' . $enComandes->getId());
die('Masella: no hay lineas');
}
foreach ($enComandesLinies as $key => $val)
{
if ($val->getImatge() != '' || $val->getDocumento() != '')
{
$bDocumentacioAdjunta = true;
break;
}
}
// El pagament ha estat correcte i possemt l'estat de la comanda a pagat
$enComandes->setObservacions($sObservacionesPedido);
$enComandes->setEstat($this->getParameter('ESTAT_PAGAT'));
$this->em->persist($enComandes);
$this->em->flush();
////////////////////////////////////////////////////////
// Marcar el descompte de l'abonat com a utilitzat
////////////////////////////////////////////////////////
//$this->marcarDescompteUtilitzat($enComandes->getId());
////////////
// Greate QR
////////////
$sUrlDesti = realpath(dirname(__FILE__)) . '/../../public/uploads/comandes/' . $enComandes->getLocalitzador() . '.png';
QRcode::png($enComandes->getLocalitzador(),$sUrlDesti, QR_ECLEVEL_L, 4);
$sImageCode = 'https://' . $_SERVER['SERVER_NAME'] . '/uploads/comandes/' . $enComandes->getLocalitzador() . '.png';
// S'envia al mail de reservas
// if ((isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !$_SERVER['HTTP_X_FORWARDED_FOR'] == '195.77.190.2'
// && !$_SERVER['HTTP_X_FORWARDED_FOR'] == '192.168.120.104')
// && ($_SERVER['SERVER_NAME'] != 'masella015.developer.entorno.es'
// && $_SERVER['SERVER_NAME'] != 'beta.masella.com'))
// {
if ($_SERVER['SERVER_NAME'] == 'www.masella.com'
|| $_SERVER['SERVER_NAME'] == 'masella.com')
{
$this->phpmailer->EnviarAction(array(
'sSubjecte' => 'ABONAMENT DE TEMPORADA (copia)',
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => $this->getParameter('EMAIL_RESERVAS'),
//'sCo' => 'jramon@entorno.es',
'sMissatge' => $this->renderView('plantillaCorreu.html.twig', array(
'enComandes' => $enComandes,
'enComandesLinies' => $enComandesLinies,
'bDocumentacioAdjunta' => $bDocumentacioAdjunta,
'sImageCode' => $sImageCode
)),
));
} else {
echo $this->renderView('plantillaCorreu.html.twig', array(
'enComandes' => $enComandes,
'enComandesLinies' => $enComandesLinies,
'bDocumentacioAdjunta' => $bDocumentacioAdjunta,
'sImageCode' => $sImageCode
));
}
/////////////////////////////////////////////////////////
// S'envia al mail de client i una copia oculta a entorno
/////////////////////////////////////////////////////////
$this->phpmailer->EnviarAction(array(
'sSubjecte' => 'ABONAMENT DE TEMPORADA',
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => $enComandes->getConsumers()->getEmail(),
//'sCc' => $this->getParameter('EMAIL_ERRORES'),
//'sCo' => 'jramon@entorno.es',
'sMissatge' => $this->renderView('plantillaCorreu.html.twig', array(
'enComandes' => $enComandes,
'enComandesLinies' => $enComandesLinies,
'bDocumentacioAdjunta' => $bDocumentacioAdjunta,
'sImageCode' => $sImageCode
)),
));
if ($enComandes->getLlocVenda() == 'WebPromocio')
{
//Generem el pdf
$sName = $enComandes->getId() . '_Promocio.pdf';
$sUrlDesti = realpath(dirname(__FILE__)) . '/../../public/uploads/promocions/' . $sName;
$sUrl = 'https://' . $_SERVER['SERVER_NAME'] . '/promocio/fitxaPromocions/' . $enComandes->getId();
$blah = shell_exec("/usr/local/bin/wkhtmltopdf --margin-top 5 --margin-bottom 0 --margin-left 5 --margin-right 5 $sUrl " . $sUrlDesti);
$this->phpmailer->EnviarAction(array(
'sSubjecte' => 'ABONAMENT DE TEMPORADA PROMOCIÓ',
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => $enComandes->getEmailPromocio(),
'attach' => $sUrlDesti,
//'sCc' => $this->getParameter('EMAIL_ERRORES'),
//'sCo' => 'jramon@entorno.es',
'sMissatge' => $this->renderView('Promocio-email.html.twig', array(
'objComandes' => $enComandes,
'objComandesLinies' => $enComandesLinies,
)),
));
}
//mail ('jramon@entorno.es', 'ABONAMENT DE TEMPORADA', 'abonaments controller');
//mail ('jramon@entorno.es', 'ABONAMENT DE TEMPORADA', print_r($enComandes, true));
//mail ('jramon@entorno.es', 'ABONAMENT DE TEMPORADA', print_r($enComandesLinies,true));
//mail ('jramon@entorno.es', 'ABONAMENT DE TEMPORADA', print_r($bDocumentacioAdjunta,true));
/////////////////////////////////////////
// Enviar a Axess per insertar la comanda
/////////////////////////////////////////
$sUrl = 'https://' . $_SERVER['SERVER_NAME'] . '/webservicescomandes/wsComandes/' . $enComandes->getId();
$sRetornoAxess = file_get_contents($sUrl);
$aRetornoAxess = explode ('|', $sRetornoAxess);
if ($aRetornoAxess[0] != '0')
{
$sMissatge = 'Comanda ' . $enComandes->getLocalitzador() . '(' . $enComandes->getId() . ')'. '<br> Error : ' . print_r($aRetornoAxess,true);
$this->phpmailer->EnviarAction(array(
'sSubjecte' => 'ABONAMENT DE TEMPORADA: Error al enviar a Axess',
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => 'jramon@entorno.es',
//'sTo' => $this->getParameter('EMAIL_NEWSLETTER'),
//'sCc' => $this->params->get('EMAIL_ERRORES'),
'sMissatge' => $sMissatge,
));
}
} else {
//mail ('jramon@entorno.es', 'AbonamentsController', 'no guarda');
// El pagament no ha estat correcte i possem la comanda a estat anulat
$enComandes->setObservacions($sObservacionesPedido);
$enComandes->setEstat($this->getParameter('ESTAT_ANULAT'));
$this->em->persist($enComandes);
$this->em->flush();
}
}
return new Response('OK');
}
public function retornOkAction (Request $peticion)
{
//////////////////////////////////////
// Dades de proves
// https://sis-t.redsys.es:25443/sis/realizarPago
//////////////////////////////////////
$aTpv['TPV_CLAVE_SHA256'] = $this->getParameter('TPV_CLAVE_SHA256');
if ($_SERVER['SERVER_NAME'] == 'beta.masella.com'
|| $_SERVER['SERVER_NAME'] == 'masella015.developer.entorno.es'
|| $_SERVER['SERVER_NAME'] == 'dev23.masella.com'
|| $_SERVER['SERVER_NAME'] == 'sf6.masella.com'
|| $_SERVER['SERVER_NAME'] == 'new.masella.com'
)
{
$aTpv['TPV_CLAVE_SHA256'] = "sq7HjrUOBfKmC576ILgskD5srU870gJ7";
}
$aRequest = $peticion->query;
//mail('jramon@entorno.es', 'Masella Dades tpv retornOk', 'Dades: ' . print_r($aRequest->all(), true));
$bFirmaCorrecta = false;
if ($aRequest->get("Ds_MerchantParameters"))
{
//SHA256
$miObj = new RedsysAPI;
$version = $aRequest->get("Ds_SignatureVersion");
$datos = $aRequest->get("Ds_MerchantParameters");
$signatureRecibida = $aRequest->get("Ds_Signature");
$decodec = $miObj->decodeMerchantParameters($datos);
$kc = $aTpv['TPV_CLAVE_SHA256']; //Clave recuperada de CANALES
$firma = $miObj->createMerchantSignatureNotif($kc,$datos);
$aRequest->set("Ds_Response", $miObj->getParameter('Ds_Response'));
$aRequest->set("Ds_Order", $miObj->getParameter('Ds_Order'));
$aRequest->set("Ds_AuthorisationCode", $miObj->getParameter('Ds_AuthorisationCode'));
//mail('jramon@entorno.es','tpvok', $firma . "===" . $signatureRecibida);
if ($firma === $signatureRecibida) $bFirmaCorrecta = true;
} else {
$message = $aRequest->get("Ds_Amount") . $aRequest->get("Ds_Order") . $aRequest->get("Ds_MerchantCode") . $aRequest->get("Ds_Currency") . $aRequest->get("Ds_Response") . $this->getParameter('TPV_CLAVE');
$signature = sha1($message);
if (trim(strtoupper($aRequest->get("Ds_Signature"))) == trim(strtoupper($signature))) $bFirmaCorrecta = true;
}
$pedido = $aRequest->get("Ds_Order");
$blText = false;
if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)
&& ( $_SERVER['HTTP_X_FORWARDED_FOR'] == '195.77.190.2'
|| $_SERVER['HTTP_X_FORWARDED_FOR'] == '192.168.120.104') )
{
//$blText = true;
//$bFirmaCorrecta = true;
//$pedido = "101914375";
}
if (!$bFirmaCorrecta)
{
mail($this->getParameter('EMAIL_ERRORES'), 'Masella: error plana retornOk', 'La Signature no és correcte: ' . print_r($aRequest->all(), true));
die();
}
$enComandesAux = $this->em->getRepository(Comandes::class)->findBy(array('localitzador' => $pedido));
if (!$enComandesAux)
{
mail($this->getParameter('EMAIL_ERRORES'), 'Masella: error al obtener pedido', 'No se han obtenido los datos del pedido: ' . print_r($aRequest->all(), true));
die();
}
$enComandes = $this->em->getRepository(Comandes::class)->find($enComandesAux[0]->getId());
$enComandesLinies = $this->em->getRepository(ComandesLinies::class)->findBy(array('comandes' => $enComandes->getId()));
if (!$enComandesLinies)
{
mail($this->getParameter('EMAIL_ERRORES'), 'Masella: no hay lineas', 'Los datos obtenidos en notificacion son: ' . print_r($aRequest->all(),true) . '--> Comandes ' . $enComandes->getId());
die();
}
$bDocumentacioAdjunta = false;
foreach ($enComandesLinies as $key => $val)
{
if ($val->getImatge() != '' ||$val->getDocumento() != '')
{
$bDocumentacioAdjunta = true;
break;
}
}
return $this->render('retornOk.html.twig', array(
'enComandes' => $enComandes,
'enComandesLinies' => $enComandesLinies,
'bDocumentacioAdjunta' => $bDocumentacioAdjunta,
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors
));
}
public function retornKoAction (Request $peticion)
{
//////////////////////////////////////
// Dades de proves
// https://sis-t.redsys.es:25443/sis/realizarPago
//////////////////////////////////////
$aTpv['TPV_CLAVE_SHA256'] = $this->getParameter('TPV_CLAVE_SHA256');
if ($_SERVER['SERVER_NAME'] == 'beta.masella.com'
|| $_SERVER['SERVER_NAME'] == 'masella015.developer.entorno.es'
|| $_SERVER['SERVER_NAME'] == 'dev23.masella.com'
|| $_SERVER['SERVER_NAME'] == 'sf6.masella.com'
|| $_SERVER['SERVER_NAME'] == 'new.masella.com'
)
{
$aTpv['TPV_CLAVE_SHA256'] = "sq7HjrUOBfKmC576ILgskD5srU870gJ7";
}
$aRequest = $peticion->query;
//mail('jramon@entorno.es', 'Masella Dades tpv retornKo', 'Dades: ' . print_r($aRequest->all(), true));
$bFirmaCorrecta = false;
if ($aRequest->get("Ds_MerchantParameters"))
{
//SHA256
$miObj = new RedsysAPI;
$version = $aRequest->get("Ds_SignatureVersion");
$datos = $aRequest->get("Ds_MerchantParameters");
$signatureRecibida = $aRequest->get("Ds_Signature");
$decodec = $miObj->decodeMerchantParameters($datos);
$kc = $aTpv['TPV_CLAVE_SHA256']; //Clave recuperada de CANALES
$firma = $miObj->createMerchantSignatureNotif($kc,$datos);
$aRequest->set("Ds_Response", $miObj->getParameter('Ds_Response'));
$aRequest->set("Ds_Order", $miObj->getParameter('Ds_Order'));
$aRequest->set("Ds_AuthorisationCode", $miObj->getParameter('Ds_AuthorisationCode'));
if ($firma === $signatureRecibida) $bFirmaCorrecta = true;
} else {
$message = $aRequest->get("Ds_Amount") . $aRequest->get("Ds_Order") . $aRequest->get("Ds_MerchantCode") . $aRequest->get("Ds_Currency") . $aRequest->get("Ds_Response") . $this->getParameter('TPV_CLAVE');
$signature = sha1($message);
if (trim(strtoupper($aRequest->get("Ds_Signature"))) == trim(strtoupper($signature))) $bFirmaCorrecta = true;
}
$pedido = $aRequest->get("Ds_Order");
$blText = false;
/*
$pedido = "071510";
*/
if (!$bFirmaCorrecta)
{
mail($this->getParameter('EMAIL_ERRORES'), 'Masella: error plana retornKO', 'La Signature no és correcte: ' . print_r($aRequest->all(), true));
//die();
}
$enComandesAux = $this->em->getRepository(Comandes::class)->findBy(array('localitzador' => $pedido));
if (!$enComandesAux)
{
mail($this->getParameter('EMAIL_ERRORES'), 'Masella: error al obtener pedido', 'No se han obtenido los datos del pedido: ' . print_r($aRequest->all(), true));
die();
}
$enComandes = $this->em->getRepository(Comandes::class)->find($enComandesAux[0]->getId());
return $this->render('retornKo.html.twig', array(
'enComandes' => $enComandes,
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors));
}
public function transferenciaAction (Request $peticion)
{
$aRequest = $peticion->query;
////////////////////////////////////////////////////////
// Marcar el descompte de l'abonat com a utilitzat
////////////////////////////////////////////////////////
$this->marcarDescompteUtilitzat($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
$enComandes = $this->em->getRepository(Comandes::class)->find($this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id'));
$enComandesLinies = $this->em->getRepository(ComandesLinies::class)->findBy(array('comandes' => $this->requestStack->getCurrentRequest()->getSession()->get('sessCol_id')));
if (!$enComandesLinies)
{
mail($this->getParameter('EMAIL_ERRORES'), 'Masella: no hay lineas', 'Los datos obtenidos en notificacion son: ' . print_r($aRequest->all(),true) . '--> Comandes ' . $enComandes->getId());
die('Masella: no hay lineas');
}
$bDocumentacioAdjunta = false;
foreach ($enComandesLinies as $key => $val)
{
if ($val->getImatge() != ''
|| $val->getDocumento() != '')
{
$bDocumentacioAdjunta = true;
break;
}
}
////////////
// Greate QR
////////////
$sUrlDesti = realpath(dirname(__FILE__)) . '/../../public/uploads/comandes/' . $enComandes->getLocalitzador() . '.png';
QRcode::png($enComandes->getLocalitzador(),$sUrlDesti, QR_ECLEVEL_L, 4);
$sImageCode = 'https://' . $_SERVER['SERVER_NAME'] . '/uploads/comandes/' . $enComandes->getLocalitzador() . '.png';
// S'envia al mail de reservas
// if ((isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !$_SERVER['HTTP_X_FORWARDED_FOR'] == '195.77.190.2'
// && !$_SERVER['HTTP_X_FORWARDED_FOR'] == '192.168.120.104')
// && ($_SERVER['SERVER_NAME'] != 'masella015.developer.entorno.es'
// && $_SERVER['SERVER_NAME'] != 'beta.masella.com'
// && $_SERVER['SERVER_NAME'] != 'dev23.masella.com'
// && $_SERVER['SERVER_NAME'] != 'sf6.masella.com'
// && $_SERVER['SERVER_NAME'] != 'new.masella.com'))
// {
if ($_SERVER['SERVER_NAME'] == 'www.masella.com'
|| $_SERVER['SERVER_NAME'] == 'masella.com')
{
$this->phpmailer->EnviarAction(array(
'sSubjecte' => 'ABONAMENT DE TEMPORADA (copia)',
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => $this->getParameter('EMAIL_RESERVAS'),
//'sTo' => $this->getParameter('EMAIL_NEWSLETTER'),
//'sCc' => $this->params->get('EMAIL_ERRORES'),
'sMissatge' => $this->renderView('plantillaCorreu.html.twig', array(
'enComandes' => $enComandes,
'enComandesLinies' => $enComandesLinies,
'bDocumentacioAdjunta' => $bDocumentacioAdjunta,
'sImageCode' => $sImageCode,
'sTextAddicional' => $this->translator->trans("L'abonament no serà efectiu fins que s'hagi comprovat la transferència.")
)),
));
}
// else {
// echo $this->renderView('plantillaCorreu.html.twig', array( 'enComandes' => $enComandes,
// 'enComandesLinies' => $enComandesLinies,
// 'bDocumentacioAdjunta' => $bDocumentacioAdjunta,
// 'sImageCode' => $sImageCode,
// 'sTextAddicional' => $this->translator->trans("L'abonament no serà efectiu fins que s'hagi comprovat la transferència.")
// ));
// }
//////////////////////////////////////////////////
// S'envia al mail de client i una copia a entorno
/////////////////////////////////////////////////
$this->phpmailer->EnviarAction(array(
'sSubjecte' => 'ABONAMENT DE TEMPORADA',
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => $enComandes->getClients()->getEmail(),
//'sTo' => $this->getParameter('EMAIL_NEWSLETTER'),
//'sCo' => 'jramon@entorno.es',
'sMissatge' => $this->renderView('plantillaCorreu.html.twig', array(
'enComandes' => $enComandes,
'enComandesLinies' => $enComandesLinies,
'bDocumentacioAdjunta' => $bDocumentacioAdjunta,
'sImageCode' => $sImageCode,
'sTextAddicional' => $this->translator->trans("L'abonament no serà efectiu fins que s'hagi comprovat la transferència.")
)),
));
$this->requestStack->getCurrentRequest()->getSession()->remove('sessCol_id');
$this->session->getFlashBag()->add('info', $this->translator->trans("L'abonament no serà efectiu fins que s'hagi comprovat la transferència."));
return $this->temporadaAction($peticion);
die();
$aSort = array(
'ordre' => 'ASC'
);
$aParam = array(
'estacio' => 'MAS',
'familiar' => 0,
'suplement' => 0,
'actiu' => 1
);
$objAbonaments_mas = $this->em->getRepository(Abonaments::class)->findBy($aParam, $aSort);
$aParam = array(
'estacio' => 'ALP',
'familiar' => 0,
'suplement' => 0,
'actiu' => 1
);
$objAbonaments_alp = $this->em->getRepository(Abonaments::class)->findBy($aParam, $aSort);
return $this->render('abonaments_transferencia.html.twig', array(
'enSidebar' => $this->enSidebar[0],
'objAbonaments_mas' => $objAbonaments_mas,
'objAbonaments_alp' => $objAbonaments_alp,
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors
));
}
////////////////////////////////////////////////////////////////////////////
// Marca el desconta com a utilitzat d'aquell abonats que ja l'han utilitzat
// per no tornar-lo a utilitzar
////////////////////////////////////////////////////////////////////////////
/*
public function marcarDescompteUtilitzat($IdComanda)
{
$enComandesLinies = $this->em->getRepository(ComandesLinies::class)->findBy(array('comandes' => $IdComanda));
foreach ($enComandesLinies as $val)
{
if ($val->getTipusDescompte() == 'C')
{
////////////////////////////////
// marcar el descompre utilitzat
////////////////////////////////
$enAbonats = $this->em->getRepository(Abonats::class)->find($val->getAbonats()->getId());
if ($enAbonats)
{
$enAbonats->setDescompteUtilitzat(1);
$this->em->persist($enAbonats);
$this->em->flush();
//////////////////////////////////////////////
// També marquem tots el clons d'aquest abonat
//////////////////////////////////////////////
$aParam = array('nom' => $enAbonats->getNom(), 'cognom1' => $enAbonats->getCognom1(), 'cognom2' => $enAbonats->getCognom2());
$enAbonatsClons = $this->em->getRepository(Abonats::class)->findBy($aParam);
if ($enAbonatsClons)
{
//dump ($enAbonatsClons);
foreach ($enAbonatsClons as $key => $val)
{
echo ($val->getId());
$enAbonats2 = $this->em->getRepository(Abonats::class)->find($val->getId());
if ($enAbonats2)
{
$enAbonats2->setDescompteUtilitzat(1);
$this->em->persist($enAbonats2);
$this->em->flush();
}
}
}
}
}
}
//die('stop marcarDescompteUtilitzat');
}
*/
public function transferenciaEnviarAction (Request $peticion)
{
die();
$aRequest = $peticion->request;
$aSort = array(
'ordre' => 'ASC'
);
$aParam = array(
'estacio' => 'MAS',
'familiar' => 0,
'suplement' => 0,
'actiu' => 1);
$objAbonaments_mas = $this->em->getRepository(Abonaments::class)->findBy($aParam, $aSort);
$aParam = array(
'estacio' => 'ALP',
'familiar' => 0,
'suplement' => 0,
'actiu' => 1);
$objAbonaments_alp = $this->em->getRepository(Abonaments::class)->findBy($aParam, $aSort);
if ($aRequest->get("nom") != '')
{
$this->phpmailer->EnviarAction(array(
'sSubjecte' => 'Abonament per transferencia',
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => $this->getParameter('EMAIL_RESERVAS'),
//'sTo' => $this->getParameter('EMAIL_NEWSLETTER'),
//'sCo' => "jramon@entorno.es",
'sMissatge' => $this->renderView('plantilla_transferencia_abono.html.twig', array(
'aRequest' => $aRequest,
'objAbonaments_mas' => $objAbonaments_mas,
'objAbonaments_alp' => $objAbonaments_alp
)),
));
mail ('jramon@entorno.es', 'Abonament per transferencia(no autenticat)', 'Abonament per transferencia controller');
mail ('jramon@entorno.es', 'Abonament per transferencia(no autenticat)', print_r(array(
'aRequest' => $aRequest,
'objAbonaments_mas' => $objAbonaments_mas,
'objAbonaments_alp' => $objAbonaments_alp
),true));
//whether ip is from share internet
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip_address = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
//whether ip is from proxy
$ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
//whether ip is from remote address
$ip_address = $_SERVER['REMOTE_ADDR'];
}
$enRgpd = new Rgpd();
$enRgpd->setTipus('Transferencia');
if ($aRequest->get('acepto')) $enRgpd->setRgpd(1);
$dateTime = new \DateTime();
$enRgpd->setData($dateTime->setTimestamp(strtotime(date('d-m-Y H:i:s'))));
$enRgpd->setIp($ip_address);
$enRgpd->setEmail($aRequest->get('mail'));
$enRgpd->setClients(null);
$this->em->persist($enRgpd);
$this->em->flush();
$this->session->getFlashBag()->add('info', $this->translator->trans("Les dades s'han enviat correctament"));
} else {
$this->session->getFlashBag()->add('error', $this->translator->trans("Hi ha hagut un error en el formulari"));
}
return $this->temporadaAction($peticion);
}
public function fitxaAction(Request $peticion)
{
$aRequest2 = $peticion->attributes;
$aRequest = $peticion->query;
$id_comanda = $this->objUtil->decrypt($aRequest2->get('id_comanda'), 'enC3419');
//////////////////////////////////////////////////////////
// Recuperem les línies de la comanda que no són suplement
//////////////////////////////////////////////////////////
$aParam = array(
'comandes' => $id_comanda,
'suplement' => 0
);
if ($this->session->get('club_esqui') == 1)
{
$aParam['usuari'] = $this->getUser()->getId();
}
$objComandesLinies = $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
///////////////////////////////////////////////////////
// Recuperem les línies de la comanda que són suplement
///////////////////////////////////////////////////////
$aParam = array(
'comandes' => $id_comanda,
'suplement' => 1
);
$objComandesLiniesSuplement = $this->em->getRepository(ComandesLinies::class)->findBy($aParam);
$aSuplements = array();
foreach ($objComandesLiniesSuplement as $key => $val)
{
$aSuplements[] = $val->getRelacionatComandesLinies()->getId() . '-' . $val->getId();
}
$objGeneral = $this->em->getRepository(General::class)->findBy(array('id' => 1));
$objComandes = $this->em->getRepository(Comandes::class)->findBy(array('id' => $id_comanda));
$sImageCode = '';
if ($objComandes)
{
////////////
// Greate QR
////////////
$sUrlDesti = realpath(dirname(__FILE__)) . '/../../public/uploads/comandes/' . $objComandes[0]->getLocalitzador() . '.png';
QRcode::png($objComandes[0]->getLocalitzador(),$sUrlDesti, QR_ECLEVEL_L, 4);
$sImageCode = 'https://' . $_SERVER['SERVER_NAME'] . '/uploads/comandes/' . $objComandes[0]->getLocalitzador() . '.png';
}
$this->requestStack->getCurrentRequest()->getSession()->set('sessCol_id', $id_comanda);
$total_cistella = $this->_total_cistella();
///////////////////////////////////////////
// Si hi ha error a l'inserció del consumer
///////////////////////////////////////////
$blErrorInsertConsumer = false;
if ($aRequest->get('error') == 1) $blErrorInsertConsumer = true;
$aPost = $aRequest->all();
////////////////////////
// Recull dades generals
////////////////////////
$enGeneral = $this->em->getRepository(General::class)->findAll();
return $this->render('pdfComanda.html.twig', array(
'objComandesLinies' => $objComandesLinies,
'objComandesLiniesSuplement' => $objComandesLiniesSuplement,
'fiOferta' => $objGeneral[0]->getDataFiOferta(),
'aSuplements' => $aSuplements,
'total_cistella' => $total_cistella,
'blErrorInsertConsumer' => $blErrorInsertConsumer,
'aPost' => $aPost,
'enGeneral' => $enGeneral[0],
'objComandes' => $objComandes[0],
'objConsumers' => $objComandes[0]->getConsumers(),
'sImageCode' => $sImageCode
));
}
}