src/EventSubscriber/EntityStatusUpdateSubscriber.php line 11

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Pimcore\Event\Model\DataObjectEvent;
  4. use Pimcore\Model\DataObject\Organization;
  5. use Carbon\Carbon;
  6. class EntityStatusUpdateSubscriber
  7. {
  8.     public function postUpdate(DataObjectEvent $event)
  9.     {
  10.         $object $event->getObject();
  11.         // Ensure the object is an instance of Organization
  12.         if ($object instanceof Organization) {
  13.             // Check if the status is "trial"
  14.             if ($object->getStatus() === "trial") {
  15.                 $today Carbon::now(); // Get the current date
  16.                 $trialLimitDays = (int) $object->getTrialLimit(); // Get trial limit in days
  17.                 $activationDate Carbon::parse($object->getPackageActivationDate()); // Parse the activation date
  18.                 // Calculate the trial expiration date
  19.                 $trialExpirationDate = (clone $activationDate)->addDays($trialLimitDays);
  20.                 // If the current date is strictly greater than the trial expiration date
  21.                 if ($today->greaterThan($trialExpirationDate)) {
  22.                     $object->setStatus("expired"); // Set status to "expired"
  23.                     $object->save(); // Persist the changes
  24.                 }
  25.             }
  26.         }
  27.     }
  28. }