src/Controller/HomeController.php line 31

  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\Mailer\MailerInterface;
  8. use Symfony\Component\HttpFoundation\File\File;
  9. use Psr\Log\LoggerInterface;
  10. use App\Services\ControlParams;
  11. use App\Form\HomeClientCode;
  12. use App\Form\UploadType;
  13. class HomeController extends AbstractController
  14. {
  15.     
  16.     private $control;
  17.     private $logger;
  18.     public function __construct(LoggerInterface $loggerMailerInterface $mailerstring $apiKeystring $apiTokenstring $apiUrl)
  19.     {
  20.         $this->logger $logger;
  21.         $this->control = new ControlParams($logger$mailer$apiKey$apiToken$apiUrl);
  22.     }
  23.     
  24.     #[Route('/'methods: ['GET','POST'], name'app_home')]
  25.     public function index(Request $request): Response
  26.     {
  27.         $parameters = array();
  28.         $home_client_code = array();
  29.         // === +++ Controle +++ ===
  30.         $params $this->control->getParams($request);
  31.         // === +++ +++ ===
  32.         $form $this->createForm(HomeClientCode::class);
  33.         $form->handleRequest($request);
  34.         if ($form->isSubmitted() && $form->isValid()) {
  35.     
  36.             $home_client_code $params['home_client_code'];
  37.             $clientCode $form->get('clientCode')->getData();
  38.             $reference $form->get('reference')->getData();
  39.             $designation $form->get('designation')->getData();
  40.             $amount $form->get('amount')->getData();
  41.             // get clients infos from code
  42.             $clientsWeb $this->control->restApiPOSTcURL("admin/clientsWeb", [ 'clientCode' => $clientCode ]);
  43.             if ($clientsWeb!=null) {
  44.                 // create cbLinkToken
  45.                 $data = [
  46.                     "accountId" => $clientsWeb['accountId'],
  47.                     "serviceId" => $clientsWeb['serviceId'],
  48.                     "clientId" => $clientsWeb['clientId'],
  49.                     "clientCode" => $clientsWeb['clientCode'],
  50.                     "schedule" => 0,
  51.                     "amount" => $amount,
  52.                     "reference" => $reference,
  53.                     "designation" => $designation,
  54.                     "cbLinkType" => "paylink"
  55.                 ];
  56.             
  57.                 $cbLink $this->control->restApiPOSTcURL("cblink/lienCB"$data );
  58.                 if ($cbLink!=null) {
  59.                     // "cbLinkToken" => "81524c9b27685ebb"
  60.                     // "cbLinkURL" => "https://allo-carte.media-t-testing.ovh/paylink/81524c9b27685ebb"    
  61.                     // redirect vers payment controller
  62.                     return $this->redirectToRoute('app_payment', array('cbLinkToken' => $cbLink['cbLinkToken']));
  63.                 } else {
  64.                     $parameters['errorMessage'] = "Erreur -- liaison page paiement";
  65.                 }
  66.             
  67.             } else {
  68.                 $parameters['errorMessage'] = "Erreur -- Votre code client est inconnu";
  69.             }
  70.         }
  71.         
  72.         $parameters['form'] =  $form->createView();
  73.         $parameters['appliName'] = $this->getParameter('app.appliName');
  74.         $parameters['captchaSitekey'] = $this->getParameter('app.captchaSitekey');
  75.         $parameters['clientIp'] = $params['clientIp'];
  76.         return $this->render('home/index.html.twig'$parameters );
  77.     }
  78.     
  79.     #[Route('/certificateUpload/{cbLinkToken}'methods: ['GET','POST'], name'app_certificateUpload')]
  80.     public function certificateUpload(Request $request): Response
  81.     {        
  82.         $parameters = array();
  83.         $bankinglayer = array();
  84.         // === +++ Controle +++ ===
  85.         $params $this->control->getParams($request);
  86.         // === +++ +++ ===
  87.         if (isset($params['upload'])) {
  88.             $params['cbLinkToken'] = $params['upload']['cbLinkToken'];
  89.         }
  90.         //dd($params);
  91.         // ---
  92.         $lienCBToken $this->control->restApiPOSTcURL("cblink/lienCBToken", [ 'cbLinkToken' => $params['cbLinkToken'] ]);
  93.         if ($lienCBToken!=null) {
  94.             // "accountId" => 1004
  95.             // "serviceId" => 2726
  96.             // "cbLinkId" => 1
  97.             // "cbLinkDate" => "2022-10-08T14:57:57+02:00"
  98.             // "cbLinkType" => "certificateUpload"
  99.             // "transactionRef" => "NULL"
  100.             // "cbLinkToken" => "66c5261e15e00047"
  101.             // "cbLinkURL" => "https://allo-carte.media-t-testing.ovh/certificateUpload/66c5261e15e00047"            
  102.             $configInfos $this->control->restApiPOSTcURL("paramaters/ConfigurationPlateforme", [ 'accountId' => $lienCBToken['accountId'], 'serviceId' => $lienCBToken['serviceId'] ]);
  103.             if ($configInfos==null) {
  104.                 $result['uploadERR'][] = "Configuration une erreur s'est produite";
  105.                 $this->logger->debug$params['pathInfo'].': ConfigurationPlateforme :: errorMessage='$result);
  106.             }
  107.             if (isset($configInfos['paymentInfos'])) {
  108.                 $paymentInfos $configInfos['paymentInfos'];
  109.                 if (isset($paymentInfos['oonex']) && ($paymentInfos['oonex']['activer'])) {
  110.                     $bankinglayer $paymentInfos['oonex'];
  111.                     $certFile $bankinglayer['certFile'];
  112.                     $privateKeyFile $bankinglayer['privateKeyFile'];
  113.                     $lienCBToken['certFile'] = $bankinglayer['certFile'];
  114.                     $lienCBToken['privateKeyFile'] = $bankinglayer['privateKeyFile'];
  115.     
  116.                     $this->logger->debug($params['pathInfo'].': bankinglayer='$bankinglayer);
  117.                 } else {
  118.                     $result['uploadERR'][] = "payment 'oonex' non 'activer' ";
  119.                 }
  120.             } else {
  121.                 $result['uploadERR'][] = "payments non configurés ";
  122.             }
  123.             if (isset($result['uploadERR'])) {
  124.                 $QUERY base64_encodejson_encode($result) );
  125.                 return $this->redirectToRoute('app_uploadResult', array('jsonResult' => $QUERY));
  126.             }
  127.             $uploadForm $this->createForm(UploadType::class, $lienCBToken);
  128.             $uploadForm->handleRequest($request);
  129.             if ($uploadForm->isSubmitted() && $uploadForm->isValid()) {
  130.                 $upload $uploadForm->getData();
  131.                 $uploadCertFile $upload['formCertFile'];
  132.                 $uploadKeyFile $upload['formKeyFile'];
  133.                 // move to "vendor/certificates"
  134.                 try {
  135.                     $uploadCertFile->move$this->getParameter('app.uploadCertificatesDirectory'), $uploadCertFile->getClientOriginalName() );
  136.                 } catch( \Exception $e ) {
  137.                     $result['uploadERR'][] = "Erreur émission du fichier [$certFile], "$e->getMessage() ;
  138.                     $this->logger->debug$params['pathInfo'].': uploadCertFile->move($certFile) Exception ='$e->getMessage() );
  139.                 }
  140.                 try {
  141.                     $uploadKeyFile->move$this->getParameter('app.uploadCertificatesDirectory'), $uploadKeyFile->getClientOriginalName() );
  142.                 } catch( \Exception $e ) {
  143.                     $result['uploadERR'][] = "Erreur émission du fichier [$privateKeyFile], "$e->getMessage() ;
  144.                     $this->logger->debug$params['pathInfo'].': uploadCertFile->move($privateKeyFile) Exception ='$e->getMessage() );
  145.                 }
  146.                 $this->logger->debug($params['pathInfo']." : copie de certFile : "$uploadCertFile->getClientOriginalName()." et keyFile : "$uploadKeyFile->getClientOriginalName());
  147.                 $result['uploadOK'] = "La copie des certificats a été effectuée";
  148.                 $customTable json_encode($result);
  149.                 $QUERY base64_encode($customTable);
  150.                 return $this->redirectToRoute('app_uploadResult', array('jsonResult' => $QUERY));
  151.             } else {
  152.                 // afficher le formulaire
  153.                 $parameters['uploadForm'] = $uploadForm->createView();
  154.                 $parameters['certFile'] = $certFile;
  155.                 $parameters['privateKeyFile'] = $privateKeyFile;
  156.             }
  157.         } else {
  158.             // afficher le formulaire
  159.             $parameters['uploadERR'][] = "Erreur lienCBToken, ";
  160.         }
  161.         return $this->render('home/certificateUpload.html.twig'$parameters);
  162.     }
  163.     #[Route('/uploadResult/{jsonResult}'methods: ['GET'], name'app_uploadResult')]
  164.     public function uploadResult(Request $request): Response
  165.     {        
  166.         $parameters = array();
  167.         // === +++ Controle +++ ===
  168.         $params $this->control->getParams($request);
  169.         // === +++ +++ ===
  170.         $parameters json_decodebase64_decode($params['jsonResult']), true);
  171.         return $this->render('home/certificateUpload.html.twig'$parameters);
  172.     }
  173. }