src/Controller/Website/GTInscriptionController.php line 58

Open in your IDE?
  1. <?php
  2. // src/Controller/TaskController.php
  3. namespace App\Controller\Website;
  4. use App\Message\NewGTFile;
  5. use App\Message\NewGTMessage;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Sulu\Bundle\MediaBundle\Media\Manager\MediaManagerInterface;
  10. use Symfony\Component\Security\Core\Security;
  11. use Symfony\Component\Messenger\MessageBusInterface;
  12. use App\Message\NewInscription;
  13. use Sulu\Bundle\MediaBundle\Collection\Manager\CollectionManager;
  14. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  15. class GTInscriptionController extends AbstractController
  16. {
  17.     /**
  18.      * @var MediaManagerInterface $mediaManager
  19.      */
  20.     private MediaManagerInterface $mediaManager;
  21.     /**
  22.      * @var Security $security
  23.      */
  24.     private Security $security;
  25.     /**
  26.      * @var MessageBusInterface $bus
  27.      */
  28.     private MessageBusInterface $bus;
  29.     /**
  30.      * @var CollectionManager $collectionManager
  31.      */
  32.     private CollectionManager $collectionManager;
  33.     /**
  34.      * @var UrlGeneratorInterface $urlGenerator
  35.      */
  36.     private UrlGeneratorInterface $urlGenerator;
  37.     public function __construct(
  38.         Security $security,
  39.         MediaManagerInterface $mediaManager,
  40.         MessageBusInterface $bus,
  41.         CollectionManager $collectionManager,
  42.         UrlGeneratorInterface $urlGenerator
  43.     ) {
  44.         $this->security $security;
  45.         $this->mediaManager $mediaManager;
  46.         $this->bus $bus;
  47.         $this->collectionManager $collectionManager;
  48.         $this->urlGenerator $urlGenerator;
  49.     }
  50.     public function addUserToGt(Request $request): Response
  51.     {
  52.         $uuid $request->query->get('uuid');
  53.         $user $this->security->getUser();
  54.         if (empty($user)) {
  55.             return $this->redirect($this->urlGenerator->generate('sulu_community.login'));
  56.         }
  57.         $user_id $user->getContact()->getId();
  58.         $locale $request->getLocale();
  59.         $array = [
  60.             "user_id" => $user_id,
  61.             "uuid" => $uuid,
  62.             "locale" => $locale
  63.         ];
  64.         $content json_encode($array);
  65.         $this->bus->dispatch(new NewInscription($content));
  66.         sleep(3);
  67.         exec('rm -rf /var/www/html/var/cache/common/*');
  68.         return $this->redirect($request->server->get('HTTP_REFERER'));
  69.     }
  70.     public function addMessageToGt(Request $request): Response
  71.     {
  72.         $message $request->query->get('message');
  73.         $message nl2br(strip_tags($message));
  74.         $uuid $request->query->get('uuid');
  75.         $user $this->security->getUser();
  76.         if (empty($user)) {
  77.             return $this->redirect($this->urlGenerator->generate('sulu_community.login'));
  78.         }
  79.         $contactId $this->security->getUser()->getContact()->getId();
  80.         
  81.         $array = [
  82.             "uuid" => $uuid,
  83.             "locale" => $request->getLocale(),
  84.             "type" => "message",
  85.             "settings" => [],
  86.             "message_user" => $contactId,
  87.             "message_date" => date("Y-m-d\TH:i:s"),
  88.             "message_text" => $message
  89.         ];
  90.         $content json_encode($array);
  91.         $this->bus->dispatch(new NewGTMessage($content));
  92.         exec('rm -rf /var/www/html/var/cache/common/*');
  93.         return $this->json('');
  94.     }
  95.     public function addFileToGt(Request $request): Response
  96.     {
  97.         // 1 - j'obtiens tous les données qu'il me faut : uuid, titre du document, locale, fileVersion, fileName, userId
  98.         $uuid $request->request->get('uuid');
  99.         $title $request->request->get('title');
  100.         $locale $request->getLocale();
  101.         $file $request->files->get('fileVersion');
  102.         $fileName strip_tags($file->getClientOriginalName());
  103.         $user $this->security->getUser();
  104.         if (empty($user)) {
  105.             return $this->redirect($this->urlGenerator->generate('sulu_community.login'));
  106.         }
  107.         $user_id $this->security->getUser()->getId();
  108.         // 2 - je déclare id = null, car je vais chercher si la collection existe déjà, et si elle n'existe pas, je garde id = null
  109.         // sinon, j'applique l'id de la collection trouvé
  110.         $id null;
  111.         $collections $this->collectionManager->get('fr');
  112.         // je boucle sur mes collections et je regarde si il y a une collection avec le titre du document
  113.         foreach ($collections as $collection) {
  114.             if ($title === $collection->getTitle()) {
  115.                 $id $collection->getId();
  116.             }
  117.         }
  118.         $data = [
  119.             "id" => $id,
  120.             "title" => $title,
  121.             "locale" => $locale,
  122.             'type' => ['id' => 1],
  123.             'parent' => null,
  124.             'key' => null,
  125.         ];
  126.         $currentCollection $this->collectionManager->save($data$user_idtrue);
  127.         $collectionId $currentCollection->getId();
  128.         // 3 - une fois l'id de la collection obtenu, je vais upload le fichier sur le serveur, puis j'obtiens son ID
  129.         $theUploadedFile $this->mediaManager->save(
  130.             $file,
  131.             [
  132.                 'locale' => 'fr',
  133.                 'collection' => $collectionId,
  134.                 'title' => $fileName
  135.             ],
  136.             $user_id
  137.         );
  138.         $theUploadedFileId $theUploadedFile->getFile()->getId();
  139.         // 4 - j'envoie l'id du media, le uuid et la locale au consumer afin de placer l'id du media dans le tableau de gt_files (configuré dans le xml groupe-travail)
  140.         $array = [
  141.             "media_id" => $theUploadedFileId,
  142.             "uuid" => $uuid,
  143.             "locale" => $locale
  144.         ];
  145.         $content json_encode($array);
  146.         $this->bus->dispatch(new NewGTFile($content));
  147.         sleep(3);
  148.         exec('rm -rf /var/www/html/var/cache/common/*');
  149.         return $this->redirect($request->server->get('HTTP_REFERER'));
  150.     }
  151. }