src/EventSubscriber/StdWebUsersSubscriber.php line 58

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Admin\Entity\StdWebUsers;
  4. use App\Event\StdWebUsersNewAddressEvent;
  5. use App\Event\StdWebUsersUpdateAddressEvent;
  6. use App\Event\StdWebUsersActivatedEvent;
  7. use App\API\SavannahBusClient;
  8. use App\Event\StdDeleteUserDataEvent;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. class StdWebUsersSubscriber implements EventSubscriberInterface
  12. {
  13.     private $entityManager;
  14.     private $savannahclient;
  15.     public function __construct(EntityManagerInterface $entityManager,SavannahBusClient $client)
  16.     {
  17.         $this->entityManager=$entityManager;
  18.         $this->savannahclient=$client;
  19.     }
  20.     public static function getSubscribedEvents(): array
  21.     {
  22.         return [
  23.             StdWebUsersActivatedEvent::NAME => 'onActivatedWebuser',
  24.             StdWebUsersNewAddressEvent::NAME => 'onNewAddress',
  25.             StdWebUsersUpdateAddressEvent::NAME => 'onUpdateAddress',
  26.             StdDeleteUserDataEvent::NAME => 'onDeleteUserData',
  27.         ];
  28.     }
  29.     public function onNewAddress(StdWebUsersNewAddressEvent $event)
  30.     {
  31.         $address=$event->getWebUserAddress();
  32.         if(getenv("SAVANNAH_BUS_URL")!=""){
  33.             $response=$this->savannahclient->newUserAddress($address);
  34.         }
  35.     }
  36.     public function onUpdateAddress(StdWebUsersUpdateAddressEvent $event)
  37.     {
  38.         $address=$event->getWebUserAddress();
  39.         if(getenv("SAVANNAH_BUS_URL")!=""){
  40.             $response=$this->savannahclient->updateUserAddress($address);
  41.         }
  42.     }
  43.     public function onActivatedWebuser(StdWebUsersActivatedEvent $event)
  44.     {
  45.         $webuser=$event->getWebuser();
  46.         if(getenv("SAVANNAH_BUS_URL")!=""){
  47.             $response=$this->savannahclient->newUser($webuser);
  48.             if($response->success){
  49.                 $webuser->setErpCode($response->code);
  50.             }
  51.         }
  52.     }
  53.     public function onDeleteUserData(StdDeleteUserDataEvent $event)
  54.     {
  55.         $address=$event->getAddress();
  56.         // find user to anonimize
  57.         $usersToDeleteData=$this->entityManager->getRepository(StdWebUsers::class)->findByEmail($address);
  58.         foreach($usersToDeleteData as $user){
  59.             $user->setName("xxxxx");
  60.             $user->setPhone("");
  61.             $user->setMobile("");
  62.             $user->setUsername("xxxxx");
  63.             $user->setEmail('xxxxx@xxxx.xx');
  64.             // anonimize addresses
  65.             foreach ($user->getAddresses() as $address) {
  66.                 $address->setName("xxxxx");
  67.                 $address->setPhone("");
  68.                 $address->setMobile("");
  69.                 $user->addAddress($address);
  70.             }
  71.             $this->entityManager->persist($user);
  72.         }
  73.         $this->entityManager->flush();
  74.     }
  75. }
  76. ?>