<?php
namespace App\Controller;
use App\Entity\General;
use App\Entity\Sidebar;
use App\Entity\Sponsors;
use App\Entity\Usuari;
use App\Entity\Consumers;
use App\Util\changeSize;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use App\Controller\ProcessosController;
use App\Util\Util;
use Symfony\Component\Translation\LocaleSwitcher;
use Symfony\Contracts\Translation\TranslatorInterface;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
class ConsumersController extends AbstractController
{
protected $enSidebar;
protected $enGeneral;
protected $enSponsors;
public $sBase;
public $sUrlRecuperacioClau;
private $em;
private $objUtil;
private $session;
private $translator;
private $phpmailer;
private $sPathUploads;
public function __construct(EntityManagerInterface $em,Security $security,RequestStack $requestStack,TranslatorInterface $translator,private LocaleSwitcher $localeSwitcher)
{
$this->em = $em;
$this->objUtil = new \App\Util\Util($this->em);
$this->translator = $translator;
$this->phpmailer = new CorreuController();
$this->sPathUploads = dirname(__FILE__) . "/../../public/uploads/";
/*
* Insertem informació a log
*/
//$request = $this->request;
$this->objUtil->logAction($requestStack->getCurrentRequest(), $security->getUser());
$this->session = $requestStack->getSession();
switch ($_SERVER['SERVER_NAME']) {
case 'www.masella.com':
case 'beta.masella.com':
$this->sBase = '/var/www/vhosts/masella.com/httpdocs/';
$this->sUrlRecuperacioClau = 'https://masella.axess.shop/es/Account/NewPassword?rTkn={0}&authM=';
break;
case 'dev22.masella.com':
$this->sBase = '/var/www/vhosts/dev22.masella.com/httpdocs/';
$this->sUrlRecuperacioClau = 'https://masella.axess.shop/es/Account/NewPassword?rTkn={0}&authM=';
break;
case 'dev23.masella.com':
$this->sBase = '/var/www/vhosts/dev23.masella.com/httpdocs/';
$this->sUrlRecuperacioClau = 'https://masella.axess.shop/es/Account/NewPassword?rTkn={0}&authM=';
break;
case 'sf6.masella.com':
$this->sBase = '/var/www/vhosts/sf6.masella.com/httpdocs/';
$this->sUrlRecuperacioClau = 'https://masella.axess.shop/es/Account/NewPassword?rTkn={0}&authM=';
break;
case 'masella015.developer.entorno.es':
$this->sBase = '/home/jramon/projects/masella2015/';
$this->sUrlRecuperacioClau = 'https://demo-iberica.axess.shop/es/Account/NewPassword?rTkn={0}&authM=';
break;
}
$this->enSidebar = $this->em->getRepository(Sidebar::class)->findBy(
array( 'general' => 1)
);
$this->enGeneral = $this->em->getRepository(General::class)->findAll();
$this->enSponsors = $this->em->getRepository(Sponsors::class)->findBy(
array( 'visible' => 1),
array('ordre' => 'ASC')
);
}
public function consumerResizeFotoAction(Request $request)
{
$sMissatge = 'Imatge guarda correctament';
$sForder = 'consumers';
if ($request->get('folder'))
{
$sForder = $request->get('folder');
}
//$sBase = $this->sBase . 'public/uploads/'. $sForder .'/';
$sBase = $this->sPathUploads . $sForder . '/';
$path = $sBase . $request->get('fileName');
//chmod($path, 0777);
//$pathOld = $sBase . str_replace('.jpeg', '_old.jpeg', str_replace('.jpg', '_old.jpg', $request->get('fileName')));
//if (copy($path, $pathOld))
// {
$path_png = $sBase . str_replace(array('.jpg', '.jpeg' ), '.png', $request->get('fileName'));
file_put_contents($path_png, base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $request->get('image'))));
$image = imagecreatefrompng($path_png);
if (!imagejpeg($image, $path, 100))
{
$sMissatge = "Error al guardar la imatge 1";
}
imagedestroy($image);
unlink($path_png);
//} else {
// $sMissatge = "Error al guardar la imatge 2";
//}
return new Response($sMissatge);
}
public function logoutClientAction(Request $peticion)
{
////////////////////////////////////////////////////
// Eliminem les variables de secció d'altres compres
////////////////////////////////////////////////////
$this->session->remove('sessCol_id');
$this->session->remove('sessConsumer_id');
return $this->redirect($this->generateUrl('_home'));
}
public function area_privada_checkAction(Request $peticion)
{
$aRequest = $peticion->request;
$enConsumers = null;
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Creu una sessió sessConsumer_id per que si estem a mode debug al mostrar els missatges per pantalla crea capçaleres i les
/// sessions s'han de crear avanç de les capçaleres
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$this->session->set('sessConsumer_id',null);
if ($aRequest->has('email')
&& $aRequest->has('clau'))
{
$objWebServicesValidateAccount = new WebServicesValidateAccountController();
/////////////////////////////////////////////////////////////////////////////////////
/// Quan la cridem com una clase no te acces al getParameter, així li passem el valor
/////////////////////////////////////////////////////////////////////////////////////
$objWebServicesValidateAccount->setEnviroments($this->getParameter('kernel.environment'));
$objWebServicesValidateAccount->setObjContainer($this);
$objWebServicesValidateAccount->setObjGetMailer($this->phpmailer);
$objWebServicesValidateAccount->setEm($this->em);
$aElements = array(
'i_szUserName' => $aRequest->get('email'),
'i_szPassword' => $aRequest->get('clau'),
'i_szLoginToken' => '',
'i_nLoginTypeNr' => 1
);
$jsonReturn = $objWebServicesValidateAccount->validateAccount($aElements, $this->em);
$aReturnWebServicesValidateAccount = json_decode($jsonReturn->getContent(), true);
if ($aReturnWebServicesValidateAccount['error']['ConnexioConnectAxess']
&& $aReturnWebServicesValidateAccount['error']['ValidateAccount'])
{
$aParams = array(
'customer_id_num' => $aReturnWebServicesValidateAccount['aCustomerAccount']['NPERSPERSNO'],
'customer_id_pos' => $aReturnWebServicesValidateAccount['aCustomerAccount']['NPERSPOSNO'],
'customer_id_proj' => $aReturnWebServicesValidateAccount['aCustomerAccount']['NPERSPROJNO'],
'historic' => 0);
$enConsumers = $this->em->getRepository(Consumers::class)->findBy($aParams);
}
}
/*
$aParams = array('email' => $aRequest->get('email'),
'clau' => $aRequest->get('clau'),
'tipus' => 'Pagador');
$enConsumers = $this->em->getRepository(Consumers::class)->findBy($aParams);
*/
if (!$enConsumers)
{
$this->session->getFlashBag()->add('error', $this->translator->trans("El correu o/i la clau no són correctes."));
return $this->render('abonaments_temporada.html.twig', array(
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors));
} else {
$this->session->set('sessConsumer_id', $enConsumers[0]->getID());
return $this->area_privada_dadesAction($peticion);
}
}
public function area_privada_dadesAction(Request $peticion)
{
$aRequest = $peticion->request;
if ($this->session->get('sessConsumer_id'))
{
$enConsumers = $this->em->getRepository(Consumers::class)->find($this->session->get('sessConsumer_id'));
if (!$enConsumers)
{
$this->session->getFlashBag()->add('error', $this->translator->trans("El correu o/i la clau no són correctes."));
return $this->render('abonaments_temporada.html.twig', array(
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors
));
} else {
return $this->render('area_privada_dades.html.twig', array(
'enConsumers' => $enConsumers,
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors
));
}
} else {
$this->session->getFlashBag()->add('error', $this->translator->trans("El correu o/i la clau no són correctes."));
return $this->render('abonaments_temporada.html.twig', array(
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors
));
}
}
public function area_privada_update_ConsumerAction(Request $peticion)
{
$aRequest = $peticion->request;
if ($this->session->get('sessConsumer_id'))
{
$enConsumers = $this->em->getRepository(Consumers::class)->find($this->session->get('sessConsumer_id'));
if ($enConsumers)
{
$jsonResposta = $this->forward('App\Controller\WebServicesController::altaModificacioConsumersAxessAction', array(
'aDades' => $aRequest->all(),
'aNoValidacionsDe' => array('EmailClientExists'),
'aDadesUpdate' => array(
'iIdEntorno' => $this->session->get('sessConsumer_id'),
'ConsumerIdProj' => $enConsumers->getCustomerIdProj(),
'ConsumerIdPos' => $enConsumers->getCustomerIdPos(),
'ConsumerIdNum' => $enConsumers->getCustomerIdNum(),
)));
$aResposta = json_decode($jsonResposta->getContent(), true);
if ($aResposta['error']['AltaModificacioAxess'])
{
$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->setDni($aRequest->get('dni'));
if ($aRequest->get('clau') != '') $enConsumers->setClau($aRequest->get('clau'));
/*
$enConsumers->setNomEmpresa($aRequest->get('nomEmpresa'));
$enConsumers->setNifEmpresa($aRequest->get('nifEmpresa'));
$enConsumers->setDireccioEmpresa($aRequest->get('direccioEmpresa'));
$enConsumers->setCpEmpresa($aRequest->get('cpEmpresa'));
$enConsumers->setPoblacioEmpresa($aRequest->get('poblacioEmpresa'));
$enConsumers->setProvinciaEmpresa($aRequest->get('provinciaEmpresa'));
*/
$enConsumers->setOrigenEntrada('Modi Entor');
$this->em->persist($enConsumers);
$this->em->flush();
$this->session->getFlashBag()->add('info', $this->translator->trans("Les dades s'han actualitzat correctament"));
} else {
$this->session->getFlashBag()->add('error', $this->translator->trans("Les dades no s'han actualitzat. Poseu-vos en contacte amb nosaltres."));
}
} else {
$this->session->getFlashBag()->add('error', $this->translator->trans("Les dades no s'han actualitzat. Poseu-vos en contacte amb nosaltres."));
}
} else {
$this->session->getFlashBag()->add('error', $this->translator->trans("Les dades no s'han actualitzat. Poseu-vos en contacte amb nosaltres."));
}
return $this->area_privada_dadesAction($peticion);
}
/**
* Alta/modificació de client
*
* @param Request $peticion
* @return type
*/
public function altaModificacioClientAction(Request $peticion, $aElements)
{
$aRequest = $peticion->request;
if (key_exists('cli_id', $aElements))
{
$enConsumers = $this->em->getRepository(Consumers::class)->find($aElements['cli_id']);
} else {
//////////////////////////////////
// Si no existeix creem el client
//////////////////////////////////
$enConsumers = new Consumers();
}
$dateTime = new \DateTime();
if (key_exists('nom', $aElements)) $enConsumers->setNom($aElements['nom']);
if (key_exists('cognom1', $aElements)) $enConsumers->setCognom1($aElements['cognom1']);
if (key_exists('cognom2', $aElements)) $enConsumers->setCognom2($aElements['cognom2']);
if (key_exists('direccio', $aElements)) $enConsumers->setDireccio($aElements['direccio']);
if (key_exists('cp', $aElements)) $enConsumers->setCp($aElements['cp']);
if (key_exists('poblacio', $aElements)) $enConsumers->setPoblacio($aElements['poblacio']);
if (key_exists('datanaixement', $aElements)) $enConsumers->setDataNaixement($dateTime->setTimestamp(strtotime($aElements['datanaixement'])));
if (key_exists('telefon', $aElements)) $enConsumers->setTelefon($aElements['telefon']);
if (key_exists('email', $aElements)) $enConsumers->setEmail($aElements['email']);
if (key_exists('dni', $aElements)) $enConsumers->setDni($aElements['dni']);
if (key_exists('familia4i', $aElements)) $enConsumers->setFamilia4i($aElements['familia4i']);
//////////////////////////////////////////////
// si ja existeix el client no generem la clau
//////////////////////////////////////////////
if (!key_exists('cli_id', $aElements)) $enConsumers->setClau($this->objUtil->texto_aleatorio());
if (key_exists('nom_empresa', $aElements)) $enConsumers->setNomEmpresa($aElements['nom_empresa']);
if (key_exists('nif_empresa', $aElements)) $enConsumers->setNifEmpresa($aElements['nif_empresa']);
if (key_exists('direccio_empresa', $aElements)) $enConsumers->setDireccioEmpresa($aElements['direccio_empresa']);
if (key_exists('cp_empresa', $aElements)) $enConsumers->setCpEmpresa($aElements['cp_empresa']);
if (key_exists('poblacio_empresa', $aElements)) $enConsumers->setPoblacioEmpresa($aElements['poblacio_empresa']);
if (key_exists('origenEntrada', $aElements)) $enConsumers->setOrigenEntrada($aElements['origenEntrada']);
if (key_exists('usuariId', $aElements))
{
$enUsuari = $this->em->getRepository(Usuari::class)->find($aElements['usuariId']);
$enConsumers->setUsuari($enUsuari);
}
$this->em->persist($enConsumers);
$this->em->flush();
$id = $enConsumers->getId();
return new response($id);
}
public function area_privada_consumersAction(Request $peticion)
{
$aRequest = $peticion->request;
if ($this->session->get('sessConsumer_id'))
{
$enConsumers = $this->em->getRepository(Consumers::class)->find($this->session->get('sessConsumer_id'));
if (!$enConsumers)
{
$this->session->getFlashBag()->add('error', $this->translator->trans("El correu o/i la clau no són correctes."));
return $this->render('abonaments_temporada.html.twig', array());
}
$enConsumersHasConsumers = $this->em->getRepository(Consumers::class)->getConsumersOfConsumer($this->session->get('sessConsumer_id'));
return $this->render('area_privada_consumers.html.twig', array(
"enConsumers" => $enConsumers,
"enConsumersHasConsumers" => $enConsumersHasConsumers,
"enSidebar" => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors
));
} else {
$this->session->getFlashBag()->add('error', $this->translator->trans("El correu o/i la clau no són correctes."));
return $this->render('abonaments_temporada.html.twig', array(
"enSidebar" => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors'=> $this->enSponsors));
}
}
public function area_privada_comandesAction(Request $peticion)
{
$aRequest = $peticion->request;
if ($this->session->get('sessConsumer_id'))
{
$enConsumers = $this->em->getRepository(Consumers::class)->find($this->session->get('sessConsumer_id'));
if (!$enConsumers)
{
$this->session->getFlashBag()->add('error', $this->translator->trans("El correu o/i la clau no són correctes."));
return $this->render('abonaments_temporada.html.twig', array(
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors'=> $this->enSponsors));
}
$enComandes = $this->em->getRepository(Comandes::class)->findBy(
array(
'Consumers' => $enConsumers),
array(
'id'=>'DESC'));
$aComandes = array();
$iCon = 0;
foreach ($enComandes as $key => $val)
{
$enComandesLinies = $this->em->getRepository(ComandesLinies::class)->findBy(array('comandes' => $val->getId()));
foreach ($enComandesLinies as $key2 => $val2)
{
$aComandes[$iCon]['data'] = $val->getData();
$aComandes[$iCon]['localitzador'] = $val->getLocalitzador();
$aComandes[$iCon]['detall'] = $val2->getDetall();
$aComandes[$iCon]['suplement'] = $val2->getSuplement();
$aComandes[$iCon]['abonat'] = $val2->getCognom1() . ' ' . $val2->getCognom2() . ', ' . $val2->getNom();
$aComandes[$iCon]['total'] = $val2->getTotal();
$aComandes[$iCon]['descompte'] = $val2->getDescompte();
switch ($val->getEstat())
{
case "0":
$aComandes[$iCon]['estat'] = $this->translator->trans("Pendent");
break;
case "1":
$aComandes[$iCon]['estat'] = $this->translator->trans("Pagat");
break;
case "2":
$aComandes[$iCon]['estat'] = $this->translator->trans("Anulat");
break;
}
$iCon++;
}
}
return $this->render('area_privada_comandas.html.twig', array(
"enComandes" => $enComandes,
"enComandesLinies" => $enComandesLinies,
"aComandes" => $aComandes,
"enSidebar" => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors' => $this->enSponsors
));
} else {
$this->session->getFlashBag()->add('error', $this->translator->trans("El correu o/i la clau no són correctes."));
return $this->render('abonaments_temporada.html.twig', array(
"enSidebar"=> $this->enSidebar[0]
));
}
}
public function area_privada_recordarAction(Request $peticion)
{
$aAttributes = $peticion->attributes;
$aRequest = $peticion->request;
$sEmail = '';
if ($aRequest->has('email'))
{
$sEmail = $aRequest->get('email');
}
if ($aAttributes->has('email'))
{
$sEmail = $aAttributes->get('email');
}
if ($sEmail != '')
{
/*
$aParams = array( 'email' => $sEmail,
'historic' => 0);
$enConsumers = $this->em->getRepository(Consumers::class)->findBy($aParams);
if (!$enConsumers)
{
$this->session->getFlashBag()->add('error', $this->translator->trans("No existeix el mail indicat"));
} else {
$sMensaje = $this->translator->trans("RECORDATORI DE DADES D'ACCÉS") . "\n";
$sMensaje .= $this->translator->trans("Li recordem les seves dades d'accés :") . "\n\n";
$sMensaje .= $this->translator->trans("E.mail:") . $enConsumers[0]->getEmail() . "\n\n";
$sMensaje .= $this->translator->trans("Clau:") . $enConsumers[0]->getClau() . "\n\n";
$this->phpmailer->EnviarAction(array(
'sSubjecte' => $this->translator->trans("Recordar clau"),
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => $enConsumers[0]->getEmail(),
//'sTo' => $this->getParameter('EMAIL_NEWSLETTER'),
//'sCc' => $this->params->get('EMAIL_ERRORES'),
'sMissatge' => $sMensaje,
));
$this->session->getFlashBag()->add('info', $this->translator->trans("Se li ha enviat la seva clau al seu mail"));
}
*/
$aError['ConnexioConnectAxess'] = false;
$aError['LogoutConnexioConnectAxess'] = false;
$aError['ResetPassword'] = false;
$sMissatgeAxess = '';
$objWebServicesConnectAxess = new WebServicesAxessConnectController();
/////////////////////////////////////////////////////////////////////////////////////
/// Quan la cridem com una classe no te accés al getParameter, així li passem el valor
/////////////////////////////////////////////////////////////////////////////////////
$objWebServicesConnectAxess->setEnviroments($this->getParameter('kernel.environment'));
$objWebServicesConnectAxess->setObjContainer($this);
$objWebServicesConnectAxess->setObjGetMailer($this->phpmailer);
$jsonReturn = $objWebServicesConnectAxess->wsThirdPartyLogin();
$aReturn = json_decode($jsonReturn->getContent(), true);
if ($aReturn['error']['code'] == 0
&& $aReturn['valors']['NERRORNO'] == 0)
{
$NSESSIONID = $aReturn['valors']['NSESSIONID'];
$aError['ConnexioConnectAxess'] = true;
$sUrl = $this->sUrlRecuperacioClau . $sEmail;
$sMissatge = $this->translator->trans("Benvolgut/da,") . ':<br>';
$sMissatge .= $this->translator->trans("Per canviar la contrasenya de la teva àrea privada d’usuari de la web www.masella.com, que et dona accés a la compra d’abonaments, de classes de esquí, de forfets de dia i de promocions, clica l’enllaç i escriu la teva nova contrasenya.") . '<br>';
$sMissatge .= $this->translator->trans("Un cop restablerta la contrasenya torna a l’àrea privada d’usuari de www.masella.com per continuar.") . '<br>';
$sMissatge .= '<br>' . '<a href="' . $sUrl . '">' . $sUrl . '</a><br><br>';
$sMissatge .= $this->translator->trans("Bones esquiades.") . ':<br>';
$sMissatge .= $this->translator->trans("Estació d’Esquí de Masella") . ':<br>';
$sMissatge .= '<a href="https://www.masella.com">www.masella.com</a><br>';
$aElements = array( 'i_nSessionID' => $NSESSIONID,
'i_szUserName' => $sEmail,
'i_szEMail' => $sEmail,
'i_szEmailSubject' => $this->translator->trans("Recuperació de clau"),
'i_szEmailBody' => $sMissatge,
'i_szFirstName' => '',
'i_szLastName' => '',
'i_szBirthDate' => '',
);
$jsonReturn = $objWebServicesConnectAxess->wsResetPasswordAction($aElements);
$aReturnResetPassword = json_decode($jsonReturn->getContent(), true);
if ($aReturnResetPassword['error']['code'] == 0
&& $aReturnResetPassword['valors']['NERRORNO'] == 0)
{
$aError['ResetPassword'] = true;
$this->session->getFlashBag()->add('info', $this->translator->trans("Se li ha enviat al seu mail les instruccions per restablir la clau"));
} else {
if ($aReturnResetPassword['valors']['NERRORNO'] == -11)
{
$aError['ResetPassword'] = true;
$this->session->getFlashBag()->add('warning', $this->translator->trans("No existeix el mail indicat"));
} else {
$aError['ResetPassword'] = false;
$sMissatgeAxess = "Error resetPassword webservices" . "\n";
$sMissatgeAxess .= print_r($aReturn, true);
}
}
///////////////////////
/// Tanquem la connexió
///////////////////////
$jsonReturn = $objWebServicesConnectAxess->wsLogoutAction($NSESSIONID);
$aReturn = json_decode($jsonReturn->getContent(), true);
if ($aReturn['error']['code'] != 0
|| $aReturn['valors']['NERRORNO'] != 0)
{
$sMissatgeAxess = "Error logout webservices" . "\n";
$sMissatgeAxess .= print_r($aReturn,true);
$aError['LogoutConnexioConnectAxess'] = false;
} else {
$aError['LogoutConnexioConnectAxess'] = true;
}
} else {
$aError['ConnexioConnectAxess'] = false;
$sMissatgeAxess = "Error login webservices" . "\n";
$sMissatgeAxess .= print_r($aReturn,true);
}
if (!$aError['ConnexioConnectAxess']
|| !$aError['LogoutConnexioConnectAxess']
|| !$aError['ResetPassword'])
{
$this->phpmailer->EnviarAction(array(
'sSubjecte' => "Error area_privada_recordar webservices DCI4ConnectCRM",
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => $this->getParameter('EMAIL_ERRORES'),
//'sTo' => $this->getParameter('EMAIL_NEWSLETTER'),
//'sCc' => $this->params->get('EMAIL_ERRORES'),
'sMissatge' => $sMissatgeAxess,
));
$this->session->getFlashBag()->add('warning', $this->translator->trans("Error inesperat; torneu-ho a provar en uns minuts"));
}
}
return $this->render('area_privada_recordar.html.twig', array(
'enSidebar' => $this->enSidebar[0],
'enGeneral' => $this->enGeneral,
'enSponsors'=> $this->enSponsors
));
}
public function documentDeteleAction(Request $peticion)
{
$aRequest = $peticion->attributes;
$enConsumers = $this->em->getRepository(Consumers::class)->find($aRequest->get('id'));
//$path = $this->get('kernel')->getRootDir() . '/public/uploads/consumers/';
$path = $this->sPathUploads . 'consumers/';
$sFunctionName = 'get' . ucfirst($aRequest->get('tipo'));
$sRutaImatge = $path . $enConsumers->$sFunctionName();
if (file_exists($sRutaImatge))
{
unlink($sRutaImatge);
}
$sFunctionName = 'set' . ucfirst($aRequest->get('tipo'));
$enConsumers->$sFunctionName(null);
$this->em->persist($enConsumers);
$this->em->flush();
return $this->area_privada_consumersAction($peticion);
}
public function insertDocumentsAction(Request $peticion)
{
$aRequest = $peticion->request;
$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)
{
$enConsumers = $this->em->getRepository(Consumers::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))
{
$enConsumers->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)"));
}
}
if ($peticion->files->get('document_' . $val) != '')
{
$document = $peticion->files->get('document_' . $val);
if (in_array(finfo_file($finfo, $document), $aDocumentAllowed))
{
$enConsumers->setDocumentoAux($document);
} else {
$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($enConsumers);
$this->em->flush();
if ($peticion->files->get('foto_' . $val) != '' && $bFotoCorrecta)
{
$enConsumers = $this->em->getRepository(Consumers::class)->find($val);
////////////////////////////////////////////////////
// Actualitzem la foto a Axcess si te id de consumer
////////////////////////////////////////////////////
if ($enConsumers->getCustomerIdProj() != ''
&& $enConsumers->getCustomerIdPos() != ''
&& $enConsumers->getCustomerIdNum() != '')
{
$aElements['Foto'] = $enConsumers->getImatge();
$aElements['ConsumerIdProj'] = $enConsumers->getCustomerIdProj();
$aElements['ConsumerIdPos'] = $enConsumers->getCustomerIdPos();
$aElements['ConsumerIdNum'] = $enConsumers->getCustomerIdNum();
$jsonResposta = $this->forward('App\Controller\WebServicesController::createFotoAxessAction', array(
'aElements' => $aElements
));
$aResposta = json_decode($jsonResposta->getContent(), true);
if ($aResposta['error'] == 0)
{
$sMissatge = "L'abonat " . $enConsumers->getNom() . ' ' . $enConsumers->getCognom1() . ' ' . $enConsumers->getCognom2() . ' amb el codi ' . $enConsumers->getId() . ' ha modificat la foto.';
$this->phpmailer->EnviarAction(array(
'sSubjecte' => "Modificació de foto d'abonat en àrea de client",
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => $this->getParameter('EMAIL_ERRORES'),
//'sTo' => $this->getParameter('EMAIL_RESERVAS'),
'sCc' => $this->getParameter('EMAIL_ERRORES'),
'sMissatge' => $sMissatge,
));
} else {
$sMissatge = '\n\nATENCIÓ HI HA HAGUT UN ERROR. Modificació de foto en la àrea de Consumers part pùblicar';
$sMissatge .= print_r($aRequest, true) . '<br>' . print_r($aResposta, true);
$this->phpmailer->EnviarAction(array(
'sSubjecte' => "Modificació de client en àrea de client part pùblica",
'sFrom' => $this->getParameter('EMAIL_RESERVAS'),
'sTo' => $this->getParameter('EMAIL_ERRORES'),
'sMissatge' => $sMissatge,
));
}
}
}
}
}
finfo_close($finfo);
return $this->area_privada_consumersAction($peticion);
}
public function check_exist_dniAction(Request $peticion, $dni, $con_id = null)
{
$aRequest = $peticion->request;
$sQuery = "SELECT c.id as con_id "
. " FROM App:Consumers c"
. " WHERE c.dni = :dni";
$sQuery .= ' AND c.historic != 1';
if (!is_null($con_id))
{
$sQuery .= ' AND c.id != :con_id';
}
$query = $this->em->createQuery($sQuery);
$query->setParameter('dni', $dni);
if (!is_null($con_id))
{
$query->setParameter('con_id', $con_id);
}
$enConsumers = $query->getResult();
if (!$enConsumers)
{
$blRequest = 0;
} else {
$blRequest = 1;
}
return new response($blRequest);
}
public function check_exist_emailAction(Request $peticion, $email, $con_id = null)
{
$aRequest = $peticion->request;
$sQuery = "SELECT c.id as con_id "
. " FROM App:Consumers c"
. " WHERE c.email = :email";
$sQuery .= ' AND c.historic != :historic';
if (!is_null($con_id))
{
$sQuery .= ' AND c.id != :con_id';
}
$query = $this->em->createQuery($sQuery);
$query->setParameter('email', $email);
if (!is_null($con_id))
{
$query->setParameter('con_id', $con_id);
}
$query->setParameter('historic', 1);
$enConsumers = $query->getResult();
if (!$enConsumers)
{
$Consumer_id_Proj = null;
$Consumer_id_Pos = null;
$Consumer_id_Num = null;
/////////////////////////////////////////////////////////
/// Comprovem si existeix a la base de dades de sqlServer
/////////////////////////////////////////////////////////
if (!is_null($con_id))
{
$enConsumers = $this->em->getRepository(Consumers::class)->find($con_id);
if ($enConsumers)
{
$Consumer_id_Proj = $enConsumers->getCustomerIdProj();
$Consumer_id_Pos = $enConsumers->getCustomerIdPos();
$Consumer_id_Num = $enConsumers->getCustomerIdNum();
}
}
$aAux['container'] = $this;
$aAux['mailer'] = $this->phpmailer;
$aAux['texto_aleatorio'] = $this->objUtil->texto_aleatorio();
$objProcessosController = new ProcessosController($this->em, $this->phpmailer);
$bRespostaSqlServer = $objProcessosController->check_email_sqlserver($email, $Consumer_id_Proj, $Consumer_id_Pos, $Consumer_id_Num, $aAux);
$blRequest = $bRespostaSqlServer;
} else {
$blRequest = 1;
}
return new response($blRequest);
}
public function check_exist_consumerAction(Request $peticion, $aParams, $con_id = null)
{
$aRequest = $peticion->request;
$sQuery = "SELECT c.id as con_id ";
$sQuery .= " FROM App:Consumers c";
$sQuery .= " WHERE 1=1 ";
$sQuery .= ' AND c.historic != 1';
if (!is_null($aParams['Nombre']))
{
$sQuery .= " AND c.nom = :nom";
}
if (!is_null($aParams['cognom1']))
{
$sQuery .= " AND c.cognom1 = :cognom1";
}
if (!is_null($aParams['cognom2']))
{
$sQuery .= " AND (c.cognom2 = :cognom2";
if ($aParams['cognom2'] == '')
{
$sQuery .= " OR c.cognom2 is null";
}
$sQuery .= " )";
}
if (!is_null($aParams['dataNaixement']))
{
$sQuery .= " AND c.data_naixement = :data_naixement";
}
if (!is_null($con_id))
{
$sQuery .= ' AND c.id != :con_id';
}
$query = $this->em->createQuery($sQuery);
if (!is_null($con_id))
{
$query->setParameter('con_id', $con_id);
}
if (!is_null($aParams['Nombre']))
{
$query->setParameter('nom', $aParams['Nombre']);
}
if (!is_null($aParams['cognom1']))
{
$query->setParameter('cognom1', $aParams['cognom1']);
}
if (!is_null($aParams['cognom2']))
{
$query->setParameter('cognom2', $aParams['cognom2']);
}
if (!is_null($aParams['dataNaixement'])) {
$query->setParameter('data_naixement', $aParams['dataNaixement']);
}
$enConsumers = $query->getResult();
if (!$enConsumers)
{
$blRequest = 0;
} else {
$blRequest = $enConsumers[0]['con_id'];
}
return new response($blRequest);
}
public function getWtpAction(Request $peticion, $id)
{
$sWTP = '*';
//////////////////////////////////////////
/// Consultem si te WTP a la mateixa fitxa
//////////////////////////////////////////
$enConsumers = $this->em->getRepository(Consumers::class)->find($id);
if ($enConsumers)
{
if (!is_null($enConsumers->getWtp())
&& $enConsumers->getWtp() != '')
{
$sWTP = $enConsumers->getWtp();
}
}
if ($sWTP == '*')
{
$aParam['consumers'] = $id;
$objConsumersAmbXip = $this->em->getRepository(Consumers::class)->getWTPConsumers($aParam);
if ($objConsumersAmbXip)
{
$sWTP = $objConsumersAmbXip[0]['xip'];
}
}
return new response($sWTP);
}
public function checkWtpAction(Request $peticion, $sWtp)
{
$bReturn = '*';
//////////////////////////////////////////
/// Consultem si te WTP a la mateixa fitxa
//////////////////////////////////////////
$aParams = array( 'wtp' => $sWtp);
$enConsumers = $this->em->getRepository(Consumers::class)->findBy($aParams);
if ($enConsumers)
{
$bReturn = 1;
}
if ($bReturn == '*')
{
$aParam['xip'] = $sWtp;
$objAbonatsAmbXip = $this->em->getRepository(Consumers::class)->checkWTP($aParam);
if ($objAbonatsAmbXip)
{
$bReturn = 1;
}
}
return new response($bReturn);
}
/**
* Creem l'abonat principal del client amb les dades del client
*
* @param Request $peticion
* @param type $aValues
* @return \App\Controller\response
*/
public function addAbonatByClientAction(Request $peticion, $aValues)
{
$enConsumers = $this->em->getRepository(Consumers::class)->find($aValues['cli_id']);
/////////////////////////////
// Guardem la foto físicament
/////////////////////////////
$sNomFoto = '';
if (key_exists('foto', $aValues)
&& $aValues['foto'] != '')
{
$sNomFoto = $this->objUtil->texto_aleatorio() . '_' . $enConsumers->getId() . '.png';
$this->get('util')->guardaImatge($aValues['path'] . $sNomFoto, $aValues['foto']);
}
//////////////////////////
// Creem abonat del client
//////////////////////////
$enAbonats = new Abonats();
$enAbonats->setNom($aValues['nom']);
$enAbonats->setCognom1($aValues['cognom1']);
$enAbonats->setCognom2($aValues['cognom2']);
$dateTime = new \DateTime();
$enAbonats->setDataNaixement($dateTime->setTimestamp(strtotime($aValues['data_naixement'])));
$enAbonats->setConsumers($enConsumers);
if (key_exists('IdFamilia', $aValues)
&& $aValues['IdFamilia'] != '')
$enAbonats->setFamilia4i($aValues['IdFamilia']);
if (key_exists('origen_entrada', $aValues))
{
$enAbonats->setOrigenEntrada($aValues['origen_entrada']);
}
if ($sNomFoto != '')
{
$enAbonats->setImatge($sNomFoto);
}
if (key_exists('consumer_4i', $aValues)
&& $aValues['consumer_4i'] != '')
{
$enAbonats->setConsumer4i($aValues['consumer_4i']);
}
$this->em->persist($enAbonats);
$this->em->flush();
//////////////////////////////////
// Actualitzaem l'abonat principal
//////////////////////////////////
$enConsumers->setAbonat($enAbonats->getId());
$this->em->persist($enConsumers);
$this->em->flush();
//return new response($enAbonats->getId());
return new JsonResponse($enAbonats->getId());
}
/**
* Mostra id de l'abonat i del client si es l'abonat principal
* Això ens serveix per modificar les dades dels dos si cal
*
* @param Request $peticion
* @param type $iConsumer4i
* @return \App\Controller\response
*/
public function checkExistConsumerAction(Request $peticion, $iConsumer4i)
{
$aResposta = array();
$sQuery = "SELECT c.id as cli_id, a.id as abo_id "
. " FROM App:Abonats a LEFT JOIN App:Consumers c WITH a.id = c.abonat"
. " WHERE a.consumer_4i = :consumer_4i";
$query = $this->em->createQuery($sQuery);
$query->setParameter('consumer_4i', $iConsumer4i);
$objAbonats = $query->getResult();
if (count($objAbonats) > 0)
{
$aResposta = $objAbonats;
}
return new JsonResponse($aResposta);
}
/**
* Mostra id de l'abonat i del client si es l'abonat principal
* Això ens serveix per modificar les dades dels dos si cal
*
* @param Request $peticion
* @param type $iConsumer4i
* @return \App\Controller\response
*/
public function checkExistConsumerByEntornoIdAction(Request $peticion, $iAbo_id)
{
$aResposta = array();
$sQuery = "SELECT c.id as cli_id, a.id as abo_id "
. " FROM App:Abonats a LEFT JOIN App:Consumers c WITH a.id = c.abonat"
. " WHERE a.id = :abo_id";
$query = $this->em->createQuery($sQuery);
$query->setParameter('abo_id', $iAbo_id);
$objAbonats = $query->getResult();
if (count($objAbonats) > 0)
{
$aResposta = $objAbonats;
}
return new JsonResponse($aResposta);
}
public function getIdClubEsquiAction(Request $peticion, $sCode)
{
$aResposta = 0;
if ($sCode != ''
&& $sCode != '0')
{
$sQuery = "SELECT u.id "
. " FROM App:Usuari u"
. " WHERE u.codi = :codi";
$query = $this->em->createQuery($sQuery)
//->setFirstResult(0)
//->setMaxResults(1)
;
$query->setParameter('codi', $sCode);
$objUsuari = $query->getResult();
if (count($objUsuari) > 0)
{
$aResposta = $objUsuari[0]['id'];
}
}
return new response($aResposta);
}
function mostrarImatgeAction(Request $peticion)
{
if ($this->session->get('sessConsumer_id')) {
$aFitxer = $peticion->attributes;
$sFitxer = $aFitxer->get('imatge');
$enConsumers = new Consumers();
$rutaImatge = $enConsumers->getUploadRootDir() . '/' . $sFitxer;
// Crea una nova instància de BinaryFileResponse amb la ruta de la imatge com a paràmetre
$response = new BinaryFileResponse($rutaImatge);
// Estableix el tipus MIME de la resposta com a imatge/jpeg
$response->headers->set('Content-Type', 'image/jpeg');
// Afegeix la capçalera Content-Disposition per indicar que la resposta s'ha de mostrar en el navegador i descarregar amb un nom específic
$response->setContentDisposition(ResponseHeaderBag::DISPOSITION_INLINE, basename($rutaImatge));
// Retorna la resposta per mostrar la imatge al navegador
return $response;
} else {
return false;
}
}
function mostrarDocumentAction(Request $peticion)
{
if ($this->session->get('sessConsumer_id'))
{
$aFitxer = $peticion->attributes;
$sFitxer = $aFitxer->get('document');
$enConsumers = new Consumers();
$rutaDocument = $enConsumers->getUploadRootDir() . '/' . $sFitxer;
// Crea una nova instància de Response amb el contingut del document com a cos
$response = new BinaryFileResponse($rutaDocument);
// Estableix el tipus MIME de la resposta en funció de l'extensió del document
$mimeTypes = new \Symfony\Component\Mime\MimeTypes();
$contentType = $mimeTypes->guessMimeType($rutaDocument);
$response->headers->set('Content-Type', $contentType);
// Afegeix la capçalera Content-Disposition per indicar que la resposta s'ha de mostrar en el navegador i descarregar amb un nom específic
$response->setContentDisposition( 'inline', basename($rutaDocument));
// Retorna la resposta per mostrar el document al navegador
return $response;
} else {
return false;
}
}
}