src/Controller/CryptographeController.php line 422

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Cryptographe;
  4. use App\Form\CryptographeType;
  5. use App\Entity\Application;
  6. use App\Entity\CheckQr;
  7. use App\Entity\Device;
  8. use App\Entity\PersonAppIdentity;
  9. use App\Repository\CryptographeRepository;
  10. use App\Repository\PersonCivilRepository;
  11. use App\Repository\PersonRepository;
  12. use App\Repository\CheckQrRepository;
  13. use App\Repository\PersonAppIdentityRepository;
  14. use App\Repository\ApplicationRepository;
  15. use App\Repository\DeviceRepository;
  16. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\Response;
  19. use Symfony\Component\Routing\Annotation\Route;
  20. use Symfony\Component\Filesystem\Filesystem;
  21. use Psr\Container\ContainerInterface;
  22. use App\API\SqrApi as SqrApi;
  23. use App\API\Tech5DigitalApi as Tech5DigitalApi;
  24. use Symfony\Component\HttpFoundation\JsonResponse;
  25. use Symfony\Component\String\Slugger\SluggerInterface;
  26. use GuzzleHttp\Psr7;
  27. use GuzzleHttp\Exception\ClientException;
  28. /**
  29.  * @Route("/cryptographe")
  30.  */
  31. class CryptographeController extends AbstractController
  32. {
  33.     /**
  34.      * @Route("/", name="app_cryptographe_index", methods={"GET"})
  35.      */
  36.     public function index(CryptographeRepository $cryptographeRepository): Response
  37.     {
  38.         $cryptographe $cryptographeRepository->find(6);
  39.         //$ret = $this->createCryptographe($cryptographe);
  40.         //$ret = $this->createCryptographeWithLeftAndrightIndex($cryptographe);  
  41.         $ret $this->createCustomCryptographe();      
  42.         dump($ret);die;
  43.         return $this->render('cryptographe/index.html.twig', [
  44.             'cryptographes' => $cryptographeRepository->findAll(),
  45.         ]);
  46.     }
  47.     /**
  48.      * @Route("/new", name="app_cryptographe_new", methods={"GET", "POST"})
  49.      */
  50.     public function new(Request $requestCryptographeRepository $cryptographeRepository): Response
  51.     {
  52.         $cryptographe = new Cryptographe();
  53.         $form $this->createForm(CryptographeType::class, $cryptographe);
  54.         $form->handleRequest($request);
  55.         if ($form->isSubmitted() && $form->isValid()) {
  56.             $cryptographeRepository->add($cryptographetrue);
  57.             return $this->redirectToRoute('app_cryptographe_index', [], Response::HTTP_SEE_OTHER);
  58.         }
  59.         return $this->renderForm('cryptographe/new.html.twig', [
  60.             'cryptographe' => $cryptographe,
  61.             'form' => $form,
  62.         ]);
  63.     }
  64.     /**
  65.      * @Route("/read/online", name="app_cryptographe_read_online", methods={"GET", "POST"})
  66.      */
  67.     public function readOnline(Request $requestCryptographeRepository $cryptographeRepositoryContainerInterface $container): Response
  68.     {        
  69.         $cryptographeUuid $request->get("uuid");
  70.         if(!empty($cryptographeUuid))
  71.         {
  72.             $cryptoGraphe $cryptographeRepository->findOneBy(["cryptoUuid"=>$cryptographeUuid]);
  73.             if($cryptoGraphe)
  74.             {     /*           
  75.                 try 
  76.                 {   */            
  77.                     $api = new Tech5DigitalApi($container);    //DecodeCryptographe       ReadCryptographe       
  78.                     $cryptoRead $api->DecodeCryptographe($cryptoGraphe->getCryptoBase64());
  79.                     $return = array(
  80.                         'Etat' =>'SUCCESFULL' 
  81.                         'Message' =>"Cryptographe read succesfully !!!",
  82.                         'cryptographeData' =>$cryptoRead
  83.                     );
  84.                     /*
  85.                 } catch (\Throwable $th) 
  86.                 {
  87.                     $fs = new Filesystem();
  88.                     $fs->appendToFile('log/Cryptographe/Reader/'.date("Y")."/".date("d-m-Y").'/cryptoReaderLog.txt', "\r\n ".json_encode($th));
  89.                     $return = array(
  90.                         'Etat' =>'FAILED' , 
  91.                         'Message' =>"Une erreur est survenue lors de l'opération. Veuillez essayer ultérieurement SVP", 
  92.                         'error'=>json_encode($th),
  93.                     );
  94.                 }*/
  95.             }else
  96.             {
  97.                 $return = array(
  98.                     'Etat' =>'FAILED' 
  99.                     'Message' =>"La référence UUID ne correspond à aucun cryptographe..."
  100.                 );
  101.             }
  102.         }else
  103.         {
  104.             $return = array(
  105.                 'Etat' =>'FAILED' 
  106.                 'Message' =>"Paramètres requis manquants !!!"
  107.             );
  108.         }
  109.         
  110.        return new JsonResponse($return);        
  111.     }
  112.       /**
  113.      * @Route("/get/by/user", name="app_cryptographe_get_by_user_json", methods={"GET", "POST"})
  114.      */
  115.     public function getRecordsByUser(Request $requestCryptographeRepository $cryptographeRepository): Response
  116.     {        
  117.         $userRef $request->get("userRef");
  118.         if($userRef)
  119.         {
  120.             //$cryptographes = $cryptographeRepository->findBy(["savedBy"=>$userRef]);
  121.             //$cryptographes = $cryptographeRepository->findAll();
  122.             $cryptographes $cryptographeRepository->findByUserReference($userRef);
  123.             
  124.             $cryptographesTab = array();
  125.             if($cryptographes)
  126.             {
  127.                 foreach ($cryptographes as $key)
  128.                 {
  129.                    // dump($key);
  130.                     //dump($key->getCheckQr());
  131.                     //dump( $key->getCheckQr()->getPersonBiometrics());
  132.                     $cryptographesTab [] = 
  133.                     [
  134.                         'civility'=>$key->getCivility(),
  135.                         'firstName'=>$key->getFirstName(),
  136.                         'lastName'=>$key->getLastName(),
  137.                         'dateOfBirth'=>empty($key->getDateOfBirth()) ? null $key->getDateOfBirth()->format("d/m/Y"),
  138.                         'placeOfBirth'=>$key->getPlaceOfBirth(),
  139.                         'email'=>$key->getEmail(),
  140.                         'demog'=>$key->getDemog(),                    
  141.                         'phone'=>$key->getPhone(),                    
  142.                         'dateCreated'=>empty($key->getDateCreated()) ? null $key->getDateCreated()->format("d/m/Y H:i:s"),
  143.                         //'selfie_link'=>empty($key->getCheckQr()->getPersonBiometrics()) ? null : "uploads/kyvala/enrolment/".$key->getCheckQr()->getPersonBiometrics()[0]->getFace(),
  144.                         'signature_link'=>empty($key->getSignature()) ? null "uploads/kyvala/enrolment/".$key->getSignature(),
  145.                         'cryptoGrapheReference'=>$key->getCheckQr()->getNumero(),
  146.                         //'abisIdentificationJson'=>empty($key->getCheckQr()->getPersonBiometrics()) ? null : $key->getCheckQr()->getPersonBiometrics()[0]->getAbisIdentificationJson(),
  147.                         //'isEnrolled'=>empty($key->getCheckQr()->getPersonBiometrics()) ? null : $key->getCheckQr()->getPersonBiometrics()[0]->isIsEnrolled(),
  148.                         //'isDoublon'=>empty($key->getCheckQr()->getPersonBiometrics()) ? null : $key->getCheckQr()->getPersonBiometrics()[0]->isIsDoublon(),
  149.                         //'abisEncounterId'=> empty($key->getCheckQr()->getPersonBiometrics()) ? null : $key->getCheckQr()->getPersonBiometrics()[0]->getAbisEncounterId(),                    
  150.                         'uuid'=>$key->getCryptoUuid(),
  151.                         //'cryptographeImage'=>$key->getCryptoBase64()                              
  152.                     ];
  153.                 }
  154.                 
  155.                 $return = array(
  156.                     'Etat' =>'SUCCESS',
  157.                     'Message' =>"Cryptographes recupérés avec succès...",
  158.                     'records' =>$cryptographesTab
  159.                 );
  160.                 
  161.             } else
  162.             {
  163.                 $return = array(
  164.                     'Etat' =>'FAILED' 
  165.                     'Message' =>"Aucun cryptographe n'a été généré par votre compte..."
  166.                     'records' =>$cryptographesTab
  167.                 );
  168.             }
  169.             
  170.         } else
  171.         {
  172.             $return = array(
  173.                 'Etat' =>'FAILED' 
  174.                 'Message' =>"Paramètres requis manquant(s)"
  175.             );
  176.         }
  177.         
  178.        return new JsonResponse($return);
  179.     }
  180.     /** ///save/etat/civil/data/json
  181.      * @Route("/new/json", name="app_cryptographe_new_json", methods={"GET", "POST"})
  182.      */
  183.     public function newJson(Request $requestCryptographeRepository $cryptographeRepositorySluggerInterface $sluggerContainerInterface $containerCheckQrRepository $checkQrRepositoryPersonRepository $personRepositoryApplicationRepository $applicationRepositoryPersonAppIdentityRepository $personAppIdentityRepositoryDeviceRepository $deviceRepository ): Response
  184.     {        
  185.         if($_POST)
  186.         {
  187.             // device info
  188.             $deviceId $request->get("deviceId");
  189.             $token $request->get("deviceToken");
  190.             $batteryState $request->get("batteryState");
  191.             $isBatteryPlugIn $request->get("isBatteryPlugIn");
  192.             $package $request->get("packageName");
  193.             $version $request->get("appVersion");
  194.             $appLongitude $request->get("appLongitude");
  195.             $appLatitude $request->get("appLatitude");
  196.             $cryptographe = new Cryptographe();
  197.             
  198.             $sqrRef $request->get("sqr");//référence sqr
  199.             //$referenceUser = $request->get("referenceUser");//référence de l'utilisateur            
  200.             
  201.             $appKey $request->get("app_key");
  202.             $civilite $request->get("civilite");
  203.             $nom $request->get("nom");
  204.             $prenom $request->get("prenom");
  205.             $dateNaissance = new \DateTime($request->get("dateNaissance"));
  206.             $lieuNaissance $request->get("lieuNaissance");
  207.             $nationalite $request->get("nationalite");
  208.             $paysResidence $request->get("paysResidence");
  209.             $villeResidence $request->get("villeResidence");
  210.             $numeroTelephone $request->get("numeroTelephone");
  211.             $adresseEmail $request->get("adresseEmail");
  212.             
  213.             $titreDiplome $request->get("titreDiplome");
  214.             $specialisation $request->get("specialisation");
  215.             $etablissement $request->get("etablissement");
  216.             $annee $request->get("annee");
  217.             $numeroReference $request->get("numeroReference");
  218.             $userIdo $request->get("userIdo");
  219.             
  220.             $checkQr $checkQrRepository->findOneBy(['numero'=>$sqrRef]);
  221.             if($checkQr)
  222.             {                                
  223.                 /** @var UploadedFile $signature */            
  224.                 $signature $request->files->get('signature');
  225.                 // this condition is needed because the 'brochure' field is not required
  226.                 // so the PDF file must be processed only when a file is uploaded
  227.                 if ($signature
  228.                 {
  229.                     $originalFilename pathinfo($signature->getClientOriginalName(), PATHINFO_FILENAME);
  230.                     // this is needed to safely include the file name as part of the URL
  231.                     $safeFilename $slugger->slug($originalFilename);
  232.                     $newFilename $safeFilename.'-'.uniqid().'.'.$signature->guessExtension();
  233.                     // Move the file to the directory where they must be stored
  234.                     try {
  235.                         $signature->move(
  236.                             $this->getParameter('kyvala_directory').'/'.$sqrRef,
  237.                             $newFilename
  238.                         );
  239.                     } catch (FileException $e
  240.                     {
  241.                         // ... handle exception if something happens during file upload
  242.                     }
  243.                     $cryptographe->setSignature($sqrRef.'/'.$newFilename);
  244.                 }
  245.                 try
  246.                 {
  247.                     if (!empty($nom)) 
  248.                     {
  249.                         /*
  250.                         if(!empty($referenceUser))
  251.                         {
  252.                             $person = $personRepository->findOneBySqr($referenceUser);
  253.                             if($person)
  254.                             {
  255.                                 $cryptographe->setPerson($person);
  256.                             }
  257.                         }
  258.                         
  259.                         // On enregistre les paramètres de connexion de l'utilisateur dans la table personappidentity pour de futur connexion
  260.                         if(!empty($appKey))
  261.                         {
  262.                             $application = $applicationRepository->findOneBy(['applicationPass'=>$appKey]);
  263.                             if($application)
  264.                             {
  265.                                 // device infos persist   
  266.                                 $device = new Device();
  267.                                 $device->setDeviceInfo($deviceId);
  268.                                 $device->setDeviceToken($token);
  269.                                 $device->setGpsLatitude($appLatitude);
  270.                                 $device->setGpsLongitude($appLongitude);
  271.                                 $device->setBatteryState($batteryState);
  272.                                 $device->setIsBatteryPlugIn($isBatteryPlugIn);
  273.                                 $device->setPackage($package);
  274.                                 $device->setAppVersion($version);
  275.                                 $deviceRepository->add($device, false);
  276.                                 
  277.                                 $personAppIdentity = new PersonAppIdentity();
  278.                                 $personAppIdentity->setApplication($application);
  279.                                 $personAppIdentity->setTelephone($numeroTelephone);
  280.                                 $personAppIdentity->setEmail($adresseEmail);
  281.                                 $personAppIdentity->setPin($pin);
  282.                                 $personAppIdentity->setUserReference($checkQr);
  283.                                 $personAppIdentity->setToken($token);
  284.                                 $personAppIdentity->setDevice($device);
  285.                                 
  286.                                 // method to flush
  287.                                 $personAppIdentityRepository->add($personAppIdentity, false);
  288.                                 
  289.                             }else
  290.                             {
  291.                                 $otherMsg = "La clé envoyé ne correspond à aucune application";                            
  292.                             }                      
  293.                         }
  294.                         */
  295.                         
  296.                         $cryptographe->setCivility($civilite);
  297.                         $cryptographe->setFirstName($nom);
  298.                         $cryptographe->setLastName($prenom);
  299.                         $cryptographe->setDateOfBirth($dateNaissance);
  300.                         $cryptographe->setPlaceOfBirth($lieuNaissance);
  301.                         $cryptographe->setNationality($nationalite);
  302.                         $cryptographe->setPaysResidence($paysResidence);
  303.                         $cryptographe->setVilleResidence($villeResidence);
  304.                         $cryptographe->setPhone($numeroTelephone);
  305.                         $cryptographe->setEmail($adresseEmail);
  306.                         
  307.                         $cryptographe->setTitreDiplome($titreDiplome);
  308.                         $cryptographe->setSpecialisation($specialisation);
  309.                         $cryptographe->setEtablissement($etablissement);
  310.                         $cryptographe->setAnnee($annee);
  311.                         $cryptographe->setNumeroReference($numeroReference); 
  312.                         $cryptographe->setSavedBy($userIdo);
  313.                         
  314.                         /*
  315.                         $cryptographe->setTypeOfIdentificationDocument($typeDocumentIdentite);
  316.                         $cryptographe->setIdentificationDocumentNumber($numeroDocumentIdentite);
  317.                         $cryptographe->setDateOfIssue($dateDelivrancedocument);
  318.                         $cryptographe->setDateOfExpirationIssue($dateExpirationDelivranceDocument);
  319.                         $cryptographe->setDateOfProrogation($dateProrogationDocument);
  320.                         $cryptographe->setDateOfExpirationProrogation($dateExpirationProrogationDocument);
  321.                         
  322.                         $cryptographe->setEnrolmentUid($enrolmentUid);
  323.                         $cryptographe->setEnrolmentId($enrolmentId);
  324.                         $cryptographe->setEnrolmentSource($enrolmentSource);
  325.                         */
  326.                         $cryptographe->setFirebaseToken($token);
  327.                         $cryptographe->setFirebasePlateform("MOBILE");
  328.                         //$cryptographe->setAdresse("");
  329.                             
  330.                         // spécifier qu'il s'agit d'un enrolement complet
  331.                         $cryptographe->setStatus(1);
  332.                         $cryptographe->setCheckQr($checkQr);
  333.                         $cryptographe $this->createCryptographe($cryptographe);
  334.                             
  335.                         // method to flush
  336.                         $cryptographeRepository->add($cryptographetrue);
  337.                         
  338.                         if(empty($cryptographe->getCryptoBase64()))
  339.                         {
  340.                             $return = array(
  341.                                 'Etat' =>'FAILED' 
  342.                                 'Message' =>"Issue while generating the cryptographe. Time out issue..."
  343.                             );
  344.                         }else
  345.                         {
  346.                             $return = array(
  347.                                 'Etat' =>'SUCCESS' 
  348.                                 'Message' =>"Votre cryptographe est en cours de génération. Vous allez le recevoir par mail."
  349.                                 'sqr'=>$sqrRef,
  350.                                 'uuid'=>$cryptographe->getCryptoUuid(),
  351.                                 'cryptographeImage'=>$cryptographe->getCryptoBase64(),
  352.                             );
  353.                         }
  354.                         
  355.                         /*
  356.                         // send notification to Firebase
  357.                         if(!empty($personCivil->getFirebaseToken()))
  358.                         {
  359.                             $this->ParamsWithSendPushNotification($personCivil->getFirebaseToken(),"Votre enrôlement",$civilite." ".$prenom." ".$nom.", Bienvenu(e) sur KYVALA ! Votre enrôlement a été effectué avec succès sous la référence SQR : ".$sqrRef.", Merci de conserver cette référence pour la suite de vos opérations");
  360.                         }
  361.                         */
  362.                     }else
  363.                     {
  364.                         $return = array(
  365.                             'Etat' =>'FAILED' 
  366.                             'Message' =>"Paramètres requis manquants"
  367.                         );
  368.                     }
  369.                 } catch (\Throwable $error
  370.                 {
  371.                     //not actions
  372.                     $fs = new Filesystem();
  373.                     //$fs->appendToFile('EventLogFiles.txt', "\r\n ".json_encode($error));
  374.                     $fs->appendToFile('log/cryptographe/Exceptions/'.date("Y")."/".date("d-m-Y").'/EventLogFilesBio.txt'"\r\n ".date("d-m-Y H:i:s")." Enrollement exception : ".$error);
  375.                     $return = array(
  376.                         'Etat' =>'FAILED' 
  377.                         'Message' =>"Une erreur est survenue lors de l'opération. Veuillez essayer ultérieurement SVP"
  378.                         'error'=>$error,
  379.                     );
  380.                 }
  381.                 //////////////////////////////////////////////////////////////
  382.             }else
  383.             {
  384.                 $return = array(
  385.                     'Etat' =>'FAILED',
  386.                     'Message' =>$sqrRef"Une erreur est survenue lors de l'enregistrement, aucun enregistrement ne correspond à la référence..."
  387.                 );
  388.             }
  389.             
  390.         }else
  391.         {
  392.             $return = array(
  393.                 'Etat' =>'FAILED',
  394.                 'Message' =>"La méthode d'envoie ne correspond pas aux attentes",
  395.             );
  396.         }
  397.         
  398.         //$fs1 = new Filesystem();
  399.         //$fs1->appendToFile('log/Enrôlement/'.date("Y")."/".date("d-m-Y").'/BiometricsFiles.txt', "\r\n ".json_encode($return));
  400.        return new JsonResponse($return);
  401.     }
  402.     /** ///generate a custom cryptographe.
  403.      * @Route("/new/crypto/id", name="app_cryptographe_crypto_id_json", methods={"GET", "POST"})
  404.      */
  405.     public function newCryptographeForCryptoId(Request $requestCryptographeRepository $cryptographeRepositorySluggerInterface $sluggerContainerInterface $containerCheckQrRepository $checkQrRepositoryPersonRepository $personRepositoryApplicationRepository $applicationRepositoryPersonAppIdentityRepository $personAppIdentityRepositoryDeviceRepository $deviceRepositoryPersonCivilRepository $personCivilRepository): Response
  406.     {        
  407.         if($_POST)
  408.         {
  409.             //Device info
  410.             $deviceId $request->get("deviceId");
  411.             $token $request->get("deviceToken");
  412.             $batteryState $request->get("batteryState");
  413.             $isBatteryPlugIn $request->get("isBatteryPlugIn");
  414.             $package $request->get("packageName");
  415.             $version $request->get("appVersion");
  416.             $appLongitude $request->get("appLongitude");
  417.             $appLatitude $request->get("appLatitude");
  418.             $sqrRef $request->get("sqr");//référence sqr
  419.             $userIdo $request->get("userIdo");//référence sqr
  420.             $demog $request->get("demog");
  421.             $action $request->get("action");
  422.             $appKey $request->get("app_key");
  423.             
  424.             $cryptographe = new Cryptographe();
  425.             
  426.             if (!empty($action) && !empty($demog)  && !empty($appKey))
  427.             {
  428.                 $checkQr $checkQrRepository->findOneBy(['numero'=>$sqrRef]);
  429.                 if($checkQr//ici on rajoute la référence de la transaction si disponible
  430.                 {
  431.                     $cryptographe->setCheckQr($checkQr);
  432.                 }
  433.                 
  434.                 $idoAuthor $personCivilRepository->findOneBySqr($userIdo);// ici on rajoute celui pour qui le crypto est généré
  435.                 if($idoAuthor)
  436.                 {
  437.                     $cryptographe->setUserReference($idoAuthor->getCheckQr());
  438.                 }
  439.                 try
  440.                 {
  441.                     $cryptographe->setDemog($demog);
  442.                     $cryptographe->setAction($action);
  443.                     // spécifier qu'il s'agit d'un enrolement complet
  444.                     $cryptographe->setStatus(1);                   
  445.                     
  446.                     $cryptographe->setFirebaseToken($token);
  447.                     $cryptographe->setFirebasePlateform("MOBILE");
  448.                     //$cryptographe->setAdresse("");
  449.                     
  450.                     $cryptographe $this->generateCryptoForCryptoId($cryptographe);                    
  451.                     // method to flush
  452.                     $cryptographeRepository->add($cryptographetrue);
  453.                     $return = array(
  454.                         'Etat' =>'SUCCESS' 
  455.                         'Message' =>"Votre cryptographe est en cours de génération. Vous allez le recevoir par mail."
  456.                         'sqr'=>$sqrRef,
  457.                         'uuid'=>$cryptographe->getCryptoUuid(),
  458.                         'cryptographeImage'=>$cryptographe->getCryptoBase64(),
  459.                     );
  460.                 
  461.                 } catch (\Throwable $error)
  462.                 {
  463.                     //not actions
  464.                     $fs = new Filesystem();
  465.                     //$fs->appendToFile('EventLogFiles.txt', "\r\n ".json_encode($error));
  466.                     $fs->appendToFile('log/Cryptographe/Exceptions/'.date("Y")."/".date("d-m-Y").'/EventLogFilesBio.txt'"\r\n ".date("d-m-Y H:i:s")." Enrollement exception : ".$error);
  467.                     $return = array(
  468.                         'Etat' =>'FAILED' 
  469.                         'Message' =>"Une erreur est survenue lors de l'opération. Veuillez essayer ultérieurement SVP"
  470.                         'error'=>$error,
  471.                     );
  472.                 }
  473.             }else
  474.             {
  475.                 $return = array(
  476.                     'Etat' =>'FAILED' 
  477.                     'Message' =>"Paramètres requis manquants"
  478.                     //'Message' =>$action." ".$appKey,
  479.                 );
  480.             }
  481.             
  482.         }else
  483.         {
  484.             $return = array(
  485.                 'Etat' =>'FAILED',
  486.                 'Message' =>"La méthode d'envoie ne correspond pas aux attentes",
  487.             );
  488.         }
  489.        return new JsonResponse($return);
  490.     }
  491.      /**
  492.      * @Route("/get/crypto/info", name="app_cryptographe_ido_get_json", methods={"GET", "POST"})
  493.      */
  494.     public function indexJson(Request $requestCryptographeRepository $cryptographeRepository): Response
  495.     {
  496.         $referenceUser $request->get('referenceUser'); 
  497.         $action = empty($request->get('action'))? "IDO" $request->get('action'); // IDO, EMAIL, PHONE default IDO
  498.         
  499.         if(!empty($referenceUser))
  500.         {
  501.             switch ($action)
  502.             {
  503.                 case 'IDO':
  504.                     $cryptographeUser $cryptographeRepository->findOneBySqr($referenceUser); //OK
  505.                     break;
  506.                 default:
  507.                     # code...
  508.                     break;
  509.             }
  510.             if($cryptographeUser)
  511.             {
  512.                 $userDta =  
  513.                 [
  514.                     'civility'=>$cryptographeUser->getCivility(),
  515.                     'firstName'=>$cryptographeUser->getFirstName(),
  516.                     'lastName'=>$cryptographeUser->getLastName(),
  517.                     'dateOfBirth'=>empty($cryptographeUser->getDateOfBirth()) ? null $cryptographeUser->getDateOfBirth()->format("d/m/Y"),
  518.                     'placeOfBirth'=>$cryptographeUser->getPlaceOfBirth(),
  519.                     'email'=>$cryptographeUser->getEmail(),
  520.                     'phone'=>$cryptographeUser->getPhone(),           
  521.                     'demog'=>$cryptographeUser->getDemog(),                    
  522.                     'dateCreated'=>empty($cryptographeUser->getDateCreated()) ? null $cryptographeUser->getDateCreated()->format("d/m/Y H:i:s"),
  523.                     'selfie_link'=>empty($cryptographeUser->getCheckQr()) ? null "uploads/kyvala/enrolment/".$cryptographeUser->getCheckQr()->getPersonBiometrics()[0]->getFace(),
  524.                     'signature_link'=>"uploads/kyvala/enrolment/".$cryptographeUser->getSignature(),
  525.                     'IDO'=>empty($cryptographeUser->getCheckQr()) ? null $cryptographeUser->getCheckQr()->getNumero(),
  526.                     'abisIdentificationJson'=>empty($cryptographeUser->getCheckQr()->getPersonBiometrics()) ? null $cryptographeUser->getCheckQr()->getPersonBiometrics()[0]->getAbisIdentificationJson(),
  527.                     'isEnrolled'=>empty($cryptographeUser->getCheckQr()->getPersonBiometrics()) ? null $cryptographeUser->getCheckQr()->getPersonBiometrics()[0]->isIsEnrolled(),
  528.                     'isDoublon'=>empty($cryptographeUser->getCheckQr()->getPersonBiometrics()) ? null $cryptographeUser->getCheckQr()->getPersonBiometrics()[0]->isIsDoublon(),
  529.                     'abisEncounterId'=>empty($cryptographeUser->getCheckQr()->getPersonBiometrics()) ? null $cryptographeUser->getCheckQr()->getPersonBiometrics()[0]->getAbisEncounterId(),                    
  530.                     'uuid'=>$cryptographeUser->getCryptoUuid(),
  531.                     'cryptographeImage'=>$cryptographeUser->getCryptoBase64()
  532.                 ];
  533.                 $return = array(
  534.                     'Etat' =>'SUCCESS' 
  535.                     'Message' =>"Données recupérés avec succès !!!"
  536.                     'userData'=>$userDta
  537.                 );
  538.             }else
  539.             {
  540.                 $return = array(
  541.                     'Etat' =>'FAILED' 
  542.                     'Message' =>"L'identifiant ne correspond à aucun cryptographe..."
  543.                 );
  544.             }
  545.         }else
  546.         {
  547.             $return = array(
  548.                 'Etat' =>'FAILED' 
  549.                 'Message' =>"Paramètres requis manquants.."
  550.             );
  551.         }  
  552.         
  553.        return new JsonResponse($return);
  554.     }
  555.     /**
  556.      * @Route("/{id}", name="app_cryptographe_show", methods={"GET"})
  557.      */
  558.     public function show(Cryptographe $cryptographe): Response
  559.     {
  560.         return $this->render('cryptographe/show.html.twig', [
  561.             'cryptographe' => $cryptographe,
  562.         ]);
  563.     }
  564.     /**
  565.      * @Route("/{id}/edit", name="app_cryptographe_edit", methods={"GET", "POST"})
  566.      */
  567.     public function edit(Request $requestCryptographe $cryptographeCryptographeRepository $cryptographeRepository): Response
  568.     {
  569.         $form $this->createForm(CryptographeType::class, $cryptographe);
  570.         $form->handleRequest($request);
  571.         if ($form->isSubmitted() && $form->isValid()) {
  572.             $cryptographeRepository->add($cryptographetrue);
  573.             return $this->redirectToRoute('app_cryptographe_index', [], Response::HTTP_SEE_OTHER);
  574.         }
  575.         return $this->renderForm('cryptographe/edit.html.twig', [
  576.             'cryptographe' => $cryptographe,
  577.             'form' => $form,
  578.         ]);
  579.     }
  580.     
  581.     /**
  582.      * @Route("/{id}", name="app_cryptographe_delete", methods={"POST"})
  583.      */
  584.     public function delete(Request $requestCryptographe $cryptographeCryptographeRepository $cryptographeRepository): Response
  585.     {
  586.         if ($this->isCsrfTokenValid('delete'.$cryptographe->getId(), $request->request->get('_token'))) {
  587.             $cryptographeRepository->remove($cryptographetrue);
  588.         }
  589.         return $this->redirectToRoute('app_cryptographe_index', [], Response::HTTP_SEE_OTHER);
  590.     }
  591.     public function createCryptographe(Cryptographe $cryptographe)
  592.     {
  593.         $sqrRef $cryptographe->getCheckQr()->getNumero();
  594.         $demogData null;
  595.         $demogData "Civilite:".$cryptographe->getCivility();
  596.         $demogData .= ", Nom:".$cryptographe->getFirstName();
  597.         $demogData .= ", Prénom:".$cryptographe->getLastName();
  598.         $demogData .= ", Date de naissance:".$cryptographe->getDateOfBirth()->format("d/m/Y");
  599.         $demogData .= ", Lieu de naissance:".$cryptographe->getPlaceOfBirth();
  600.         $demogData .= ", Nationalité:".$cryptographe->getNationality();
  601.         $demogData .= ", Pays de résidence:".$cryptographe->getPaysResidence();
  602.         $demogData .= ", Ville de résidence:".$cryptographe->getVilleResidence();
  603.         $demogData .= ", Telephone:".$cryptographe->getPhone();
  604.         $demogData .= ", Email:".$cryptographe->getEmail();
  605.         
  606.         $demogData .= ", Titre diplôme:".$cryptographe->getTitreDiplome();
  607.         $demogData .= ", Spécialisation:".$cryptographe->getSpecialisation();
  608.         $demogData .= ", Etablissement:".$cryptographe->getEtablissement();
  609.         $demogData .= ", Année:".$cryptographe->getAnnee();
  610.         $demogData .= ", Numéro référence:".$cryptographe->getNumeroReference();       
  611.         $fs = new Filesystem();
  612.         $fs->appendToFile($this->getParameter('kyvala_directory').'/'.$sqrRef.'/crypto/demog.txt'"\r\n ".$demogData);
  613.         $base "http://poc.kyvala.com/uploads/kyvala/enrolment/";
  614.         $face $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFace();
  615.         $fpr1 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp1();
  616.         $fpr2 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp2();
  617.         $fpr3 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp3();
  618.         $fpr4 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp4();
  619.         $fpr5 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp5();
  620.         $fpl1 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp6();
  621.         $fpl2 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp7();
  622.         $fpl3 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp8();
  623.         $fpl4 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp9();
  624.         $fpl5 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp10();
  625.         /*
  626.         $curl = curl_init();
  627.         curl_setopt_array($curl, array(
  628.         CURLOPT_URL => 'https://eval-idencode.tech5.tech/v1/enroll',
  629.         CURLOPT_RETURNTRANSFER => true,
  630.         CURLOPT_ENCODING => '',
  631.         CURLOPT_MAXREDIRS => 10,
  632.         CURLOPT_TIMEOUT => 0,
  633.         CURLOPT_FOLLOWLOCATION => true,
  634.         CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  635.         CURLOPT_CUSTOMREQUEST => 'POST',
  636.         CURLOPT_POSTFIELDS => array('face_image'=> new \CURLFILE($face),'pipeline'=> new \CURLFILE($this->getParameter('kyvala_directory').'/pipeline-with-fp-CR.txt'),'demog'=> new \CURLFILE($this->getParameter('kyvala_directory').'/'.$sqrRef.'/crypto/demog.txt'),'finger_image_r1'=> new \CURLFILE($fpr1),'finger_image_r2'=> new \CURLFILE($fpr2),'finger_image_r3'=> new \CURLFILE($fpr3),'finger_image_r4'=> new \CURLFILE($fpr4),'finger_image_r5'=> new \CURLFILE($fpr5),'finger_image_l1'=> new \CURLFILE($fpl1),'finger_image_l2'=> new \CURLFILE($fpl2),'finger_image_l3'=> new \CURLFILE($fpl3),'finger_image_l4'=> new \CURLFILE($fpl4),'finger_image_l5'=> new \CURLFILE($fpl5)),
  637.         ));
  638.         $response = curl_exec($curl);
  639.         dump($response);
  640.         //On écris le retours de la fonction dans le log
  641.         $fs->appendToFile($this->getParameter('kyvala_directory').'/'.$sqrRef.'/crypto/cryptoGenerationLog.txt', "\r\n ".$response);
  642.         $response = json_decode($response,true);
  643.         curl_close($curl);
  644.         //echo $response;    
  645.         
  646.         
  647.         //$response = json_decode($response,true);
  648.         if(isset($response['uuid']) && isset($response['image']))
  649.         {            
  650.             $cryptographe->setCryptoUuid($response['uuid']);
  651.             $cryptographe->setCryptoBase64($response['image']);
  652.         }
  653.         dump($cryptographe);
  654.         */
  655.         
  656.         try 
  657.             {
  658.                 //$client = new Client();
  659.                 $client = new \GuzzleHttp\Client(['verify' => false]);
  660.                 /* $headers = [
  661.                     'Authorization' => 'Basic Y2VkcmljLnRjaHVpc3NldUBreXZhbGFpZC5jb206QzNkcjFjQFQ1'
  662.                     ];
  663.                 */
  664.                 $request $client->post"https://idencode.tech5-sa.com/v1/enroll", [
  665.                 'headers'=> ['Authorization' => 'Basic Y2VkcmljLnRjaHVpc3NldUBreXZhbGFpZC5jb206QzNkcjFjQFQ1'],
  666.                 'multipart' => [
  667.                     [
  668.                         'name' => 'face_image',
  669.                         'contents' => fopen($face'r'),
  670.                         'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFace(),
  671.                         'headers'  => [
  672.                             'Content-Type' => 'image/png'
  673.                         ]
  674.                     ],
  675.                     [
  676.                         'name' => 'demog',
  677.                         'contents' => fopen($this->getParameter('kyvala_directory').'/'.$sqrRef.'/crypto/demog.txt''r'),
  678.                         'filename' => 'demog.txt',
  679.                         'headers'  => [
  680.                             'Content-Type' => 'application/octet-stream'
  681.                         ]
  682.                     ],
  683.                     [
  684.                         'name' => 'finger_image_r1',
  685.                         'contents' => fopen($fpr1'r'),
  686.                         'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp1(),
  687.                         'headers'  => [
  688.                             'Content-Type' => 'image/png'
  689.                         ]
  690.                     ],
  691.                     [
  692.                         'name' => 'finger_image_r2',
  693.                         'contents' => fopen($fpr2'r'),
  694.                         'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp2(),
  695.                         'headers'  => [
  696.                             'Content-Type' => 'image/png'
  697.                         ]
  698.                     ],
  699.                     [
  700.                         'name' => 'finger_image_r3',
  701.                         'contents' => fopen($fpr3'r'),
  702.                         'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp3(),
  703.                         'headers'  => [
  704.                             'Content-Type' => 'image/png'
  705.                         ]
  706.                     ],
  707.                     [
  708.                         'name' => 'finger_image_r4',
  709.                         'contents' => fopen($fpr4'r'),
  710.                         'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp4(),
  711.                         'headers'  => [
  712.                             'Content-Type' => 'image/png'
  713.                         ]
  714.                     ],
  715.                     [
  716.                         'name' => 'finger_image_r5',
  717.                         'contents' => fopen($fpr5'r'),
  718.                         'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp5(),
  719.                         'headers'  => [
  720.                             'Content-Type' => 'image/png'
  721.                         ]
  722.                     ],
  723.                     [
  724.                         'name' => 'finger_image_l1',
  725.                         'contents' => fopen($fpl1'r'),
  726.                         'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp6(),
  727.                         'headers'  => [
  728.                             'Content-Type' => 'image/png'
  729.                         ]
  730.                     ],
  731.                     [
  732.                         'name' => 'finger_image_l2',
  733.                         'contents' => fopen($fpl2'r'),
  734.                         'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp7(),
  735.                         'headers'  => [
  736.                             'Content-Type' => 'image/png'
  737.                         ]
  738.                     ],
  739.                     [
  740.                         'name' => 'finger_image_l3',
  741.                         'contents' => fopen($fpl3'r'),
  742.                         'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp8(),
  743.                         'headers'  => [
  744.                             'Content-Type' => 'image/png'
  745.                         ]
  746.                     ],
  747.                     [
  748.                         'name' => 'finger_image_l4',
  749.                         'contents' => fopen($fpl4 'r'),
  750.                         'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp9(),
  751.                         'headers'  => [
  752.                             'Content-Type' => 'image/png'
  753.                         ]
  754.                     ],
  755.                     [
  756.                         'name' => 'finger_image_l5',
  757.                         'contents' => fopen($fpl5'r'),
  758.                         'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp10(),
  759.                         'headers'  => [
  760.                             'Content-Type' => 'image/png'
  761.                         ]
  762.                     ],
  763.                     [
  764.                         'name' => 'pipeline',
  765.                         'contents' => fopen('http://poc.kyvala.com/uploads/createCryptographerequest/pipeline-with-fp-CR.txt''r'),
  766.                         'filename' => 'pipeline-with-fp-CR.txt',
  767.                         'headers'  => [
  768.                             'Content-Type' => 'application/json'
  769.                         ]
  770.                     ]
  771.                 ]]);
  772.                 
  773.                 
  774.                 $body $request->getBody();
  775.                 //dump((string) $body);
  776.                 //$stringBody = ;
  777.                 //die;
  778.                 
  779.                 $response json_decode((string) $body,true);
  780.                 //$state = "SUCCESS";
  781.                 //$msg = "Cryptographe généré avec succès !!!";
  782.                 if(isset($response['uuid']) && isset($response['image']))
  783.                 {            
  784.                     $cryptographe->setCryptoUuid($response['uuid']);
  785.                     $cryptographe->setCryptoBase64($response['image']);
  786.                 }
  787.                 
  788.             } catch (ClientException $e
  789.             {
  790.                 $state "FAILED";
  791.                 $fst = new Filesystem();
  792.                 //$fs->appendToFile('EventLogFiles.txt', "\r\n ".json_encode($error));
  793.                 $fst->appendToFile('log/GuzzleException/'.date("Y")."/".date("d-m-Y").'/guzzleException.txt'"\r\n ".date("d-m-Y H:i:s")." - request : ".Psr7\Message::toString($e->getRequest()));
  794.                 $fst->appendToFile('log/GuzzleException/'.date("Y")."/".date("d-m-Y").'/guzzleException.txt'"\r\n ".date("d-m-Y H:i:s")." - Response : ".Psr7\Message::toString($e->getResponse()));
  795.                 $msg Psr7\Message::toString($e->getResponse());
  796.             }
  797.             /*
  798.             $retour = [
  799.                 'ETAT'=>$state,
  800.                 'retour'=>$response,
  801.                 'Message'=>$msg
  802.             ];*/
  803.         return $cryptographe;
  804.     }
  805.     
  806.     public function createCryptographeWithLeftAndrightIndex(Cryptographe $cryptographe)
  807.     {
  808.         $sqrRef $cryptographe->getCheckQr()->getNumero();
  809.         $demogData null;
  810.         $demogData "Civilite:".$cryptographe->getCivility();
  811.         $demogData .= ", Nom:".$cryptographe->getFirstName();
  812.         $demogData .= ", Prénom:".$cryptographe->getLastName();
  813.         $demogData .= ", Date de naissance:".$cryptographe->getDateOfBirth()->format("d/m/Y");
  814.         $demogData .= ", Lieu de naissance:".$cryptographe->getPlaceOfBirth();
  815.         $demogData .= ", Nationalité:".$cryptographe->getNationality();
  816.         $demogData .= ", Pays de résidence:".$cryptographe->getPaysResidence();
  817.         $demogData .= ", Ville de résidence:".$cryptographe->getVilleResidence();
  818.         $demogData .= ", Telephone:".$cryptographe->getPhone();
  819.         $demogData .= ", Email:".$cryptographe->getEmail();
  820.         
  821.         $demogData .= ", Titre diplôme:".$cryptographe->getTitreDiplome();
  822.         $demogData .= ", Spécialisation:".$cryptographe->getSpecialisation();
  823.         $demogData .= ", Etablissement:".$cryptographe->getEtablissement();
  824.         $demogData .= ", Année:".$cryptographe->getAnnee();
  825.         $demogData .= ", Numéro référence:".$cryptographe->getNumeroReference();       
  826.         $fs = new Filesystem();
  827.         $fs->appendToFile($this->getParameter('kyvala_directory').'/'.$sqrRef.'/crypto/demog.txt'"\r\n ".$demogData);
  828.         $base "http://poc.kyvala.com/uploads/kyvala/enrolment/";
  829.         $face $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFace();
  830.         /*
  831.         $fpr1 = $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp1();
  832.         $fpr2 = $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp2();
  833.         $fpr3 = $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp3();
  834.         $fpr4 = $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp4();
  835.         $fpr5 = $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp5();
  836.         $fpl1 = $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp6();
  837.         
  838.         $fpl3 = $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp8();
  839.         $fpl4 = $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp9();
  840.         $fpl5 = $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp10();
  841.         */
  842.         $fpl2 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp7();
  843.         
  844.         try 
  845.             {
  846.                 //$client = new Client();
  847.                 $client = new \GuzzleHttp\Client(['verify' => false]);
  848.                 /* $headers = [
  849.                     'Authorization' => 'Basic Y2VkcmljLnRjaHVpc3NldUBreXZhbGFpZC5jb206QzNkcjFjQFQ1'
  850.                     ];
  851.                 */
  852.                 $request $client->post"https://idencode.tech5-sa.com/v1/enroll", [
  853.                 'headers'=> ['Authorization' => 'Basic Y2VkcmljLnRjaHVpc3NldUBreXZhbGFpZC5jb206QzNkcjFjQFQ1'],
  854.                 'multipart' => [
  855.                     [
  856.                         'name' => 'face_image',
  857.                         'contents' => fopen($face'r'),
  858.                         'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFace(),
  859.                         'headers'  => [
  860.                             'Content-Type' => 'image/png'
  861.                         ]
  862.                     ],
  863.                     [
  864.                         'name' => 'demog',
  865.                         'contents' => fopen($this->getParameter('kyvala_directory').'/'.$sqrRef.'/crypto/demog.txt''r'),
  866.                         'filename' => 'demog.txt',
  867.                         'headers'  => [
  868.                             'Content-Type' => 'application/octet-stream'
  869.                         ]
  870.                     ],
  871.                     [
  872.                         'name' => 'finger_image_l2',
  873.                         'contents' => fopen($fpl2'r'),
  874.                         'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp7(),
  875.                         'headers'  => [
  876.                             'Content-Type' => 'image/png'
  877.                         ]
  878.                     ],
  879.                     [
  880.                         'name' => 'pipeline',
  881.                         'contents' => fopen('http://poc.kyvala.com/uploads/createCryptographerequest/pipeline-with-left-index.txt''r'),
  882.                         'filename' => 'pipeline-with-fp-CR.txt',
  883.                         'headers'  => [
  884.                             'Content-Type' => 'application/json'
  885.                         ]
  886.                     ]
  887.                 ]]);
  888.                 
  889.                 
  890.                 $body $request->getBody();
  891.                 //dump((string) $body);
  892.                 //$stringBody = ;
  893.                 //die;
  894.                 
  895.                 $response json_decode((string) $body,true);
  896.                 //$state = "SUCCESS";
  897.                 //$msg = "Cryptographe généré avec succès !!!";
  898.                 if(isset($response['uuid']) && isset($response['image']))
  899.                 {            
  900.                     $cryptographe->setCryptoUuid($response['uuid']);
  901.                     $cryptographe->setCryptoBase64($response['image']);
  902.                 }
  903.                 
  904.             } catch (ClientException $e
  905.             {
  906.                 $state "FAILED";
  907.                 $fst = new Filesystem();
  908.                 //$fs->appendToFile('EventLogFiles.txt', "\r\n ".json_encode($error));
  909.                 $fst->appendToFile('log/GuzzleException/'.date("Y")."/".date("d-m-Y").'/guzzleException.txt'"\r\n ".date("d-m-Y H:i:s")." - request : ".Psr7\Message::toString($e->getRequest()));
  910.                 $fst->appendToFile('log/GuzzleException/'.date("Y")."/".date("d-m-Y").'/guzzleException.txt'"\r\n ".date("d-m-Y H:i:s")." - Response : ".Psr7\Message::toString($e->getResponse()));
  911.                 $msg Psr7\Message::toString($e->getResponse());
  912.             }
  913.             /*
  914.             $retour = [
  915.                 'ETAT'=>$state,
  916.                 'retour'=>$response,
  917.                 'Message'=>$msg
  918.             ];*/
  919.         return $cryptographe;
  920.     }
  921.     public function createCustomCryptographe()
  922.     {
  923.         $base "http://poc.kyvala.com/uploads/kyvala/enrolment/";
  924.         $response null;
  925.         try 
  926.             {
  927.                 //$client = new Client();
  928.                 $client = new \GuzzleHttp\Client(['verify' => false]);
  929.                 /* $headers = [
  930.                     'Authorization' => 'Basic Y2VkcmljLnRjaHVpc3NldUBreXZhbGFpZC5jb206QzNkcjFjQFQ1'
  931.                     ];
  932.                 */
  933.                 $request $client->post"https://idencode.tech5-sa.com/v1/enroll", [
  934.                 'headers'=> ['Authorization' => 'Basic Y2VkcmljLnRjaHVpc3NldUBreXZhbGFpZC5jb206QzNkcjFjQFQ1'],
  935.                 'multipart' => [
  936.                     [
  937.                         'name' => 'demog',
  938.                         'contents' => fopen('http://poc.kyvala.com/uploads/cryptographeData/demog-timbre-fiscal.txt''r'),
  939.                         'filename' => 'demog-timbre-fiscal.txt',
  940.                         'headers'  => [
  941.                             'Content-Type' => 'application/octet-stream'
  942.                         ]
  943.                     ],
  944.                     [
  945.                         'name' => 'pipeline',
  946.                         'contents' => fopen('http://poc.kyvala.com/uploads/cryptographeData/Pipe-line-crypto-only-big-demog.txt''r'),
  947.                         'filename' => 'Pipe-line-crypto-only-big-demog.txt',
  948.                         'headers'  => [
  949.                             'Content-Type' => 'application/json'
  950.                         ]
  951.                     ]
  952.                 ]]);                
  953.                 
  954.                 $body $request->getBody();
  955.                 //dump((string) $body);
  956.                 //$stringBody = ;
  957.                 //die;
  958.                 
  959.                 $response json_decode((string) $body,true);
  960.                 $state "SUCCESS";
  961.                 $msg "Cryptographe généré avec succès !!!";
  962.                 /*
  963.                 if(isset($response['uuid']) && isset($response['image']))
  964.                 {            
  965.                     $cryptographe->setCryptoUuid($response['uuid']);
  966.                     $cryptographe->setCryptoBase64($response['image']);
  967.                 }
  968.                 */
  969.             } catch (ClientException $e
  970.             {
  971.                 $state "FAILED";
  972.                 $fst = new Filesystem();
  973.                 //$fs->appendToFile('EventLogFiles.txt', "\r\n ".json_encode($error));
  974.                 $fst->appendToFile('log/GuzzleException/'.date("Y")."/".date("d-m-Y").'/guzzleException.txt'"\r\n ".date("d-m-Y H:i:s")." - request : ".Psr7\Message::toString($e->getRequest()));
  975.                 $fst->appendToFile('log/GuzzleException/'.date("Y")."/".date("d-m-Y").'/guzzleException.txt'"\r\n ".date("d-m-Y H:i:s")." - Response : ".Psr7\Message::toString($e->getResponse()));
  976.                 $msg Psr7\Message::toString($e->getResponse());
  977.             }
  978.             
  979.             $retour = [
  980.                 'ETAT'=>$state,
  981.                 'retour'=>$response,
  982.                 'Message'=>$msg
  983.             ];
  984.         return $retour;
  985.     }
  986.     public function managePipeline()
  987.     {
  988.         // Chemin vers ton fichier JSON
  989.         $jsonFile 'chemin/vers/ton_fichier.json';
  990.         // Charger le contenu du fichier
  991.         $jsonData file_get_contents($jsonFile);
  992.         $data json_decode($jsonDatatrue);
  993.         // Vérifie que le tableau a bien la section fingerPipelines
  994.         if (!isset($data['fingerPipelines']) || !is_array($data['fingerPipelines'])) {
  995.             $data['fingerPipelines'] = [];
  996.         }
  997.         // ----------- AJOUTER UN NOUVEAU FINGER ------------
  998.         function addFingerPipeline(&$data$newFinger) {
  999.             // Évite les doublons sur fieldId
  1000.             foreach ($data['fingerPipelines'] as $finger) {
  1001.                 if ($finger['fieldId'] === $newFinger['fieldId']) {
  1002.                     echo "Cet élément existe déjà.\n";
  1003.                     return;
  1004.                 }
  1005.             }
  1006.             $data['fingerPipelines'][] = $newFinger;
  1007.             echo "Élément ajouté avec succès.\n";
  1008.         }
  1009.         // ----------- SUPPRIMER UN FINGER PAR fieldId ------------
  1010.         function removeFingerPipeline(&$data$fieldIdToRemove) {
  1011.             $originalCount count($data['fingerPipelines']);
  1012.             $data['fingerPipelines'] = array_filter($data['fingerPipelines'], function ($item) use ($fieldIdToRemove) {
  1013.                 return $item['fieldId'] !== $fieldIdToRemove;
  1014.             });
  1015.             $data['fingerPipelines'] = array_values($data['fingerPipelines']); // Réindexation
  1016.             if (count($data['fingerPipelines']) < $originalCount) {
  1017.                 echo "Élément supprimé avec succès.\n";
  1018.             } else {
  1019.                 echo "Aucun élément trouvé avec ce fieldId.\n";
  1020.             }
  1021.         }
  1022.         // ------------------ EXEMPLES ------------------
  1023.         // Exemple d'ajout
  1024.         $newFinger = [
  1025.             "fieldId" => "finger_image_extra",
  1026.             "fingerType" => "EX",
  1027.             "templateType" => "NistT5"
  1028.         ];
  1029.         addFingerPipeline($data$newFinger);
  1030.         // Exemple de suppression
  1031.         removeFingerPipeline($data"finger_image_r5");
  1032.         // Enregistrer les modifications dans le fichier
  1033.         file_put_contents($jsonFilejson_encode($dataJSON_PRETTY_PRINT JSON_UNESCAPED_SLASHES));
  1034.     }
  1035.     public function generateCryptoForCryptoId(Cryptographe $cryptographe)
  1036.     {        
  1037.         if(empty($cryptographe->getCheckQr()))
  1038.         {
  1039.             //$sqrRef = $cryptographe->getUserReference()->getNumero(); 
  1040.             $sqrRef $cryptographe->getCheckQr()->getNumero();           
  1041.         }else
  1042.         {
  1043.             $sqrRef date("d-m-Y-H:i:s");
  1044.         }
  1045.         $demogData $cryptographe->getDemog();
  1046.         $fs = new Filesystem();
  1047.         $fs->appendToFile($this->getParameter('kyvala_directory').'/'.$sqrRef.'/crypto/demog.txt'"\r\n ".$demogData);
  1048.         $base "http://poc.kyvala.com/uploads/kyvala/enrolment/";
  1049.   
  1050.         try 
  1051.             {
  1052.                 switch ($cryptographe->getAction())
  1053.                 {
  1054.                     case 'CRYPTOID':
  1055.                         # code...
  1056.                         
  1057.                         $face $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFace();
  1058.                         $fpr1 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp1();
  1059.                         $fpr2 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp2();
  1060.                         $fpr3 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp3();
  1061.                         $fpr4 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp4();
  1062.                         $fpr5 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp5();
  1063.                         $fpl1 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp6();
  1064.                         $fpl2 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp7();
  1065.                         $fpl3 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp8();
  1066.                         $fpl4 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp9();
  1067.                         $fpl5 $base.$cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp10();      
  1068.                         
  1069.                         //$client = new Client();
  1070.                         $client = new \GuzzleHttp\Client(['verify' => false]);
  1071.                         /* $headers = [
  1072.                             'Authorization' => 'Basic Y2VkcmljLnRjaHVpc3NldUBreXZhbGFpZC5jb206QzNkcjFjQFQ1'
  1073.                             ];
  1074.                         */
  1075.                         /*
  1076.                         $request = $client->post( "https://idencode.tech5-sa.com/v1/enroll", [
  1077.                         'headers'=> ['Authorization' => 'Basic Y2VkcmljLnRjaHVpc3NldUBreXZhbGFpZC5jb206QzNkcjFjQFQ1'],
  1078.                         'multipart' => 
  1079.                         [
  1080.                             [
  1081.                                 'name' => 'face_image',
  1082.                                 'contents' => fopen($face, 'r'),
  1083.                                 'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFace(),
  1084.                                 'headers'  => [
  1085.                                     'Content-Type' => 'image/png'
  1086.                                 ]
  1087.                             ],
  1088.                             [
  1089.                                 'name' => 'demog',
  1090.                                 'contents' => fopen($this->getParameter('kyvala_directory').'/'.$sqrRef.'/crypto/demog.txt', 'r'),
  1091.                                 'filename' => 'demog.txt',
  1092.                                 'headers'  => [
  1093.                                     'Content-Type' => 'application/octet-stream'
  1094.                                 ]
  1095.                             ],
  1096.                             [
  1097.                                 'name' => 'finger_image_r2',
  1098.                                 'contents' => fopen($fpr2, 'r'),
  1099.                                 'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp2(),
  1100.                                 'headers'  => [
  1101.                                     'Content-Type' => 'image/png'
  1102.                                 ]
  1103.                             ],
  1104.                             [
  1105.                                 'name' => 'finger_image_r3',
  1106.                                 'contents' => fopen($fpr3, 'r'),
  1107.                                 'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp3(),
  1108.                                 'headers'  => [
  1109.                                     'Content-Type' => 'image/png'
  1110.                                 ]
  1111.                             ],
  1112.                             [
  1113.                                 'name' => 'finger_image_l2',
  1114.                                 'contents' => fopen($fpl2, 'r'),
  1115.                                 'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp7(),
  1116.                                 'headers'  => [
  1117.                                     'Content-Type' => 'image/png'
  1118.                                 ]
  1119.                             ],
  1120.                             [
  1121.                                 'name' => 'finger_image_l3',
  1122.                                 'contents' => fopen($fpl3, 'r'),
  1123.                                 'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp8(),
  1124.                                 'headers'  => [
  1125.                                     'Content-Type' => 'image/png'
  1126.                                 ]
  1127.                             ],
  1128.                             [
  1129.                                 'name' => 'pipeline',
  1130.                                 'contents' => fopen('http://poc.kyvala.com/uploads/createCryptographerequest/pipeline-with-fp-crypto_id.txt', 'r'),
  1131.                                 'filename' => 'pipeline-with-fp-CR.txt',
  1132.                                 'headers'  => [
  1133.                                     'Content-Type' => 'application/json'
  1134.                                 ]
  1135.                             ]
  1136.                         ]]);*/
  1137.                         
  1138.                         $request $client->post"https://idencode.tech5-sa.com/v1/enroll", [
  1139.                         'headers'=> ['Authorization' => 'Basic Y2VkcmljLnRjaHVpc3NldUBreXZhbGFpZC5jb206QzNkcjFjQFQ1'],
  1140.                         'multipart' => 
  1141.                         [
  1142.                             [
  1143.                                 'name' => 'face_image',
  1144.                                 'contents' => fopen($face'r'),
  1145.                                 'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFace(),
  1146.                                 'headers'  => [
  1147.                                     'Content-Type' => 'image/png'
  1148.                                 ]
  1149.                             ],
  1150.                             [
  1151.                                 'name' => 'demog',
  1152.                                 'contents' => fopen($this->getParameter('kyvala_directory').'/'.$sqrRef.'/crypto/demog.txt''r'),
  1153.                                 'filename' => 'demog.txt',
  1154.                                 'headers'  => [
  1155.                                     'Content-Type' => 'application/octet-stream'
  1156.                                 ]
  1157.                             ],
  1158.                             [
  1159.                                 'name' => 'finger_image_r2',
  1160.                                 'contents' => fopen($fpr2'r'),
  1161.                                 'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp2(),
  1162.                                 'headers'  => [
  1163.                                     'Content-Type' => 'image/png'
  1164.                                 ]
  1165.                             ],
  1166.                             [
  1167.                                 'name' => 'finger_image_l2',
  1168.                                 'contents' => fopen($fpl2'r'),
  1169.                                 'filename' => $cryptographe->getCheckQr()->getPersonBiometrics()[0]->getFp7(),
  1170.                                 'headers'  => [
  1171.                                     'Content-Type' => 'image/png'
  1172.                                 ]
  1173.                             ],
  1174.                             [
  1175.                                 'name' => 'pipeline',
  1176.                                 'contents' => fopen('http://poc.kyvala.com/uploads/createCryptographerequest/pipeline-with-fp-crypto_id_updated.txt''r'),
  1177.                                 'filename' => 'pipeline-with-fp-CR.txt',
  1178.                                 'headers'  => [
  1179.                                     'Content-Type' => 'application/json'
  1180.                                 ]
  1181.                             ]
  1182.                         ]]);
  1183.                         $body $request->getBody();
  1184.                         //dump((string) $body);die;
  1185.                         //$stringBody = ;
  1186.                         //die;
  1187.                         
  1188.                         $response json_decode((string) $body,true);
  1189.                         //$state = "SUCCESS";
  1190.                         //$msg = "Cryptographe généré avec succès !!!";
  1191.                         //dump($response);die;
  1192.                         if(isset($response['uuid']) && isset($response['image']))
  1193.                         {            
  1194.                             $cryptographe->setCryptoUuid($response['uuid']);
  1195.                             $cryptographe->setCryptoBase64($response['image']);
  1196.                         }
  1197.                         break;                
  1198.                     case 'STAMPS':
  1199.                         //$client = new Client();
  1200.                         $client = new \GuzzleHttp\Client(['verify' => false]);
  1201.                         /* $headers = [
  1202.                             'Authorization' => 'Basic Y2VkcmljLnRjaHVpc3NldUBreXZhbGFpZC5jb206QzNkcjFjQFQ1'
  1203.                             ];
  1204.                         */
  1205.                         $request $client->post"https://idencode.tech5-sa.com/v1/enroll", [
  1206.                         'headers'=> ['Authorization' => 'Basic Y2VkcmljLnRjaHVpc3NldUBreXZhbGFpZC5jb206QzNkcjFjQFQ1'],
  1207.                         'multipart' => 
  1208.                         [                            
  1209.                             [
  1210.                                 'name' => 'demog',
  1211.                                 'contents' => fopen($this->getParameter('kyvala_directory').'/'.$sqrRef.'/crypto/demog.txt''r'),
  1212.                                 'filename' => 'demog.txt',
  1213.                                 'headers'  => [
  1214.                                     'Content-Type' => 'application/octet-stream'
  1215.                                 ]
  1216.                             ],
  1217.                             [
  1218.                                 'name' => 'pipeline',
  1219.                                 'contents' => fopen('http://poc.kyvala.com/uploads/createCryptographerequest/Pipe-line-for-taxes.txt''r'),
  1220.                                 'filename' => 'pipeline-with-fp-CR.txt',
  1221.                                 'headers'  => [
  1222.                                     'Content-Type' => 'application/json'
  1223.                                 ]
  1224.                             ]
  1225.                         ]]);                        
  1226.                         
  1227.                         $body $request->getBody();
  1228.                         //dump((string) $body);
  1229.                         //$stringBody = ;
  1230.                         //die;
  1231.                         
  1232.                         $response json_decode((string) $body,true);
  1233.                         //$state = "SUCCESS";
  1234.                         //$msg = "Cryptographe généré avec succès !!!";
  1235.                         if(isset($response['uuid']) && isset($response['image']))
  1236.                         {            
  1237.                             $cryptographe->setCryptoUuid($response['uuid']);
  1238.                             $cryptographe->setCryptoBase64($response['image']);
  1239.                         }
  1240.                         break;
  1241.                     
  1242.                     default:
  1243.                         # code...
  1244.                         die("Error in action");
  1245.                         break;
  1246.                 }                
  1247.                 
  1248.             } catch (ClientException $e
  1249.             {
  1250.                 $state "FAILED";
  1251.                 $fst = new Filesystem();
  1252.                 //$fs->appendToFile('EventLogFiles.txt', "\r\n ".json_encode($error));
  1253.                 $fst->appendToFile('log/Cryptographe/Exceptions/'.date("Y")."/".date("d-m-Y").'/guzzleException.txt'"\r\n ".date("d-m-Y H:i:s")." - request : ".Psr7\Message::toString($e->getRequest()));
  1254.                 $fst->appendToFile('log/Cryptographe/Exceptions/'.date("Y")."/".date("d-m-Y").'/guzzleException.txt'"\r\n ".date("d-m-Y H:i:s")." - Response : ".Psr7\Message::toString($e->getResponse()));
  1255.                 $msg Psr7\Message::toString($e->getResponse());
  1256.             }
  1257.             /*
  1258.             $retour = [
  1259.                 'ETAT'=>$state,
  1260.                 'retour'=>$response,
  1261.                 'Message'=>$msg
  1262.             ];*/
  1263.         return $cryptographe;
  1264.     }
  1265. }