src/EventSubscriber/User/UserPostSerializerSubscriber.php line 31

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: SUSAN MEDINA
  5.  * Date: 22/03/2019
  6.  * Time: 02:42 PM
  7.  */
  8. namespace App\EventSubscriber\User;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Symfony\Component\HttpKernel\Event\ViewEvent;
  11. use Symfony\Component\HttpKernel\KernelEvents;
  12. use ApiPlatform\Core\EventListener\EventPriorities;
  13. use App\Repository\App\VendorRepository;
  14. use App\Services\UserService;
  15. class UserPostSerializerSubscriber implements EventSubscriberInterface
  16. {
  17.     private $userService;
  18.     private $vendorRepository;
  19.     public function __construct(
  20.         UserService $userService,
  21.         VendorRepository $vendorRepository
  22.     ){
  23.         $this->userService $userService;
  24.         $this->vendorRepository $vendorRepository;
  25.     }
  26.     public function onKernelView(ViewEvent $event)
  27.     {
  28.         $request $event->getRequest();
  29.         $userResult $event->getControllerResult();
  30.         $route $request->attributes->get('_route');
  31.         $routesItem = array(
  32.             'api_users_post_collection',
  33.             'api_users_get_item',
  34.             'api_users_put_item',
  35.             'api_users_put_notification_configuration_item'
  36.         );
  37.         $routesCollection = array(
  38.             'api_users_get_collection',
  39.             'api_users_get_taskmasters_collection',
  40.             'api_users_get_operators_collection'
  41.         );
  42.         if (!in_array($routearray_merge($routesItem$routesCollection)))
  43.             return;
  44.         $vendor null;
  45.         $vendorId $request->query->get('vendorStaff_vendor');
  46.         $data json_decode($request->getContent(), true);
  47.         if (isset($data['vendor']) &&
  48.             ('api_users_post_collection' == $route || 'api_users_put_item' == $route)
  49.         ) {
  50.             $vendorId $data['vendor'];
  51.         }
  52.         if ($vendorId) {
  53.             $vendor $this->vendorRepository->find($vendorId);
  54.         }else if($route == 'api_users_put_notification_configuration_item'){
  55.             $vendor $request->get('data')->getVendorStaff()[0]->getVendor();
  56.         }
  57.         $userResult json_decode($userResulttrue);
  58.         if (in_array($route$routesCollection)) {
  59.             foreach ($userResult as &$user) {
  60.                 $user $this->userService->formatNormalize($user$vendor$route$request);
  61.             }
  62.         } else {
  63.             $userResult $this->userService->formatNormalize($userResult$vendor$route$request);
  64.         }
  65.         $userResult json_encode($userResult);
  66.         $event->setControllerResult($userResult);
  67.     }
  68.     public static function getSubscribedEvents()
  69.     {
  70.         return [
  71.             KernelEvents::VIEW => ['onKernelView'EventPriorities::POST_SERIALIZE]
  72.         ];
  73.     }
  74. }