<?php
/**
* Created by PhpStorm.
* User: sebastiantovar
* Date: 2019-04-03
* Time: 16:47
*/
namespace App\EventSubscriber\Vendor;
use App\Exception\VendorException;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
use Symfony\Component\HttpKernel\Event\ViewEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use ApiPlatform\Core\EventListener\EventPriorities;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\KernelEvents;
use App\Entity\App\Vendor;
use App\Repository\App\VendorRepository;
use App\Repository\App\RoleRepository;
use App\Services\VendorService;
class VendorPostValidateSubscriber implements EventSubscriberInterface
{
private $tokenStorage;
private $authorizationChecker;
private $vendorService;
private $roleRepository;
private $vendorRepository;
public function __construct(
TokenStorageInterface $tokenStorage,
AuthorizationCheckerInterface $checker,
VendorService $vendorService,
VendorRepository $vendorRepository,
RoleRepository $roleRepository
) {
$this->tokenStorage = $tokenStorage;
$this->authorizationChecker = $checker;
$this->vendorService = $vendorService;
$this->roleRepository = $roleRepository;
$this->vendorRepository = $vendorRepository;
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() {
return [
KernelEvents::VIEW => ['prepareUserData', EventPriorities::POST_VALIDATE]
];
}
/**
* @param ViewEvent $event
* @throws VendorException
*/
public function prepareUserData(ViewEvent $event) {
$vendor = $event->getControllerResult();
$method = $event->getRequest()->getMethod();
if (!($vendor instanceof Vendor) ||
(Request::METHOD_POST !== $method && Request::METHOD_PUT !== $method)) {
return;
}
$mediaContent = $vendor->getMediaContent();
if ($mediaContent !== null && $mediaContent !== 0)
$this->vendorService->validateMediaContent($vendor, $mediaContent);
}
}