vendor/dvdw/events/src/Content/DvdwEvent/Struct/DvdwEventContextExtension.php line 8

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Dvdw\Events\Content\DvdwEvent\Struct;
  3. use Dvdw\Events\Content\DvdwEvent\DvdwEventEntity;
  4. use Shopware\Core\Framework\Struct\Struct;
  5. class DvdwEventContextExtension extends Struct
  6. {
  7.     public CONST KEY 'currentDvdwEvent';
  8.     public CONST PHASE_PROMO_HIDE 'phase-promo-hide';
  9.     public CONST PHASE_PROMO_SHOW 'phase-promo-show';
  10.     public CONST PHASE_PROMO_USE 'phase-promo-use';
  11.     public CONST PHASE_THANK_YOU 'phase-thank-you';
  12.     protected DvdwEventEntity $event;
  13.     protected string $phase;
  14.     public function __construct(DvdwEventEntity $event)
  15.     {
  16.         $this->event $event;
  17.         $this->phase $this->calculatePhase($event);
  18.     }
  19.     public function getEvent(): DvdwEventEntity
  20.     {
  21.         return $this->event;
  22.     }
  23.     public function getPhase(): string
  24.     {
  25.         return $this->phase;
  26.     }
  27.     private function calculatePhase(DvdwEventEntity $event): string
  28.     {
  29.         $now = new \DateTimeImmutable('now', new \DateTimeZone('Europe/Brussels'));
  30.         if ($event->getStartDatePromoEnd() <= $now) {
  31.             return self::PHASE_THANK_YOU;
  32.         }
  33.         if ($event->getStartDatePromoUse() <= $now) {
  34.             return self::PHASE_PROMO_USE;
  35.         }
  36.         if ($event->getStartDatePromoShow() <= $now) {
  37.             return self::PHASE_PROMO_SHOW;
  38.         }
  39.         return self::PHASE_PROMO_HIDE;
  40.     }
  41. }