<?php declare(strict_types=1);
namespace Dvdw\Events\Content\DvdwEvent\Struct;
use Dvdw\Events\Content\DvdwEvent\DvdwEventEntity;
use Shopware\Core\Framework\Struct\Struct;
class DvdwEventContextExtension extends Struct
{
public CONST KEY = 'currentDvdwEvent';
public CONST PHASE_PROMO_HIDE = 'phase-promo-hide';
public CONST PHASE_PROMO_SHOW = 'phase-promo-show';
public CONST PHASE_PROMO_USE = 'phase-promo-use';
public CONST PHASE_THANK_YOU = 'phase-thank-you';
protected DvdwEventEntity $event;
protected string $phase;
public function __construct(DvdwEventEntity $event)
{
$this->event = $event;
$this->phase = $this->calculatePhase($event);
}
public function getEvent(): DvdwEventEntity
{
return $this->event;
}
public function getPhase(): string
{
return $this->phase;
}
private function calculatePhase(DvdwEventEntity $event): string
{
$now = new \DateTimeImmutable('now', new \DateTimeZone('Europe/Brussels'));
if ($event->getStartDatePromoEnd() <= $now) {
return self::PHASE_THANK_YOU;
}
if ($event->getStartDatePromoUse() <= $now) {
return self::PHASE_PROMO_USE;
}
if ($event->getStartDatePromoShow() <= $now) {
return self::PHASE_PROMO_SHOW;
}
return self::PHASE_PROMO_HIDE;
}
}