<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RequestStack;
use Doctrine\ORM\Query;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
#use Symfony\Component\Serializer;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\SerializerInterface;
use Symfony\Component\Validator\Validation;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use phpseclib3\Net\SFTP;
use App\Services\MailService;
use App\Entity\BDDG\Terminal;
use App\Entity\BDDG\TerminalErreur;
use App\Entity\BDDG\Periode;
use App\Entity\BDDG\Tarifs;
use App\Entity\BDDG\Tarif;
use App\Entity\BDPolymorph\Commande;
use App\Entity\BDPolymorph\CommandeService;
use App\Entity\BDPolymorph\TransactionCb;
use App\Entity\BDPolymorph\Solvabilite;
use App\Entity\BDPolymorph\SolvabiliteOk;
use App\Entity\BDPolymorph\Enregistrement;
use App\Entity\BDPolymorph\EnregistrementOk;
use App\Entity\BDPolymorph\InfoRemise;
use App\Entity\BDPolymorph\Log;
use App\Entity\BDDG\TerminalComposant;
use App\Services\libMQTT\src\ClientMQTT;
class WebServiceController extends AbstractController
{
/**
* @Route("/netbase", name="netbase")
*/
protected $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
public function insertTerminal($_format)
{
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
//SH 2021.01.21 ajout des terminaux
$request = $this->requestStack->getCurrentRequest();
//$data = $request->getContent();
//return new Response (var_dump($request->getContent()));
// create the serializer
//$serializer = $this->getSerializer($_format);
//return new Response (var_dump($serializer));
// build the Commande from a decoded array
$terminal = $serializer->deserialize ($request->getContent(),
'App\Entity\BDDG\Terminal',
$_format);
//return new Response (var_dump($terminal));
/*if ($terminal)
{
//$validator = $this->get('validator');
if (0 === count($validator->validate($terminal)))
{
$con = $this->getDoctrine()->getConnection();
$sql = $con->prepare("insert into terminal (ID_TERMINAL, NOM_TERMINAL, NOM_BORNE, ID_TYPE_CONTROL, COMMENTAIRE_TERMINAL) values (?, ?,?, ?, ?)");
$sql->bindValue(1, $terminal->getIdTerminal());
$sql->bindValue(2, $terminal->getNomTerminal());
$sql->bindValue(3, ' ');
$sql->bindValue(4, null);
$sql->bindValue(5, null);
$sql->execute();
$response = new Response('Valid terminal!', 201);
//provisoire
$con1 = $this->getDoctrine()->getConnection();
$sql1 = $con1->prepare("insert into zone (ID_TERMINAL, ID_ZONE, NOM_ZONE, NB_PLACE, NB_PLACES_IPARK, XMPP_USER, XMPP_PASSWORD, XMPP_SYNOPTIQUE, XMPP_SYNOPTIQUE_PASSWORD, bnq_site_id, bnq_key) values (?,?,?,?,?,?,?,?,?,?,?)");
$sql1->bindValue(1, $terminal->getIdTerminal());
$sql1->bindValue(2, 1);
$sql1->bindValue(3, $terminal->getNomTerminal());
$sql1->bindValue(4, 10);
$sql1->bindValue(5, 0);
$sql1->bindValue(6, ' ');
$sql1->bindValue(7, ' ');
$sql1->bindValue(8, ' ');
$sql1->bindValue(9, ' ');
$sql1->bindValue(10, ' ');
$sql1->bindValue(11, ' ');
$sql1->execute();
//return new Response (var_dump($sql1));
return $response;
}
}*/
if ($terminal)
{
if (0 === count($validator->validate($terminal)))
{
$entityManager = $this->getDoctrine()->getManager();
if($terminal->getEtatTerminal()==null ) $terminal->setEtatTerminal(0);
if($terminal->getIdModePaiement()==null ) $terminal->setIdModePaiement(1);
if($terminal->getIp()==null ) $terminal->setIp('11.11.11.11'); //SH 2024.09.03 initialisation adresse ip
$entityManager->merge($terminal);
$entityManager->flush();
$response = new Response('Valid terminal!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid terminal!', 406);
return $response;
}
//SH 2023.03.22
public function insertZone($_format)
{
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
$zone = $serializer->deserialize ($request->getContent(),
'App\Entity\BDDG\Zone',
$_format);
//return new Response (var_dump($zone));
if ($zone)
{
//return new Response (var_dump(count($validator->validate($zone))));
if (0 === count($validator->validate($zone)))
{
//return new Response (var_dump($zone));
if ($zone->getTerminal()==null)
{
$repository = $this->getDoctrine()->getRepository('App\Entity\BDDG\Terminal');
$terminal = $repository->findOneBy(array('idTerminal' => $zone->getIdTerminal()));
//return new Response (var_dump($terminal));
$zone->setTerminal($terminal);
//return new Response (var_dump($zone));
}
$entityManager = $this->getDoctrine()->getManager();
$entityManager->merge($zone);
$entityManager->flush();
$response = new Response('Valid zone!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid zone!', 406);
return $response;
}
public function insertTerminalService($_format)
{
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
//return new Response (var_dump($request->getContent()));
$terminalService = $serializer->deserialize ($request->getContent(),
'App\Entity\BDDG\TerminalService',
$_format);
//return new Response (var_dump($terminalService));
if ($terminalService)
{
if (0 === count($validator->validate($terminalService)))
{
if ($terminalService->getTerminal()==null)
{
$repository = $this->getDoctrine()->getRepository('App\Entity\BDDG\Terminal');
$terminal = $repository->findOneBy(array('idTerminal' => $terminalService->getIdTerminal()));
//return new Response (var_dump($terminal));
$terminalService->setTerminal($terminal);
//return new Response (var_dump($terminalService));
}
$entityManager = $this->getDoctrine()->getManager();
$entityManager->merge($terminalService);
$entityManager->flush();
$response = new Response('Valid terminal service!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid terminal service!', 406);
return $response;
}
//SH 2021.05.03 WS commandes et telecollectes
public function insertCommande($_format)
{
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
// build the Commande from a decoded array
//return new Response (var_dump($request->getContent()));
$commande = $serializer->deserialize ($request->getContent(),
'App\Entity\BDPolymorph\Commande',
$_format);
//return new Response (var_dump(date_format($commande->getDateCommande(),"Y/m/d H:i:s")));
if ($commande) {
if (0 === count($validator->validate($commande))) {
//return new Response (var_dump($commandeAdd));
$entityManager = $this->getDoctrine()->getManager('polymorph');
$query = $entityManager->createQuery(
'SELECT c FROM App\Entity\BDPolymorph\Commande c WHERE c.idCommande = :ID_COMMANDE AND c.idTerminal = :ID_TERMINAL'
)->setParameter('ID_COMMANDE', $commande->getIdCommande())
->setParameter('ID_TERMINAL', $commande->getIdTerminal());
$commandeExists = $query->getResult();
if ($commandeExists == null) {
$con = $this->getDoctrine()->getConnection('polymorph');
$sql = $con->prepare("insert into commande (ID_COMMANDE, ID_TERMINAL, ID_ZONE, ID_USER, DATE_COMMANDE, IS_ENVOYER_NB, ID_TYPE_RESERVATION, ID_DRAPEAU) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
$sql->bindValue(1, $commande->getIdCommande());
$sql->bindValue(2, $commande->getIdTerminal());
$sql->bindValue(3, $commande->getIdZone());
$sql->bindValue(4, $commande->getIdUser());
$sql->bindValue(5, date_format($commande->getDateCommande(),"Y/m/d H:i:s"));
$sql->bindValue(6, $commande->getIsEnvoyerNb());
$sql->bindValue(7, $commande->getIdTypeReservation());
$sql->bindValue(8, $commande->getIdDrapeau());
$sql->execute();
}
$response = new Response('Valid Commande!', 201);
return $response;
}
}
$response = new Response('Invalid commande!', 406);
return $response;
}
//fin SH
//SH 2021.05.18
public function insertCommandeService($_format)
{
// create the serializer
//$serializer = $this->getSerializer($_format);
//return new Response (var_dump('CommandeService'));
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
//return new Response (var_dump($request->getContent()));
// build the Commande from a decoded array
$commandeService = $serializer->deserialize ($request->getContent(),
'App\Entity\BDPolymorph\CommandeService',
$_format);
if ($commandeService)
{
if (0 === count($validator->validate($commandeService)))
{
$entityManager = $this->getDoctrine()->getManager('polymorph');
$query = $entityManager->createQuery(
'SELECT cs FROM App\Entity\BDPolymorph\CommandeService cs WHERE cs.idCommande = :ID_COMMANDE AND cs.idTerminal = :ID_TERMINAL AND cs.idService = :ID_SERVICE'
)->setParameter('ID_COMMANDE', $commandeService->getIdCommande())
->setParameter('ID_TERMINAL', $commandeService->getIdTerminal())
->setParameter('ID_SERVICE', $commandeService->getIdService());
$commandeServiceExists = $query->getResult();
if($commandeServiceExists == null)
{
$con = $this->getDoctrine()->getConnection('polymorph');
$sql = $con->prepare("INSERT INTO commande_service (ID_COMMANDE, ID_TERMINAL, ID_SERVICE, ID_ZONE, ID_TARIF, ID_COMPOSANT, QTE, QTE_UNITAIRE, UNITE, PRIX, ID_TYPE_SERVICE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$sql->bindValue(1, $commandeService->getIdCommande());
$sql->bindValue(2, $commandeService->getIdTerminal());
$sql->bindValue(3, $commandeService->getIdService());
$sql->bindValue(4, $commandeService->getIdZone());
$sql->bindValue(5, $commandeService->getIdTarif());
$sql->bindValue(6, $commandeService->getIdComposant());
$sql->bindValue(7, $commandeService->getQte());
$sql->bindValue(8, $commandeService->getQteUnitaire());
$sql->bindValue(9, $commandeService->getUnite());
$sql->bindValue(10, $commandeService->getPrix());
$sql->bindValue(11, $commandeService->getIdTypeService());
$sql->execute();
}
$response = new Response('Valid Commande!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid commande service!', 406);
return $response;
}
public function insertCommandeServiceConso ($_format)
{
// create the serializer
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
// build the Commande from a decoded array
$commandeServiceConso = $serializer->deserialize ($request->getContent(),
'App\Entity\BDPolymorph\CommandeServiceConso',
$_format);
if ($commandeServiceConso)
{
$validator = $this->get('validator');
if (0 === count($validator->validate($commandeServiceConso)))
{
// this is a valid Commande instance, persist it
$entityManager = $this->getDoctrine()->getManager('polymorph');
// $query = $entityManager->createQuery(
// 'SELECT csc FROM NetBaseEntitiesDBBundle:CommandeServiceConso csc WHERE csc.idCommande = :ID_COMMANDE AND csc.idTerminal = :ID_TERMINAL AND csc.idService = :ID_SERVICE AND csc.idServiceConso = :ID_SERVICE_CONSO'
// )->setParameter('ID_COMMANDE', $commandeServiceConso->getIdCommande())
// ->setParameter('ID_TERMINAL', $commandeServiceConso->getIdTerminal())
// ->setParameter('ID_SERVICE', $commandeServiceConso->getIdService())
// ->setParameter('ID_SERVICE_CONSO', $commandeServiceConso->getIdServiceConso());
// $commandeServiceConsoExists = $query->getResult();
// if($commandeServiceConsoExists == null)
// {
// $entityManager->persist($commandeServiceConso);
// $entityManager->flush();
// }
$entityManager->merge($commandeServiceConso);
$entityManager->flush();
$response = new Response('Valid commande service conso!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid commande service conso!', 406);
return $response;
}
public function insertTransactionCb ($_format)
{
// create the serializer
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
// $res = deleteSpecialChar($request->getContent());
$res=str_ireplace(array('', '', '', '' ,'&' ,'|'), '', $request->getContent());
// $res = $varUneChaine = preg_replace('/([^.a-z0-9]+)/i', '_', $request->getContent());
//return new Response (var_dump($res));
// build the Commande from a decoded array
//$transactionCb = $serializer->deserialize ($request->getContent(),
// 'App\Entity\BDPolymorph\TransactionCb',
// $_format);
$transactionCb = $serializer->deserialize ($res,
'App\Entity\BDPolymorph\TransactionCb',
$_format);
if ($transactionCb)
{
if (0 === count($validator->validate($transactionCb)))
{
// this is a valid Commande instance, persist it
$entityManager = $this->getDoctrine()->getManager('polymorph');
$query = $entityManager->createQuery(
'SELECT t FROM App\Entity\BDPolymorph\TransactionCb t WHERE t.idCommande = :ID_COMMANDE AND t.idTerminal = :ID_TERMINAL AND t.idTransaction = :ID_TRANSACTION'
)->setParameter('ID_COMMANDE', $transactionCb->getIdCommande())
->setParameter('ID_TERMINAL', $transactionCb->getIdTerminal())
->setParameter('ID_TRANSACTION', $transactionCb->getIdTransaction());
$transactionCbExists = $query->getResult();
if($transactionCbExists == null)
{
$con = $this->getDoctrine()->getConnection('polymorph');
$sql = $con->prepare("INSERT INTO transaction_cb (ID_TRANSACTION, ID_COMMANDE, ID_TERMINAL, OK, TRAME_SOLVABILITE, TRAME_ENREGISTREMENT, TRAME_TICKET) VALUES (?, ?, ?, ?, ?, ?, ?)");
$sql->bindValue(1, $transactionCb->getIdTransaction());
$sql->bindValue(2, $transactionCb->getIdCommande());
$sql->bindValue(3, $transactionCb->getIdTerminal());
$sql->bindValue(4, $transactionCb->getOk());
$sql->bindValue(5, $transactionCb->getTrameSolvabilite());
$sql->bindValue(6, $transactionCb->getTrameEnregistrement());
$sql->bindValue(7, $transactionCb->getTrameTicket());
$sql->execute();
}
$response = new Response('Valid transaction CB!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid transaction CB!', 406);
return $response;
}
public function insertSolvabilite ($_format)
{
// create the serializer
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
$res=str_ireplace(array('', '', '', '' ,'&' ,'|'), '', $request->getContent());
// build the Commande from a decoded array
/*$solvabilite = $serializer->deserialize ($request->getContent(),
'App\Entity\BDPolymorph\Solvabilite',
$_format);*/
$solvabilite = $serializer->deserialize ($res,
'App\Entity\BDPolymorph\Solvabilite',
$_format);
if ($solvabilite)
{
if (0 === count($validator->validate($solvabilite)))
{
// this is a valid Commande instance, persist it
$entityManager = $this->getDoctrine()->getManager('polymorph');
$query = $entityManager->createQuery(
'SELECT s FROM App\Entity\BDPolymorph\Solvabilite s WHERE s.idCommande = :ID_COMMANDE AND s.idTerminal = :ID_TERMINAL AND s.idTransaction = :ID_TRANSACTION'
)->setParameter('ID_COMMANDE', $solvabilite->getIdCommande())
->setParameter('ID_TERMINAL', $solvabilite->getIdTerminal())
->setParameter('ID_TRANSACTION', $solvabilite->getIdTransaction());
$solvabiliteExists = $query->getResult();
if($solvabiliteExists == null)
{
$con = $this->getDoctrine()->getConnection('polymorph');
$sql = $con->prepare("INSERT INTO solvabilite (ID_TRANSACTION, ID_COMMANDE, ID_TERMINAL, LG1, CR, DIAG, TYPECARTE, PRES, PAPIER, LIBELLE, LG2) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$sql->bindValue(1,$solvabilite->getIdTransaction());
$sql->bindValue(2, $solvabilite->getIdCommande());
$sql->bindValue(3, $solvabilite->getIdTerminal());
$sql->bindValue(4, $solvabilite->getLg1());
$sql->bindValue(5, $solvabilite->getCr());
$sql->bindValue(6, $solvabilite->getDiag());
$sql->bindValue(7, $solvabilite->getTypeCarte());
$sql->bindValue(8, $solvabilite->getPres());
$sql->bindValue(9, $solvabilite->getPapier());
$sql->bindValue(10, $solvabilite->getLibelle());
$sql->bindValue(11, $solvabilite->getLg2());
$sql->execute();
}
$response = new Response('Valid solvabilite!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid solvabilite!', 406);
return $response;
}
public function insertSolvabiliteOk ($_format)
{
// create the serializer
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
//return new Response (var_dump($request->getContent()));
// build the Commande from a decoded array
$res=str_ireplace(array('', '', '', '' ,'&' ,'|'), '', $request->getContent());
/*$solvabiliteOk = $serializer->deserialize ($request->getContent(),
'App\Entity\BDPolymorph\SolvabiliteOk',
$_format);*/
$solvabiliteOk = $serializer->deserialize ($res,
'App\Entity\BDPolymorph\SolvabiliteOk',
$_format);
//return new Response (var_dump($solvabiliteOk->getIdTransaction()));
if ($solvabiliteOk)
{
if (0 === count($validator->validate($solvabiliteOk)))
{
// this is a valid Commande instance, persist it
$entityManager = $this->getDoctrine()->getManager('polymorph');
$query = $entityManager->createQuery(
'SELECT s FROM App\Entity\BDPolymorph\SolvabiliteOk s WHERE s.idCommande = :ID_COMMANDE AND s.idTerminal = :ID_TERMINAL AND s.idTransaction = :ID_TRANSACTION'
)->setParameter('ID_COMMANDE', $solvabiliteOk->getIdCommande())
->setParameter('ID_TERMINAL', $solvabiliteOk->getIdTerminal())
->setParameter('ID_TRANSACTION', $solvabiliteOk->getIdTransaction());
$solvabiliteOkExists = $query->getResult();
if($solvabiliteOkExists == null)
{
$con = $this->getDoctrine()->getConnection('polymorph');
$sql = $con->prepare("INSERT INTO solvabilite_ok (`ID_COMMANDE`, `ID_TERMINAL`, `ID_TRANSACTION`, `MONTANTMAX`, `CODEALPHADELADEV`, `PARTIEFRACDELADEV`) VALUES (?, ?, ?, ?, ?, ?)");
$sql->bindValue(1, $solvabiliteOk->getIdCommande());
$sql->bindValue(2, $solvabiliteOk->getIdTerminal());
$sql->bindValue(3, $solvabiliteOk->getIdTransaction());
$sql->bindValue(4, $solvabiliteOk->getMontantmax());
$sql->bindValue(5, $solvabiliteOk->getCodealphadeladev());
$sql->bindValue(6, $solvabiliteOk->getPartiefracdeladev());
$sql->execute();
}
$response = new Response('Valid solvabilite OK!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid solvabilite OK!', 406);
return $response;
}
public function insertSolvabiliteKo ($_format)
{
// create the serializer
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
// build the Commande from a decoded array
/*solvabiliteKo = $serializer->deserialize ($request->getContent(),
'App\Entity\BDPolymorph\SolvabiliteKo',
$_format);*/
$res=str_ireplace(array('', '', '', '' ,'&' ,'|'), '', $request->getContent());
$solvabiliteOk = $serializer->deserialize ($res,
'App\Entity\BDPolymorph\SolvabiliteOk',
$_format);
if ($solvabiliteKo)
{
$validator = $this->get('validator');
if (0 === count($validator->validate($solvabiliteKo)))
{
// this is a valid Commande instance, persist it
$entityManager = $this->getDoctrine()->getManager('polymorph');
// $query = $entityManager->createQuery(
// 'SELECT s FROM NetBaseEntitiesDBBundle:SolvabiliteKo s WHERE s.idCommande = :ID_COMMANDE AND s.idTerminal = :ID_TERMINAL AND s.idTransaction = :ID_TRANSACTION'
// )->setParameter('ID_COMMANDE', $solvabiliteKo->getIdCommande())
// ->setParameter('ID_TERMINAL', $solvabiliteKo->getIdTerminal())
// ->setParameter('ID_TRANSACTION', $solvabiliteKo->getIdTransaction());
// $solvabiliteKoExists = $query->getResult();
// if($solvabiliteKoExists == null)
// {
// $entityManager->persist($solvabiliteKo);
// $entityManager->flush();
// $query = $entityManager->createQuery(
// 'SELECT tcb FROM NetBaseEntitiesDBBundle:TerminalCb tcb
// WHERE tcb.idTerminal = :ID_TERMINAL
// AND tcb.cbLib = :CB_LIB'
// )->setParameter('ID_TERMINAL', $solvabiliteKo->getIdTerminal())
// ->setParameter('CB_LIB', $solvabiliteKo->getLabell());
// $tcb = $query->getSingleResult();
// if ($tcb == null) {
// $tcb = new TerminalCb();
// $tcb->setIdTerminal($solvabiliteKo->getIdTerminal());
// $tcb->setCbLib($solvabiliteKo->getLabell());
// $entityManager->persist($tcb);
// $entityManager->flush();
// }
// }
$entityManager->merge($solvabiliteKo);
$tcb = new TerminalCb();
$tcb->setIdTerminal($solvabiliteKo->getIdTerminal());
$tcb->setCbLib($solvabiliteKo->getLabell());
$entityManager->merge($tcb);
$entityManager->flush();
$response = new Response('Valid solvabilite KO!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid solvabilite KO!', 406);
return $response;
}
public function insertEnregistrement ($_format)
{
// create the serializer
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
// build the Commande from a decoded array
// return new Response (var_dump($request->getContent()));
$enregistrement = $serializer->deserialize ($request->getContent(),
'App\Entity\BDPolymorph\Enregistrement',
$_format);
// return new Response (var_dump($enregistrement));
if ($enregistrement)
{
if (0 === count($validator->validate($enregistrement)))
{
// this is a valid Commande instance, persist it
$entityManager = $this->getDoctrine()->getManager('polymorph');
$query = $entityManager->createQuery(
'SELECT e FROM App\Entity\BDPolymorph\Enregistrement e WHERE e.idCommande = :ID_COMMANDE AND e.idTerminal = :ID_TERMINAL AND e.idTransaction = :ID_TRANSACTION'
)->setParameter('ID_COMMANDE', $enregistrement->getIdCommande())
->setParameter('ID_TERMINAL', $enregistrement->getIdTerminal())
->setParameter('ID_TRANSACTION', $enregistrement->getIdTransaction());
$enregistrementExists = $query->getResult();
if($enregistrementExists == null)
{
$con = $this->getDoctrine()->getConnection('polymorph');
$sql = $con->prepare("INSERT INTO enregistrement (ID_COMMANDE, ID_TERMINAL, ID_TRANSACTION, LG, CR, LIBELLE, LG2) VALUES (?, ?, ?, ?, ?, ?, ?)");
$sql->bindValue(1, $enregistrement->getIdCommande());
$sql->bindValue(2, $enregistrement->getIdTerminal());
$sql->bindValue(3, $enregistrement->getIdTransaction());
$sql->bindValue(4, $enregistrement->getLg());
$sql->bindValue(5, $enregistrement->getCr());
$sql->bindValue(6, $enregistrement->getLibelle());
$sql->bindValue(7, $enregistrement->getLg2());
$sql->execute();
}
$response = new Response('Valid enregistrement!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid enregistrement!', 406);
return $response;
}
public function insertEnregistrementOk ($_format)
{
// create the serializer
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
// build the Commande from a decoded array
$enregistrementOk = $serializer->deserialize ($request->getContent(),
'App\Entity\BDPolymorph\EnregistrementOk',
$_format);
if ($enregistrementOk)
{
if (0 === count($validator->validate($enregistrementOk)))
{
// this is a valid Commande instance, persist it
$entityManager = $this->getDoctrine()->getManager('polymorph');
$query = $entityManager->createQuery(
'SELECT e FROM App\Entity\BDPolymorph\EnregistrementOk e WHERE e.idCommande = :ID_COMMANDE AND e.idTerminal = :ID_TERMINAL AND e.idTransaction = :ID_TRANSACTION'
)->setParameter('ID_COMMANDE', $enregistrementOk->getIdCommande())
->setParameter('ID_TERMINAL', $enregistrementOk->getIdTerminal())
->setParameter('ID_TRANSACTION', $enregistrementOk->getIdTransaction());
$enregistrementOkExists = $query->getResult();
if($enregistrementOkExists == null)
{
$tmpNum = str_replace("?","",$enregistrementOk->getNumcompteprimaireunporteur());
if (strlen($tmpNum) > 12)
$tmpNum = "############".substr($tmpNum,12);
$enregistrementOk->setNumcompteprimaireunporteur($tmpNum);
$con = $this->getDoctrine()->getConnection('polymorph');
/*$sql = $con->prepare("INSERT INTO enregistrement_ok(ID_COMMANDE,ID_TERMINAL, ID_TRANSACTION, FORMATENTETETICKETTRANSAC, DATELOCALEDELATRANSAC, HEURELOCALEDELATRANSAC, ENSEIGNEACCEPT, TYPEDETRANSAC, NUMCONTRATOUIDACCEPT, NUMSIRET, TYPEACTIVITECOMMERCIALE, TYPEDEPAIEMENT, TYPEDESITE, NUMCOMPTEPRIMAIREUNPORTEUR, TYPEAPPLICATIFDUSYSACCEPT,DATEDEFINDEVALIDUNEAPPCARTE, CODESERVICE, CRYPTOGRAMME, CODENUMERIQUEDELADEV, NUMLOGIQUEDUSYSACCEPT, NUMDETRANSACGENPARLESYSCCEPT, NUMDEREMISE, MODEDELECTUREDUNUMEROPORTEUR, NUMAUTORISATIONUNETRANSAC, CODEFORCAGE, MONTANTDELATRANSAC, CODEALPHADELADEV, PARTIEFRACDELADEV, MONTANTUNETRANSACENCONTREVAL, CODEALPHADELADEVENCONTREVAL, PARTIEFRACDELADEVENCONTREVAL, MONTANTESTIME, FORMATPIEDDETICKETTRANSAC, AID, LABELL)
VALUES ([value-1],[value-2],[value-3],[value-4],[value-5],[value-6],[value-7],[value-8],[value-9],[value-10],[value-11],[value-12],[value-13],[value-14],[value-15],[value-16],[value-17],[value-18],[value-19],[value-20],[value-21],[value-22],[value-23],[value-24],[value-25],[value-26],[value-27],[value-28],[value-29],[value-30],[value-31],[value-32],[value-33],[value-34],[value-35])");*/
$sql = $con->prepare("INSERT INTO enregistrement_ok(ID_COMMANDE,ID_TERMINAL, ID_TRANSACTION, FORMATENTETETICKETTRANSAC, DATELOCALEDELATRANSAC, HEURELOCALEDELATRANSAC, ENSEIGNEACCEPT, TYPEDETRANSAC, NUMCONTRATOUIDACCEPT, NUMSIRET, TYPEACTIVITECOMMERCIALE, TYPEDEPAIEMENT, TYPEDESITE, NUMCOMPTEPRIMAIREUNPORTEUR, TYPEAPPLICATIFDUSYSACCEPT,DATEDEFINDEVALIDUNEAPPCARTE, CODESERVICE, CRYPTOGRAMME, CODENUMERIQUEDELADEV, NUMLOGIQUEDUSYSACCEPT, NUMDETRANSACGENPARLESYSCCEPT, NUMDEREMISE, MODEDELECTUREDUNUMEROPORTEUR, NUMAUTORISATIONUNETRANSAC, CODEFORCAGE, MONTANTDELATRANSAC, CODEALPHADELADEV, PARTIEFRACDELADEV, MONTANTUNETRANSACENCONTREVAL, CODEALPHADELADEVENCONTREVAL, PARTIEFRACDELADEVENCONTREVAL, MONTANTESTIME, FORMATPIEDDETICKETTRANSAC, AID, LABELL)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?, ? , ?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?, ?)");
$sql->bindValue(1, $enregistrementOk->getIdCommande());
$sql->bindValue(2, $enregistrementOk->getIdTerminal());
$sql->bindValue(3, $enregistrementOk->getIdTransaction());
$sql->bindValue(4, rtrim($enregistrementOk->getFormatentetetickettransac()));
$sql->bindValue(5, rtrim($enregistrementOk->getDatelocaledelatransac()));
$sql->bindValue(6, rtrim($enregistrementOk->getHeurelocaledelatransac()));
$sql->bindValue(7, rtrim($enregistrementOk->getEnseigneaccept()));
$sql->bindValue(8, rtrim($enregistrementOk->getTypedetransac()));
$sql->bindValue(9, rtrim($enregistrementOk->getNumcontratouidaccept()));
$sql->bindValue(10, rtrim($enregistrementOk->getNumsiret()));
$sql->bindValue(11, rtrim($enregistrementOk->getTypeactivitecommerciale()));
$sql->bindValue(12, rtrim($enregistrementOk->getTypedepaiement()));
$sql->bindValue(13, rtrim($enregistrementOk->getTypedesite()));
$sql->bindValue(14, rtrim($enregistrementOk->getNumcompteprimaireunporteur()));
$sql->bindValue(15, rtrim($enregistrementOk->getTypeapplicatifdusysaccept()));
$sql->bindValue(16, rtrim($enregistrementOk->getDatedefindevaliduneappcarte()));
$sql->bindValue(17, rtrim($enregistrementOk->getCodeservice()));
$sql->bindValue(18, rtrim($enregistrementOk->getCryptogramme()));
$sql->bindValue(19, rtrim($enregistrementOk->getCodenumeriquedeladev()));
$sql->bindValue(20, rtrim($enregistrementOk->getNumlogiquedusysaccept()));
$sql->bindValue(21, rtrim($enregistrementOk->getNumdetransacgenparlesysccept()));
$sql->bindValue(22, rtrim($enregistrementOk->getNumderemise()));
$sql->bindValue(23, rtrim($enregistrementOk->getModedelecturedunumeroporteur()));
$sql->bindValue(24, rtrim($enregistrementOk->getNumautorisationunetransac()));
$sql->bindValue(25, rtrim($enregistrementOk->getCodeforcage()));
$sql->bindValue(26, rtrim($enregistrementOk->getMontantdelatransac()));
$sql->bindValue(27, rtrim($enregistrementOk->getCodealphadeladev()));
$sql->bindValue(28, rtrim($enregistrementOk->getPartiefracdeladev()));
$sql->bindValue(29, rtrim($enregistrementOk->getMontantunetransacencontreval()));
$sql->bindValue(30, rtrim($enregistrementOk->getCodealphadeladevencontreval()));
$sql->bindValue(31, rtrim($enregistrementOk->getPartiefracdeladevencontreval()));
$sql->bindValue(32, rtrim($enregistrementOk->getMontantestime()));
$sql->bindValue(33, rtrim($enregistrementOk->getFormatpieddetickettransac()));
$sql->bindValue(34, rtrim($enregistrementOk->getAid()));
$sql->bindValue(35, rtrim($enregistrementOk->getLabell()));
$sql->execute();
}
$response = new Response('Valid enregistrement OK!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid enregistrement OK!', 406);
return $response;
}
public function insertEnregistrementKo ($_format)
{
// create the serializer
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
// build the Commande from a decoded array
$enregistrementKo = $serializer->deserialize ($request->getContent(),
'App\Entity\BDPolymorph\EnregistrementOk',
$_format);
if ($enregistrementKo)
{
$validator = $this->get('validator');
if (0 === count($validator->validate($enregistrementKo)))
{
// this is a valid Commande instance, persist it
$entityManager = $this->getDoctrine()->getManager('polymorph');
// $query = $entityManager->createQuery(
// 'SELECT e FROM NetBaseEntitiesDBBundle:EnregistrementKo e WHERE e.idCommande = :ID_COMMANDE AND e.idTerminal = :ID_TERMINAL AND e.idTransaction = :ID_TRANSACTION'
// )->setParameter('ID_COMMANDE', $enregistrementKo->getIdCommande())
// ->setParameter('ID_TERMINAL', $enregistrementKo->getIdTerminal())
// ->setParameter('ID_TRANSACTION', $enregistrementKo->getIdTransaction());
// $enregistrementKoExists = $query->getResult();
// if($enregistrementKoExists == null)
// {
// $entityManager->persist($enregistrementKo);
// $entityManager->flush();
// $query = $entityManager->createQuery(
// 'SELECT tcb FROM NetBaseEntitiesDBBundle:TerminalCb tcb
// WHERE tcb.idTerminal = :ID_TERMINAL
// AND tcb.cbLib = :CB_LIB'
// )->setParameter('ID_TERMINAL', $enregistrementKo->getIdTerminal())
// ->setParameter('CB_LIB', $enregistrementKo->getLabell());
// $tcb = $query->getSingleResult();
// if ($tcb == null) {
// $tcb = new TerminalCb();
// $tcb->setIdTerminal($enregistrementKo->getIdTerminal());
// $tcb->setCbLib($enregistrementKo->getLabell());
// $entityManager->persist($tcb);
// $entityManager->flush();
// }
// }
$entityManager->persist($enregistrementKo);
$tcb = new TerminalCb();
$tcb->setIdTerminal($enregistrementKo->getIdTerminal());
$tcb->setCbLib($enregistrementKo->getLabell());
$entityManager->merge($tcb);
$entityManager->flush();
$response = new Response('Valid enregistrement KO!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid enregistrement KO!', 406);
return $response;
}
public function insertUser($_format)
{
// create the serializer
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
// build the Commande from a decoded array
$user = $serializer->deserialize ($request->getContent(),
'App\Entity\BDPolymorph\Users',
$_format);
if ($user)
{
if (0 === count($validator->validate($user)))
{
// this is a valid Commande instance, persist it
$entityManager = $this->getDoctrine()->getManager('polymorph');
$query = $entityManager->createQuery(
'SELECT u FROM App\Entity\BDPolymorph\Users u WHERE u.idUser = :ID_USER AND u.idTerminal = :ID_TERMINAL'
)->setParameter('ID_USER', $user->getIdUser())
->setParameter('ID_TERMINAL', $user->getIdTerminal());
$userExists = $query->getResult();
if($userExists == null)
{
if ($user->getDepartement() == '')
$user->setDepartement('00');
if ($user->getIdPays() == 0)
$user->setIdPays(0);
if ($user->getPlaque() == '')
$user->setPlaque('');
if ($user->getInformations() == null)
$user->setInformations('');
//SH 2023.03.29 suite erreur BD n'accepte pas les dates avant 1970.01.01 datetime a partir de cette dernière date
if ((date_format($user->getDateCloture(),"Y/m/d H:i:s")=='1900/01/01 00:00:00') or (date_format($user->getDateCloture(),"Y/m/d H:i:s")=='1899/12/30 00:00:00') )
$user->setDateCloture('1970-01-02 00:00:00');
//return new Response (var_dump($user));
$con = $this->getDoctrine()->getConnection('polymorph');
$sql = $con->prepare("INSERT INTO users (`ID_USER`, `ID_TERMINAL`, `ID_ZONE`, `CODE_ACCES`, `NOM`, `DATE_DEB`, `ID_ETAT`, `ID_TYPE_USER`, `ID_PRESENCE_USER`, `DATE_CLOTURE`, `DEPARTEMENT`, `PLAQUE`, `ID_PAYS`, `INFORMATIONS`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? , ? , ? , ?)");
$sql->bindValue(1, $user->getIdUser());
$sql->bindValue(2, $user->getIdTerminal());
$sql->bindValue(3, $user->getIdZone());
$sql->bindValue(4, $user->getCodeAcces());
$sql->bindValue(5, $user->getNom());
$sql->bindValue(6, date_format($user->getDateDeb(),"Y/m/d H:i:s")) ;
$sql->bindValue(7, $user->getIdEtat());
$sql->bindValue(8, $user->getIdTypeUser());
$sql->bindValue(9, $user->getIdPresenceUser());
$sql->bindValue(10, date_format($user->getDateCloture(),"Y/m/d H:i:s"));
$sql->bindValue(11, $user->getDepartement());
$sql->bindValue(12, $user->getPlaque());
$sql->bindValue(13, $user->getIdPays());
$sql->bindValue(14, $user->getInformations());
$sql->execute();
}
$response = new Response('Valid user!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid user!', 406);
return $response;
}
public function insertEtat($_format)
{
$request = $this->requestStack->getCurrentRequest();
$xml = $request->getContent();
// $this->ecrire_log($xml);
//return new Response (var_dump($xml));
$xml = simplexml_load_string($xml);
$json = json_encode($xml);
$doc = json_decode($json,TRUE);
//return new response (var_dump($doc['Erreurs']), 201);
//return new Response (var_dump($doc['Erreurs']));
$in = array();
$erreurs = $doc['Erreurs'];
if ( is_array($erreurs))
foreach ($erreurs as $erreur) {
array_push($in, $erreur);
}
else array_push($in, $erreurs);
if (isset($in)) {
//$in = $in . ')';
$idTerminal = $doc['idTerminal'];
$this->majAdresseIp($idTerminal);
//$this->ecrire_log('idTerminal : '.$idTerminal.' / IP : '.$_SERVER["REMOTE_ADDR"]);
//return new response ($in . ' ' . $idTerminal, 201);
$entityManager = $this->getDoctrine()->getManager();
$repository = $entityManager->getRepository('App\Entity\BDDG\TerminalErreur');
$erreurs = $repository->findBy(array('idTerminal' => $idTerminal));
$dateRemontee = new \DateTime('now');
//return new Response (var_dump($erreurs));
// mise à jour des erreur en base
foreach ($erreurs as $erreur) {
if (in_array($erreur->getIdErreur(), $in)) {
// l'erreur en base existe, on met à jour
$erreur->setDateRemontee($dateRemontee);
}
else {
// l'erreur en base n'existe plus, on l'efface
$entityManager->remove($erreur);
}
}
$entityManager->flush();
// Ajout des erreurs qui n'existaient pas en base
foreach ($in as $idErreur) {
$erreur = $repository->findBy(array('idTerminal' => $idTerminal, 'idErreur' => $idErreur));
if (!$erreur) {
$erreur = new TerminalErreur();
$erreur->setIdTerminal($idTerminal);
$erreur->setIdErreur($idErreur);
$erreur->setDateRemontee($dateRemontee);
$erreur->setVisibilite(1);
$entityManager->persist($erreur);
}
//SH 2024.01.18 gestion terminal composant
if(!(($idErreur>19) && ($idErreur<50) ))
{
$tpe=array(1,2,3,4,5,6,50);
$imp=array(7,8,9,10,51);
$voie=array(11,12,13,14,52);
$digi=array(15,16,17,18,53);
$idComposant=0;
if( in_array($idErreur,$tpe)) $idComposant=1;
else if( in_array($idErreur,$imp)) $idComposant=2;
else if( in_array($idErreur,$voie)) $idComposant=3;
else if( in_array($idErreur,$digi)) $idComposant=4;
$repComposant=$entityManager->getRepository('App\Entity\BDDG\TerminalComposant');
$etatErreur=$repComposant->findOneBy(array('idTerminal' => $idTerminal, 'idComposant' => $idComposant));
//return new Response (var_dump($idErreur));
if (!$etatErreur) {
$etatErreur = new TerminalComposant();
$etatErreur->setIdTerminal($idTerminal);
$etatErreur->setIdComposant($idComposant);
}
//$dateRemontee = new \DateTime('now');
$etatErreur->setDateRemontee($dateRemontee);
$etatErreur->setEtatErreur($idErreur);
//return new Response (var_dump($etatErreur));
$entityManager->persist($etatErreur);
$entityManager->flush();
}
//fin SH
}
$entityManager->flush();
//$con = $this->getDoctrine()->getConnection();
//$sql = $con->prepare("Delete from Terminal_Erreur where id_terminal = : idTerminal and id_Erreur not in " . $in);
//$sql->bindValue('idTerminal', $idTerminal);
//$sql->execute();
}
else return new response ('KO', 201);
return new response ('OK', 201);
}
public function majAdresseIp($idTerminal)
{
// ML
try {
$request = $this->requestStack->getCurrentRequest();
$newIp = $request->getClientIp();
$entityManager = $this->getDoctrine()->getManager();
$repository = $this->getDoctrine()->getRepository('App\Entity\BDDG\Terminal');
$terminal = $repository->findOneBy(array('idTerminal' => $idTerminal));
//return new Response (var_dump($terminal));
if ($terminal != null) {
$oldIp = $terminal->getIp();
$majIp = false;
if ($oldIp == null)
$majIp = true;
elseif ($oldIp != $newIp && preg_match('#^([0-9]{1,3}\.){3}[0-9]{1,3}$#', $oldIp))
$majIp = true;
if ($majIp) {
$terminal->setIp($newIp);
$entityManager->persist($terminal);
$entityManager->flush();
}
}
}
catch(\ErrorException $e) {
}
// end ML
}
public function insertTelecollecte ($_format)
{
// create the serializer
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
// build the Commande from a decoded array
$telecollecte = $serializer->deserialize ($request->getContent(),
'App\Entity\BDPolymorph\Telecollecte',
$_format);
//return new Response (var_dump($telecollecte));
if ($telecollecte)
{
if (0 === count($validator->validate($telecollecte)))
{
// this is a valid Telecollecte instance, persist it
$entityManager = $this->getDoctrine()->getManager('polymorph');
// $query = $entityManager->createQuery(
// 'SELECT t FROM NetBaseEntitiesDBBundle:Telecollecte t WHERE t.idTerminal = :ID_TERMINAL AND t.datelocaleuneapplication = :DATELOCALEUNEAPPLICATION AND t.heurelocaleuneapplication = :HEURELOCALEUNEAPPLICATION'
// )->setParameter('ID_TERMINAL', $telecollecte->getIdTerminal())
// ->setParameter('DATELOCALEUNEAPPLICATION', $telecollecte->getDatelocaleuneapplication())
// ->setParameter('HEURELOCALEUNEAPPLICATION', $telecollecte->getHeurelocaleuneapplication());
// $telecollecteExists = $query->getResult();
// if($telecollecteExists == null) {
// //INSERT
// $entityManager->persist($telecollecte);
// $entityManager->flush();
// }
// else {
// //UPDATE
// $telecollecteExists[0]->setLg($telecollecte->getLg());
// $telecollecteExists[0]->setCr($telecollecte->getCr());
// $telecollecteExists[0]->setCodesousfct($telecollecte->getCodesousfct());
// $telecollecteExists[0]->setNbapp($telecollecte->getNbapp());
// $telecollecteExists[0]->setLibelle($telecollecte->getLibelle());
// $telecollecteExists[0]->setCr2($telecollecte->getCr2());
// $telecollecteExists[0]->setLg2($telecollecte->getLg2());
// $telecollecteExists[0]->setFormatenteteticketcompterendu($telecollecte->getFormatenteteticketcompterendu());
// $telecollecteExists[0]->setNcontratidentifiantaccepteur($telecollecte->getNcontratidentifiantaccepteur());
// $telecollecteExists[0]->setNsiret($telecollecte->getNsiret());
// $telecollecteExists[0]->setTypeactivitecommerciale($telecollecte->getTypeactivitecommerciale());
// $telecollecteExists[0]->setTypepaiement($telecollecte->getTypepaiement());
// $telecollecteExists[0]->setTypedesite($telecollecte->getTypedesite());
// $telecollecteExists[0]->setNlogiquesystemeacceptation($telecollecte->getNlogiquesystemeacceptation());
// $telecollecteExists[0]->setLibellereponse($telecollecte->getLibellereponse());
// $telecollecteExists[0]->setFormatpiedticketcompterendu($telecollecte->getFormatpiedticketcompterendu());
// $telecollecteExists[0]->setNbrem($telecollecte->getNbrem());
// $telecollecteExists[0]->setIsEnvoyerNb($telecollecte->getIsEnvoyerNb());
// $entityManager->persist($telecollecteExists [0]);
// $entityManager->flush();
// }
$entityManager->merge($telecollecte);
$entityManager->flush();
$response = new Response('Valid telecollecte!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid telecollecte!', 406);
return $response;
}
public function insertInfoRemise ($_format)
{
// create the serializer
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
// build the Commande from a decoded array
$infoRemise = $serializer->deserialize ($request->getContent(),
'App\Entity\BDPolymorph\InfoRemise',
$_format);
// return new Response (var_dump($infoRemise));
if ($infoRemise)
{
// ML 2017.06.12 : test traça ip 62.193.56.46
/*
try
{
$path = "../../testML.txt";
$myfile = fopen($path, "a");
fwrite($myfile, $infoRemise->getIdTerminal()."\r\n");
fclose($myfile);
//$this->majAdresseIp($infoRemise->getIdTerminal());
}
catch (\Exception $e)
{
}
*/
$idTerminal=$infoRemise->getIdTerminal();
$idRemise=$infoRemise->getIdRemise();
$date=$infoRemise->getDatelocaleuneapplication();
$heure=$infoRemise->getHeurelocaleuneapplication();
if (0 === count($validator->validate($infoRemise)))
{
// this is a valid Telecollecte instance, persist it
$entityManager = $this->getDoctrine()->getManager('polymorph');
/* $infoData = new InfoRemise();
$infoData->setNseqacquereuruneremisetransac($infoRemise->getNseqacquereuruneremisetransac());
$infoData->setNremise($infoRemise->getNremise());
$infoData->setNombretransactionsdebitremise($infoRemise->getNombretransactionsdebitremise());
$infoData->setCodealphabetiquemonnaiedevise($infoRemise->getCodealphabetiquemonnaiedevise());
$infoData->setMontanttottransacdebitremise($infoRemise->getMontanttottransacdebitremise());
$infoData->setPartiefracmonnaiedevise($infoRemise->getPartiefracmonnaiedevise());
$infoData->setNombretransactionsnonabouties($infoRemise->getNombretransactionsnonabouties());
$entityManager->flush();
$infoData->setNremise($idTerminal);
$infoData->setNremise($idRemise);
$infoData->setNremise($date);
$infoData->setNremise($heure);
return new Response (var_dump($infoData));
$entityManager->persist($infoRemise);
$entityManager->flush();*/
$query = $entityManager->createQuery(
'SELECT i FROM App\Entity\BDPolymorph\InfoRemise i WHERE i.idTerminal = :ID_TERMINAL AND i.idRemise = :ID_REMISE AND i.datelocaleuneapplication = :DATELOCALEUNEAPPLICATION AND i.heurelocaleuneapplication = :HEURELOCALEUNEAPPLICATION'
)->setParameter('ID_TERMINAL', $infoRemise->getIdTerminal())
->setParameter('ID_REMISE', $infoRemise->getIdRemise())
->setParameter('DATELOCALEUNEAPPLICATION', $infoRemise->getDatelocaleuneapplication())
->setParameter('HEURELOCALEUNEAPPLICATION', $infoRemise->getHeurelocaleuneapplication());
$infoRemiseExists = $query->getResult();
if($infoRemiseExists == null) {
//INSERT
/*$entityManager->persist($infoRemise);
$entityManager->flush();*/
$con = $this->getDoctrine()->getConnection('polymorph');
$sql = $con->prepare("INSERT INTO info_remise (ID_TERMINAL, DATE_HEURE, ID_REMISE, DATELOCALEUNEAPPLICATION, HEURELOCALEUNEAPPLICATION, NSEQACQUEREURUNEREMISETRANSAC, NREMISE, NOMBRETRANSACTIONSDEBITREMISE, CODEALPHABETIQUEMONNAIEDEVISE, MONTANTTOTTRANSACDEBITREMISE, PARTIEFRACMONNAIEDEVISE, NOMBRETRANSACTIONSNONABOUTIES) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? , ? )");
$sql->bindValue(1, $infoRemise->getIdTerminal());
$sql->bindValue(2, $infoRemise->getDateHeure());
$sql->bindValue(3, $infoRemise->getIdRemise());
$sql->bindValue(4, $infoRemise->getDatelocaleuneapplication());
$sql->bindValue(5, $infoRemise->getHeurelocaleuneapplication());
$sql->bindValue(6, $infoRemise->getNseqacquereuruneremisetransac()) ;
$sql->bindValue(7, $infoRemise->getNremise());
$sql->bindValue(8, $infoRemise->getNombretransactionsdebitremise());
$sql->bindValue(9, $infoRemise->getCodealphabetiquemonnaiedevise());
$sql->bindValue(10, $infoRemise->getMontanttottransacdebitremise());
$sql->bindValue(11, $infoRemise->getPartiefracmonnaiedevise());
$sql->bindValue(12, $infoRemise->getNombretransactionsnonabouties());
$sql->execute();
}
// else {
// //UPDATE
// $infoRemiseExists[0]->setNseqacquereuruneremisetransac($infoRemise->getNseqacquereuruneremisetransac());
// $infoRemiseExists[0]->setNremise($infoRemise->getNremise());
// $infoRemiseExists[0]->setNombretransactionsdebitremise($infoRemise->getNombretransactionsdebitremise());
// $infoRemiseExists[0]->setCodealphabetiquemonnaiedevise($infoRemise->getCodealphabetiquemonnaiedevise());
// $infoRemiseExists[0]->setMontanttottransacdebitremise($infoRemise->getMontanttottransacdebitremise());
// $infoRemiseExists[0]->setPartiefracmonnaiedevise($infoRemise->getPartiefracmonnaiedevise());
// $infoRemiseExists[0]->setNombretransactionsnonabouties($infoRemise->getNombretransactionsnonabouties());
// $entityManager->persist($infoRemiseExists [0]);
// $entityManager->flush();
// }
//$entityManager->persist($infoRemise);
//$entityManager->flush();
$response = new Response('Valid info remise!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid info remise!', 406);
return $response;
}
public function insertTarifs ($_format)
{
// create the serializer
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
// build the Commande from a decoded array
$tarifs = $serializer->deserialize ($request->getContent(),
'App\Entity\BDDG\Tarifs',
$_format);
//return new Response (var_dump($tarifs));
if ($tarifs)
{
//$validator = $this->get('validator');
if (0 === count($validator->validate($tarifs)))
{
// this is a valid Telecollecte instance, persist it
if ($tarifs->getService()==null)
{
$repository = $this->getDoctrine()->getRepository('App\Entity\BDDG\TerminalService');
$service = $repository->findOneBy(array('idTerminal' => $tarifs->getIdTerminal() , 'idService' => $tarifs->getIdService()));
//return new Response (var_dump($service));
$tarifs->setService($service);
//return new Response (var_dump($tarifs));
}
$entityManager = $this->getDoctrine()->getManager();
$entityManager->merge($tarifs);
$entityManager->flush();
$response = new Response('Valid tarifs!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid tarifs!', 406);
return $response;
}
public function insertTarif ($_format)
{
// create the serializer
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
// build the Commande from a decoded array
$tarif = $serializer->deserialize ($request->getContent(),
'App\Entity\BDDG\Tarif',
$_format);
//return new Response (var_dump($tarif));
if ($tarif)
{
//$validator = $this->get('validator');
if (0 === count($validator->validate($tarif)))
{
// this is a valid Telecollecte instance, persist it
/*
if ($tarif->getTarifs()==null)
{
$repository = $this->getDoctrine()->getRepository('App\Entity\BDDG\Tarifs');
//return new Response (var_dump($repository));
$tarifs = $repository->findBy(array('idTerminal' => $tarif->getIdTerminal() , 'idZone'=> $tarif->getIdZone() , 'idService' => $tarif->getIdService(), 'idTarifs' => $tarif->getIdTarifs() ));
return new Response (var_dump($tarifs));
//$tarif->setTarifs($tarifs);
//return new Response (var_dump($tarif));
}
$entityManager = $this->getDoctrine()->getManager();
$entityManager->merge($tarif);
$entityManager->flush(); */
$entityManager = $this->getDoctrine()->getManager();
$query = $entityManager->createQuery(
'SELECT t FROM App\Entity\BDDG\Tarif t WHERE t.idTarif = :ID_TARIF AND t.idTarifs = :ID_TARIFS AND t.idTerminal = :ID_TERMINAL AND t.idZone = :ID_ZONE AND t.idService = :ID_SERVICE'
)->setParameter('ID_TARIF', $tarif->getIdTarif())
->setParameter('ID_TARIFS', $tarif->getIdTarifs())
->setParameter('ID_TERMINAL', $tarif->getIdTerminal())
->setParameter('ID_ZONE', $tarif->getIdZone())
->setParameter('ID_SERVICE', $tarif->getIdService());
$tarifExists = $query->getResult();
if($tarifExists == null) {
$con = $this->getDoctrine()->getConnection();
$sql = $con->prepare("insert into tarif (ID_TARIF, ID_TARIFS, ID_TERMINAL, ID_ZONE, ID_SERVICE ,DEVISE ) values (?, ?, ?, ? , ?, ?)");
$sql->bindValue(1, $tarif->getIdTarif());
$sql->bindValue(2, $tarif->getIdTarifs());
$sql->bindValue(3, $tarif->getIdTerminal());
$sql->bindValue(4, $tarif->getIdZone());
$sql->bindValue(5, $tarif->getIdService());
$sql->bindValue(6, $tarif->getDevise());
$sql->execute();
}
else {
//UPDATE
$tarifExists[0]->setDevise($tarif->getDevise());
$entityManager->persist($tarifExists [0]);
$entityManager->flush();
}
$response = new Response('Valid tarif!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid tarif!', 406);
return $response;
}
public function insertPeriode ($_format)
{
// create the serializer
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
// build the Commande from a decoded array
$periode = $serializer->deserialize ($request->getContent(),
'App\Entity\BDDG\Periode',
$_format);
//return new Response (var_dump($periode));
if ($periode)
{
//$validator = $this->get('validator');
if (0 === count($validator->validate($periode)))
{
// this is a valid Telecollecte instance, persist it
/*$entityManager = $this->getDoctrine()->getManager();
$entityManager->merge($periode);
$entityManager->flush();*/
$entityManager = $this->getDoctrine()->getManager();
$query = $entityManager->createQuery(
'SELECT p FROM App\Entity\BDDG\Periode p WHERE p.idPeriode = :ID_PERIODE AND p.idTarif = :ID_TARIF AND p.idTarifs = :ID_TARIFS AND p.idTerminal = :ID_TERMINAL AND p.idZone = :ID_ZONE AND p.idService = :ID_SERVICE'
)->setParameter('ID_PERIODE', $periode->getIdPeriode())
->setParameter('ID_TARIF', $periode->getIdTarif())
->setParameter('ID_TARIFS', $periode->getIdTarifs())
->setParameter('ID_TERMINAL', $periode->getIdTerminal())
->setParameter('ID_ZONE', $periode->getIdZone())
->setParameter('ID_SERVICE', $periode->getIdService());
$periodeExists = $query->getResult();
if($periodeExists == null) {
// //INSERT
// $entityManager->persist($periode);
//$entityManager->flush();
$con = $this->getDoctrine()->getConnection();
$sql = $con->prepare("insert into periode (ID_PERIODE , ID_TARIF, ID_TARIFS, ID_TERMINAL, ID_ZONE, ID_SERVICE ,DATE_DEB , DATE_FIN , NOM , QTE , UNITE , QTE_UNITAIRE , PRIX ) values (?, ?, ?, ? , ?, ? , ?, ?, ?, ? , ?, ? , ?)");
$sql->bindValue(1, $periode->getIdPeriode());
$sql->bindValue(2, $periode->getIdTarif());
$sql->bindValue(3, $periode->getIdTarifs());
$sql->bindValue(4, $periode->getIdTerminal());
$sql->bindValue(5, $periode->getIdZone());
$sql->bindValue(6, $periode->getIdService());
$sql->bindValue(7, $periode->getDateDeb());
$sql->bindValue(8, $periode->getDateFin());
$sql->bindValue(9, $periode->getNom());
$sql->bindValue(10, $periode->getQte());
$sql->bindValue(11, $periode->getUnite());
$sql->bindValue(12, $periode->getQteUnitaire());
$sql->bindValue(13, $periode->getPrix());
$sql->execute();
/*$Addperiode = new Periode();
$Addperiode->setIdPeriode($periode->getIdPeriode());
$Addperiode->setIdTarif($periode->getIdTarif());
$Addperiode->setIdTarifs($periode->getIdTarifs());
$Addperiode->setIdTerminal($periode->getIdTerminal());
$Addperiode->setIdZone($periode->getIdZone());
$Addperiode->setIdService($periode->getIdService());
$Addperiode->setDateDeb($periode->getDateDeb());
$Addperiode->setDateFin($periode->getDateFin());
$Addperiode->setNom($periode->getNom());
$Addperiode->setQte($periode->getQte());
$Addperiode->setUnite($periode->getUnite());
$Addperiode->setQteUnitaire($periode->getQteUnitaire());
$Addperiode->setPrix($periode->getPrix());
$entityManager->persist($Addperiode);
$entityManager->flush();*/
//return new Response (var_dump($Addperiode ));
}
else {
//UPDATE
$periodeExists[0]->setDateDeb($periode->getDateDeb());
$periodeExists[0]->setDateFin($periode->getDateFin());
$periodeExists[0]->setNom($periode->getNom());
$periodeExists[0]->setQte($periode->getQte());
$periodeExists[0]->setUnite($periode->getUnite());
$periodeExists[0]->setQteUnitaire($periode->getQteUnitaire());
$periodeExists[0]->setPrix($periode->getPrix());
$entityManager->persist($periodeExists[0]);
$entityManager->flush();
}
$response = new Response('Valid periode!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid periode!', 406);
return $response;
}
//fin SH
//SH 2023.12.06 gestion et activation des logs pour conques
public function insertLog($_format)
{
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$validator = Validation::createValidator();
$request = $this->requestStack->getCurrentRequest();
// build the Commande from a decoded array
$log = $serializer->deserialize ($request->getContent(),
'App\Entity\BDPolymorph\Log',
$_format);
if ($log)
{
if (0 === count($validator->validate($log)))
{
// this is a valid Telecollecte instance, persist it
//$entityManager = $this->getDoctrine()->getEntityManager();
$entityManager = $this->getDoctrine()->getManager('polymorph');
// $query = $entityManager->createQuery(
// 'SELECT l FROM NetBaseEntitiesDBBundle:Log l WHERE l.idLog = :ID_LOG AND l.idTerminal = :ID_TERMINAL'
// )->setParameter('ID_LOG', $log->getIdLog())
// ->setParameter('ID_TERMINAL', $log->getIdTerminal());
// $logExists = $query->getResult();
// if($logExists == null) {
// //INSERT
// $entityManager->persist($log);
// $entityManager->flush();
// }
// ML 2017.03.17 : recherche et masquage du code urbaflux 0518
$log->setLibelleLog(str_replace("0518","----",$log->getLibelleLog()));
// end ML
$entityManager->merge($log);
$entityManager->flush();
$response = new Response('Valid log!', 201);
return $response;
}
}
// something went wrong
$response = new Response('Invalid log!', 406);
return $response;
}
//fin SH
//SH 2023.03.29
public function updatePeriode ($_format)
{
$request = $this->requestStack->getCurrentRequest();
$jsonContent = json_decode($request->getContent(),true);
//return new Response (var_dump($jsonContent['idTerminal']));
$periode = null ;
$repository = $this->getDoctrine()->getRepository('App\Entity\BDDG\Periode');
$periode = $repository->findOneBy(array('idTerminal' => $jsonContent['idTerminal'] ,
'idZone' => $jsonContent['idZone'] ,
'idService' => $jsonContent['idService'] ,
'idTarif' => $jsonContent['idTarif'] ,
'idPeriode' => $jsonContent['idPeriode']
));
if($periode != null)
{
$entityManager = $this->getDoctrine()->getManager();
$periode->setPrix($jsonContent['prix']);
//return new Response (var_dump($periode));
$entityManager->persist($periode);
$entityManager->flush();
$response = new Response('update OK!', 201);
}
else $response = new Response('Update KO!', 406);
return $response;
}
//fin SH
//SH 2021.01.22 envoi du info terminal vers serveur statos
private function XmlHttp($url,$xmldata)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $xmldata);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
//fin SH
public function insertEtatComposant ($_format)
{
$request = $this->requestStack->getCurrentRequest();
$jsonContent = json_decode($request->getContent(),true);
//return new Response (var_dump($jsonContent));
$con= $this->getDoctrine()->getConnection();
/*$sql = $con->prepare("SELECT tc.ID_TERMINAL, tc.DATE_REMONTEE , te.LIBELLE_ERREUR , te.COLOR
FROM `terminal_composant` tc , type_erreur te , terminal_client c
where te.ID_ERREUR=tc.etat_erreur and tc.ID_TERMINAL=c.ID_TERMINAL and c.ID_CLIENT=?");*/
$sql = $con->prepare("SELECT *
FROM `terminal_composant` tc
where tc.ID_TERMINAL=? and tc.ID_COMPOSANT=? LIMIT 1");
$sql->bindValue(1, $jsonContent['idTerminal']);
$sql->bindValue(2, $jsonContent['idComposant']);
$sql->execute();
$etat = $sql->fetch();
$reponse = new Response('KO !', 406);
if($etat)
{
$sql = $con->prepare("update terminal_composant set ETAT_ERREUR=? , ETAT_COMPOSANT=? where ID_TERMINAL=? and ID_COMPOSANT=?");
$sql->bindValue(1, $jsonContent['etatErreur']);
$sql->bindValue(2, $jsonContent['etatComposant']);
$sql->bindValue(3, $jsonContent['idTerminal']);
$sql->bindValue(4, $jsonContent['idComposant']);
$sql->execute();
$response = new Response('Update etat !', 201);
}
else
{
$sql = $con->prepare("insert into terminal_composant (ID_TERMINAL, ID_COMPOSANT, ETAT_ERREUR , ETAT_COMPOSANT) values (?, ?,?,?)");
$sql->bindValue(1, $jsonContent['idTerminal']);
$sql->bindValue(2, $jsonContent['idComposant']);
$sql->bindValue(3, $jsonContent['etatErreur']);
$sql->bindValue(4, $jsonContent['etatComposant']);
$sql->execute();
$response = new Response('Insert etat !', 201);
}
return $response ;
}
//SH 2024.10.2024 sauvegarder conso
public function saveConsoElec()
{
$request = $this->requestStack->getCurrentRequest();
$data = $request->request->all();
//return new Response (var_dump(count($data)));
//$data = json_decode($request->getContent(), true);
// Enregistrement des données dans un fichier
if ((isset($data['idTerm'])) and (count($data)==5))
{
$dateActuelle = new \DateTime();
$data['dateConso'] = $dateActuelle->format('Y-m-d H:i:s');
//return new Response (var_dump($data));
file_put_contents('/var/www/public/info/conso.txt', json_encode($data) . PHP_EOL, FILE_APPEND);
return $this->json([
'Result' => true ,
'Message' => 'Success'
]);
}
return $this->json([
'Result' => false ,
'Message' => 'invalid format'
]);
}
public function showConsoElec()
{
$file = new Filesystem();
$file = '/var/www/public/info/conso.txt';
$dataFile=file_get_contents($file);
$lignes = explode("\n", $dataFile);
$infoConso =null;
for($i=0;$i<count($lignes)-1;$i++)
{
$infoConso[$i] = json_decode($lignes[$i], true);
}
//return new Response (var_dump($infoConso));
return $this->render('StatistiquesBundle/listeConso.html.twig', array('infoConso'=>$infoConso));
return $this->json([
'Result' => true ,
'Message' => 'Success'
]);
}
public function actionRAZ()
{
$server = '192.168.1.22';
$port=1883;
$clientId='api_isipay';
$client = new ClientMQTT($server,$port, $clientId);
$client->setAuthDetails("urbaflux", "BJdYM#t8ucvN?yZMu");
$client->setParamServer($server,$port, $clientId);
$result = $client->connect();
//return new Response(var_dump($result));
$result = $client->publish('9999/in/RAZ' ,'AYB_RAF' , 0);
$client->close();
sleep(5);
return $this->redirect('showConso');
}
//fin SH
/**
* @Route("/send-email-photo", name="send_email")
*/
public function alerteStatosPhoto(MailService $mailService)
{
//$mailService = $this->get('App\Services\MailService');
$to = ['s.handi@urbaflux.fr','handisoukaina@urbaflux.fr']; // Destinataire(s)
$template = 'emails/emailAlert.html.twig'; // Nom du template Twig
$subject = 'Votre sujet d\'email';
$context = [
'subject' => $subject,
'variable1' => 'value1',
'variable2' => 'value2',
// Autres variables à passer au template
];
$pjImages = [
'https://statos.netbase.fr/captures/AM_1015_place_1.jpeg', // Chemin absolu de l'image
'https://statos.netbase.fr/captures/AM_1015_place_1.jpeg',
];
//return new Response(var_dump($pjImages));
// Appeler le service pour envoyer l'email
$mailService->sendEmailPJ($to, $template, $subject, $context, $pjImages);
return new Response('Email envoyé avec succès!');
}
/**
* @Route("/envoiMailAlertUA", name="envoi_mail_alertUA" , methods={"POST"})
*/
public function envoiMailAlertUA(MailService $mailService)
{
$request = $this->requestStack->getCurrentRequest();
$content = $request->getContent();
if (!mb_check_encoding($content, 'UTF-8')) {
// Forcer l'encodage en UTF-8 si nécessaire
$content = mb_convert_encoding($content, 'UTF-8', 'ISO-8859-1');
}
$data = json_decode($content, true);
//return new Response(var_dump($data));
if (json_last_error() !== JSON_ERROR_NONE) {
return new JsonResponse(['error' => 'Invalid JSON'], 400);
}
$email_destinataires =str_replace("'", '"', $data['destinataires']) ?? null;
$nomTerminal = $data['nomTerminal'] ?? null;
$type = $data['type'] ?? null;
if(($email_destinataires != '') && ($email_destinataires!=null) )
{
//$jsonDest = str_replace("'", '"', $email_destinataires);
$to= explode(",", $email_destinataires);
$mailService->sendTemplatedEmail($to, 'emails/emailAlertUA.html.twig' ,'Notification Urbacces', $data);
return new Response('Notification envoyé avec succès!');
}
return new Response('Liste des destinataires vide');
}
/**
* @Route("/uploadImageIsipay", name="upload_image_isipay" , methods={"POST"})
*/
public function uploadImage()//: JsonResponse
{
$request = $this->requestStack->getCurrentRequest();
$identifiant = $request->request->get('identifiant');
if (!$identifiant) {
throw new BadRequestHttpException('Identifiant manquant.');
}
// Remote server details
$host = '192.168.1.38'; // Replace with your server's address
$username = 'root';
$password = 'Urb@tést!18570';
// Connect to the remote server using SFTP
//$sftp = new SFTP($host);
$sftp = new \phpseclib3\Net\SFTP($host);
if (!$sftp->login($username, $password)) {
throw new \Exception('Unable to connect to remote server using SFTP.');
}
$uploadDir = 'isipayImage/' . $identifiant;
// Verify if the directory exists on the remote server
if (!$sftp->is_dir($uploadDir)) {
// Directory doesn't exist, create it
if (!$sftp->mkdir($uploadDir)) {
throw new \Exception('Unable to create directory on remote server.');
}
} else {
// Directory exists, clear it by deleting files inside
$remoteFiles = $sftp->nlist($uploadDir);
foreach ($remoteFiles as $file) {
if ($file !== '.' && $file !== '..') {
$sftp->delete($uploadDir . '/' . $file);
}
}
}
// Handle file uploads
$uploadedFiles = [];
$imageUrls = [];
foreach ($request->files as $key => $uploadedFile) {
if ($uploadedFile instanceof UploadedFile) {
$newFilename = uniqid() . '.' . $uploadedFile->guessExtension();
$uploadedFilePath = $uploadDir . '/' . $newFilename;
// Move the file to the remote server
$sftp->put($uploadedFilePath, file_get_contents($uploadedFile->getPathname()));
// Store the file URL
$uploadedFiles[] = '/isipayImage/' . $identifiant . '/' . $newFilename;
}
}
// Handle remote image URLs if provided
$imagesDistantes = $request->request->get('images_distantes');
if ($imagesDistantes) {
$imageUrls = json_decode($imagesDistantes, true);
if (!is_array($imageUrls)) {
throw new BadRequestHttpException('Format des images distantes invalide.');
}
}
if (empty($uploadedFiles) && empty($imageUrls)) {
throw new BadRequestHttpException('Aucune image valide envoyée.');
}
return new JsonResponse([
'message' => 'Images bien reçues et stockées / référencées !',
'files' => $uploadedFiles,
'image_urls' => $imageUrls
], Response::HTTP_OK);
}
/*public function uploadImage()//: JsonResponse
{
$request = $this->requestStack->getCurrentRequest();
$identifiant = $request->request->get('identifiant');
//return new Response(var_dump($identifiant));
if (!$identifiant) {
throw new BadRequestHttpException('Identifiant manquant.');
}
$uploadDir = 'http://192.168.1.38/public/isipayImage/' . $identifiant;
// Vérifier si le dossier existe, sinon le créer
$filesystem = new Filesystem();
if (!$filesystem->exists($uploadDir)) {
$filesystem->mkdir($uploadDir, 0777);
} else {
return new Response(var_dump($uploadDir));
try {
$filesystem->remove(glob($uploadDir . '/*'));
} catch (\Exception $exception) {
throw new \Exception("Erreur lors de la suppression des anciens fichiers : " . $exception->getMessage());
}
}
$uploadedFiles = [];
$imageUrls = [];
foreach ($request->files as $key => $uploadedFile) {
if ($uploadedFile instanceof UploadedFile) {
$newFilename = uniqid() . '.' . $uploadedFile->guessExtension();
$uploadedFile->move($uploadDir, $newFilename);
$uploadedFiles[] = '/isipayImage/' . $identifiant . '/' . $newFilename;
}
}
$imagesDistantes = $request->request->get('images_distantes');
if ($imagesDistantes) {
$imageUrls = json_decode($imagesDistantes, true);
if (!is_array($imageUrls)) {
throw new BadRequestHttpException('Format des images distantes invalide.');
}
}
if (empty($uploadedFiles) && empty($imageUrls)) {
throw new BadRequestHttpException('Aucune image valide envoyée.');
}
return new JsonResponse([
'message' => 'Images bien reçues et stockées / référencées !',
'files' => $uploadedFiles,
'image_urls' => $imageUrls
], Response::HTTP_OK);
}*/
}