- <?php
- namespace App\EventListener;
- use App\Config;
- use App\Services\Aws\S3;
- use Symfony\Component\HttpKernel\Event\RequestEvent;
- use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface as TokenStorage;
- class RequestListener
- {
-     private $awsComponentsS3;
-     private $tokenStorage;
-     public function __construct(TokenStorage $tokenStorage, S3 $awsComponentsS3)
-     {
-         $this->awsComponentsS3 = $awsComponentsS3;
-         $this->tokenStorage = $tokenStorage;
-     }
-     public function onKernelRequest(RequestEvent $event)
-     {
-         if ($event->isMainRequest()) {
-             try {
-                 if ($event->getRequest()->files && sizeof($event->getRequest()->files)) {
-                     $date = new \Datetime('now');
-                     $route =  $event->getRequest()->get('_route') ?? null;
-                     foreach ($event->getRequest()->files as $key => $value) {
-                         $userEmail = $this->tokenStorage->getToken() && !is_string($this->tokenStorage->getToken()->getUser()) ? $this->tokenStorage->getToken()->getUser()->getEmail() : null;
-                         $fileKey = Config::S3_MAFO_UPLOADS_DIRECTORY . '/' . $date->format('c') . '_' . $userEmail . '_' . $route . '_' . $value->getClientOriginalName();
-                         $this->awsComponentsS3->uploadFileToS3($value, $fileKey);
-                     }
-                     return;
-                 }
-             } catch (\Exception $e) {
-             }
-         }
-     }
- }