<?php
namespace App\EventSubscriber;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Model\DataObject\Organization;
use Carbon\Carbon;
class EntityStatusUpdateSubscriber
{
public function postUpdate(DataObjectEvent $event)
{
$object = $event->getObject();
// Ensure the object is an instance of Organization
if ($object instanceof Organization) {
// Check if the status is "trial"
if ($object->getStatus() === "trial") {
$today = Carbon::now(); // Get the current date
$trialLimitDays = (int) $object->getTrialLimit(); // Get trial limit in days
$activationDate = Carbon::parse($object->getPackageActivationDate()); // Parse the activation date
// Calculate the trial expiration date
$trialExpirationDate = (clone $activationDate)->addDays($trialLimitDays);
// If the current date is strictly greater than the trial expiration date
if ($today->greaterThan($trialExpirationDate)) {
$object->setStatus("expired"); // Set status to "expired"
$object->save(); // Persist the changes
}
}
}
}
}