<?php
namespace Ew\GrecoAdministration\Subscriber;
use Ew\GrecoAdministration\Service\IndividualCodeCustomService;
use Shopware\Core\Checkout\Cart\Event\CheckoutOrderPlacedEvent;
use Shopware\Core\Framework\DataAbstractionLayer\EntityWriteResult;
use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityWrittenEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class IndividualCodeWrittenSubscriber implements EventSubscriberInterface
{
private IndividualCodeCustomService $customService;
public function __construct(
IndividualCodeCustomService $customService
) {
$this->customService = $customService;
}
public static function getSubscribedEvents(): array
{
return [
'promotion_individual_code.written' => 'onIndividualCodeWritten'
];
}
public function onIndividualCodeWritten(EntityWrittenEvent $event): void
{
$writtenResults = $event->getWriteResults();
foreach ($writtenResults as $writeResult) {
$operation = $writeResult->getOperation();
if ($operation === EntityWriteResult::OPERATION_INSERT) {
$payload = $writeResult->getPayload();
$prefix = $this->customService->getPromotionPrefix($payload['promotionId'], $event->getContext());
$this->customService->incrementVoucherNumber($payload['id'], $payload['promotionId'], $prefix, $event->getContext());
}
}
}
}