src/EventListener/CustomerResourceGenerixAddOrUpdateListener.php line 68

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
  4. use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use App\Entity\SiteSacZipSelection;
  7. use App\Services\PPMCErpSynchroService;
  8. use App\Exception\PPMCSynchroException;
  9. use App\Entity\Customer\Customer;
  10. use Carbon\Carbon;
  11. use DateTime;
  12. use Symfony\Component\Messenger\MessageBusInterface;
  13. use App\Message\SyncCustomer;
  14. use Symfony\Component\Process\Process;
  15. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  16. /**
  17.  * Créer ou met à jour un client dans Generix lorsque :
  18.  * - Le client modifie ses informations (les adresses livraisons ne sont pas prise en compte)
  19.  * - Un nouveau client s'inscrit
  20.  * - On créer un nouveau client dans l'admin
  21.  */
  22. class CustomerResourceGenerixAddOrUpdateListener
  23. {
  24.     private $ppmcErpSynchroService;
  25.     private $bus;
  26.     private $session;
  27.     public function __construct(PPMCErpSynchroService $ppmcErpSynchroServiceMessageBusInterface $busSessionInterface $session)
  28.     {
  29.         $this->ppmcErpSynchroService $ppmcErpSynchroService;
  30.         $this->bus $bus;
  31.         $this->session $session;
  32.     }
  33.     public function onLogin(InteractiveLoginEvent $event) {
  34.         $this->session->set('on_login'true);
  35.     }
  36.     /**
  37.      * Mise à jour des informations client dans Generix
  38.      * après mise à jour sur le site (post update)
  39.      */
  40.     public function onPostUpdate(ResourceControllerEvent $event)
  41.     {
  42.         $customer $event->getSubject();
  43.         // echo 'ici';
  44.         // exit();
  45.         // Il faut que le client possède un id generix.
  46.         $this->bus->dispatch(new SyncCustomer($customer->getId(), true));
  47.         // $customerGenerixId = $customer->getGenerixIdCustomer();
  48.         // if (empty($customerGenerixId) == false) {
  49.         //     try {
  50.         //         $this->ppmcErpSynchroService->updateCustomerGenerix($customerGenerixId, $customer);
  51.         //     } catch (PPMCSynchroException $e) {
  52.         //         // On ignore ce genre d'erreur, car c'est des timeout 
  53.         //         // ou service indisponible.
  54.         //     }
  55.         // }
  56.     }
  57.     /**
  58.      * Création d'un nouveau client dans generix
  59.      * avant de le créer sur le site, pour récupérer son id generix
  60.      */
  61.     public function onPostCreate(ResourceControllerEvent $event)
  62.     {
  63.         $customer $event->getSubject();
  64.         $this->session->set('on_subscribe'true);
  65.         try {
  66.             $processActions = ['/usr/bin/php''/home/ppmcdev/bin/console',  'ppmc:sync-customer''--customerId='.$customer->getId()];
  67.             $process = new Process($processActions);
  68.             $process->run(function ($type$buffer) {});
  69.             
  70.             // $result = $this->ppmcErpSynchroService->addCustomerGenerix($customer);
  71.             // $customer->setGenerixIdCustomer($result->getIdCustomerGenerixId());
  72.             // $customer->setGenerixIdCardCustomer($result->getGiftCardGenerixId());
  73.             // Complète d'autres informations, eventuellement
  74.             // if (empty($customer->getFirstName()) == true) {
  75.             //     $customer->setFirstName($result->getFirstName());
  76.             // }
  77.             // if (empty($customer->getLastName()) == true) {
  78.             //     $customer->setLastName($result->getLastName());
  79.             // }
  80.             // if (empty($customer->getBirthday()) == true) {
  81.             //     if (empty($result->getBirthday()) == false) {
  82.             //          $customer->setBirthday(
  83.             //             Carbon::createFromFormat(
  84.             //                 'Y-m-d',
  85.             //                 $result->getBirthday()
  86.             //             )->toDateTime()
  87.             //         );
  88.             //     }
  89.             // }
  90.             // if (empty($customer->getPhoneNumber()) == true) {
  91.             //     $customer->setPhoneNumber(empty($result->getPhoneNumber()) ? null : $result->getPhoneNumber());
  92.             // }
  93.             // $customer->setOriginOfCustomer(empty($result->getOrigin()) ? Customer::DEFAULT_ORIGIN_OF_CUSTOMER : $result->getOrigin());
  94.             // $this->bus->dispatch(new SyncCustomer($customer->getId()));
  95.             // Puis on met à jour dans Generix
  96.             // $this->ppmcErpSynchroService->updateCustomerGenerix($result->getIdCustomerGenerixId(), $customer);
  97.             
  98.             $customer->setLastSynchroDate(new DateTime());
  99.         } catch (PPMCSynchroException $e) {
  100.             // On ignore ce genre d'erreur, car c'est des timeout 
  101.             // ou service indisponible.
  102.         }
  103.     }
  104. }