<?php
namespace App\EventSubscriber\Game;
use App\Entity\Game;
use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\RequestStack;
class UpdateGameSeedsSubscriber implements EventSubscriberInterface
{
public function __construct(private RequestStack $requestStack)
{
}
public static function getSubscribedEvents(): array
{
return [
BeforeEntityUpdatedEvent::class => ['setGameSeeds'],
BeforeEntityPersistedEvent::class => ['setGameSeeds'],
];
}
public function setGameSeeds(BeforeEntityUpdatedEvent|BeforeEntityPersistedEvent $event): void
{
$entity = $event->getEntityInstance();
if (!($entity instanceof Game)) {
return;
}
$request = $this->requestStack->getMainRequest();
if (!isset($request->files->get('Game')['seeds'])) {
return;
}
$uploadedFile = $request->files->get('Game')['seeds'];
if (!($uploadedFile instanceof UploadedFile)) {
return;
}
$seeds = str_replace(chr(10), '', $uploadedFile->getContent()); // remove "\n" from file content
$seedsArray = explode(',', $seeds);
$entity->setSeeds($seedsArray);
}
}