<?php
namespace App\Subscribers;
use App\Entity\User;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use App\Services\UploadDocumentService;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* Normalisation des fichiers pour les propriété de l'entité User
* #idCard
* #certificate
*/
class FormUploadFileSubscriber implements EventSubscriberInterface {
private $uploadDocumentService;
public function __construct(UploadDocumentService $uploadDocumentService) {
$this->uploadDocumentService = $uploadDocumentService;
}
public static function getSubscribedEvents() {
return [
FormEvents::POST_SUBMIT => 'onSubmit',
];
}
public function onSubmit(FormEvent $event) {
/** @var User $user */
$user = $event->getData();
/** @var UploadedFile */
//$idCard = $event->getForm()->get('idCard')->getData();
/** Sauvegarde de la cart d'identité */
// if ($event->getForm()->isValid() && $idCard != null) {
// $fileName = explode('.',$idCard->getClientOriginalName())[0];
// $file = $this->uploadDocumentService->upload($idCard, $fileName);
// $user->setIdCard($file);
// }
/** Sauvegarde des documents pour une collectivité */
if ($event->getForm()->isValid() && ($user->getProfile() == 'Collectivité(Préfecture,Mairie)' || $user->getProfile() == "ONG,Association")) {
$certificate = $event->getForm()->get('certificateFiles')->getData();
if ($certificate != null) {
$files = $user->getCertificate();
foreach ($certificate as $value) {
$file = $this->uploadDocumentService->upload($value, $value->getClientOriginalName());
$files[] = $file;
}
$user->setCertificate($files);
}
}
}
}