src/EventListener/AttestationListener.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Services\Functions;
  4. use Pimcore\Event\Model\ElementEventInterface;
  5. use Pimcore\Event\Model\DataObjectEvent;
  6. use Pimcore\Log\ApplicationLogger;
  7. use Symfony\Component\Messenger\MessageBusInterface;
  8. use Carbon\Carbon;
  9. use Pimcore\Log\Simple;
  10. use Pimcore\Model\DataObject;
  11. use Pimcore\Model\DataObject\Attestation;
  12. use Pimcore\Model\DataObject\LocationSource;
  13. use Pimcore\Model\DataObject\MembershipModule;
  14. class AttestationListener
  15. {
  16.     private $bus;
  17.     private $logger;
  18.     public function __construct(MessageBusInterface $busApplicationLogger $logger)
  19.     {
  20.         $this->bus $bus;
  21.         $this->logger $logger;
  22.     }
  23.     public function onPostUpdate(ElementEventInterface $e)
  24.     {
  25.         if ($e instanceof DataObjectEvent) {
  26.             $object $e->getObject();
  27.             if ($object instanceof Attestation) {
  28.                 $this->saveMembership($object);
  29.             }
  30.         }
  31.     }
  32.     protected function saveMembership(Attestation $object)
  33.     {
  34.         try {
  35.             /**  $pathConvention could be "/restricted-assets/{MembersKey}-{MembersUsername}" */
  36.             $pathConvention Functions::getLeadPathConvention([Carbon::today()->toDateString()]);
  37.             $data unserialize($object->getAttestationData());
  38.             $email = isset($data['email']) ? $data['email'] : null;
  39.             $locatore = isset($data['locatori'][0]) ? $data['locatori'][0] : [];
  40.             $sourceObj LocationSource::getById($object->getAccount());
  41.             if (!empty($locatore)) {
  42.                 if (!empty($email)) {
  43.                     if (null == ($membership MembershipModule::getByEmail($email1))) {
  44.                         // Check Asset folder
  45.                         $folder DataObject\Folder::getByPath('/membership/' $pathConvention);
  46.                         if (!($folder instanceof DataObject\Folder))
  47.                             $folder DataObject\Service::createFolderByPath('/membership/' $pathConvention);
  48.                         $time Carbon::now();
  49.                         $membership = new MembershipModule();
  50.                         $membership->getMembershipRequestDate($time);
  51.                         $membership->setParentId($folder->getId());
  52.                         $membership->setKey(\Pimcore\Model\Element\Service::getValidKey($email '-' $time->getTimestamp(), 'object'));
  53.                         $membership->setPublished(true);
  54.                         $membership->setName($locatore['nome']);
  55.                         $membership->setSurname($locatore['cognome']);
  56.                         $membership->setFiscalcode($locatore['cf']);
  57.                         if (isset($locatore['datanascita']) && !empty($locatore['datanascita'])) {
  58.                             $membership->setBirthDate(Carbon::createFromFormat('d/m/Y'$locatore['datanascita']));
  59.                         }
  60.                         $membership->setBirthPlace($locatore['paesenascita']);
  61.                         $membership->setCity($locatore['citta']);
  62.                         $membership->setAddress($locatore['residenza']);
  63.                         $membership->setCap($locatore['codicePostale']);
  64.                         $membership->setAddressNumber($locatore['civico']);
  65.                         $membership->setIdentityNumber($locatore['ci']);
  66.                         $membership->setEmail($email);
  67.                         $membership->setMobile($data['phone']);
  68.                         $membership->setAttestation($object);
  69.                         $membership->setAccount($sourceObj->getStripeAccount()->getAccount());
  70.                         $membership->save();
  71.                     } else {
  72.                         $membership->setName($locatore['nome']);
  73.                         $membership->setSurname($locatore['cognome']);
  74.                         $membership->setFiscalcode($locatore['cf']);
  75.                         if (isset($locatore['datanascita']) && !empty($locatore['datanascita'])) {
  76.                             $membership->setBirthDate(Carbon::createFromFormat('d/m/Y'$locatore['datanascita']));
  77.                         }
  78.                         $membership->setBirthPlace($locatore['paesenascita']);
  79.                         $membership->setCity($locatore['citta']);
  80.                         $membership->setAddress($locatore['residenza']);
  81.                         $membership->setCap($locatore['codicePostale']);
  82.                         $membership->setAddressNumber($locatore['civico']);
  83.                         $membership->setIdentityNumber($locatore['ci']);
  84.                         $membership->setEmail($email);
  85.                         $membership->setMobile($data['phone']);
  86.                         $membership->setAttestation($object);
  87.                         $membership->setAccount($sourceObj->getStripeAccount()->getAccount());
  88.                         $membership->save();
  89.                     }
  90.                 } else {
  91.                     $membershipModule = new MembershipModule\Listing();
  92.                     $membershipModule->setCondition('name = ? AND surname = ? AND attestation__id = ?', [
  93.                         $locatore['nome'],
  94.                         $locatore['cognome'],
  95.                         $object->getId()
  96.                     ]);
  97.                     $membershipModule->setLimit(1);
  98.                     $membership $membershipModule->current();
  99.                     if ($membership instanceof MembershipModule) {
  100.                         $membership->setName($locatore['nome']);
  101.                         $membership->setSurname($locatore['cognome']);
  102.                         $membership->setFiscalcode($locatore['cf']);
  103.                         if (isset($locatore['datanascita']) && !empty($locatore['datanascita'])) {
  104.                             $membership->setBirthDate(Carbon::createFromFormat('d/m/Y'$locatore['datanascita']));
  105.                         }
  106.                         if (isset($locatore['paesenascita'])) {
  107.                             $membership->setBirthPlace($locatore['paesenascita']);
  108.                         }
  109.                         
  110.                         if (isset($locatore['citta'])) {
  111.                             $membership->setCity($locatore['citta']);
  112.                         }
  113.                         if (isset($locatore['residenza'])) {
  114.                             $membership->setAddress($locatore['residenza']);
  115.                         }
  116.                         if (isset($data['phone'])) {
  117.                             $membership->setMobile($data['phone']);
  118.                         }
  119.                         if (isset($data['codicePostale'])) {
  120.                             $membership->setCap($locatore['codicePostale']);
  121.                         }
  122.                         if (isset($data['civico'])) {
  123.                             $membership->setAddressNumber($locatore['civico']);
  124.                         }
  125.                         
  126.                         
  127.                         $membership->setIdentityNumber($locatore['ci']);
  128.                         $membership->setEmail($email);
  129.                         $membership->setAttestation($object);
  130.                         // $membership->setAccount($sourceObj->getStripeAccount()->getAccount());
  131.                         $membership->save();
  132.                     } else {
  133.                         // Check Asset folder
  134.                         $folder DataObject\Folder::getByPath('/membership/' $pathConvention);
  135.                         if (!($folder instanceof DataObject\Folder))
  136.                             $folder DataObject\Service::createFolderByPath('/membership/' $pathConvention);
  137.                         $time Carbon::now();
  138.                         $membership = new MembershipModule();
  139.                         $membership->getMembershipRequestDate($time);
  140.                         $membership->setParentId($folder->getId());
  141.                         $membership->setKey(\Pimcore\Model\Element\Service::getValidKey($locatore['nome'] . '-' $locatore['cognome'] . '-' $time->getTimestamp(), 'object'));
  142.                         $membership->setPublished(true);
  143.                         $membership->setName($locatore['nome']);
  144.                         $membership->setSurname($locatore['cognome']);
  145.                         $membership->setFiscalcode($locatore['cf']);
  146.                         if (isset($locatore['datanascita']) && !empty($locatore['datanascita'])) {
  147.                             $membership->setBirthDate(Carbon::createFromFormat('d/m/Y'$locatore['datanascita']));
  148.                         }
  149.                         if (isset($locatore['paesenascita'])) {
  150.                             $membership->setBirthPlace($locatore['paesenascita']);
  151.                         }
  152.                         
  153.                         if (isset($locatore['citta'])) {
  154.                             $membership->setCity($locatore['citta']);
  155.                         }
  156.                         if (isset($locatore['residenza'])) {
  157.                             $membership->setAddress($locatore['residenza']);
  158.                         }
  159.                         if (isset($data['phone'])) {
  160.                             $membership->setMobile($data['phone']);
  161.                         }
  162.                         if (isset($data['codicePostale'])) {
  163.                             $membership->setCap($locatore['codicePostale']);
  164.                         }
  165.                         if (isset($data['civico'])) {
  166.                             $membership->setAddressNumber($locatore['civico']);
  167.                         }
  168.                         $membership->setIdentityNumber($locatore['ci']);
  169.                         $membership->setEmail($email);
  170.                         
  171.                         
  172.                         $membership->setAttestation($object);
  173.                         $membership->setAccount($sourceObj->getStripeAccount()->getAccount());
  174.                         $membership->save();
  175.                     }
  176.                 }
  177.             }
  178.         } catch (\Exception $e) {
  179.             $this->logger->error($e);
  180.         }
  181.     }
  182.     public function onPostAdd(ElementEventInterface $e)
  183.     {
  184.         if ($e instanceof DataObjectEvent) {
  185.             $object $e->getObject();
  186.             if ($object instanceof Attestation) {
  187.                 $this->saveMembership($object);
  188.             }
  189.         }
  190.     }
  191. }