<?php
namespace App\Events;
use App\Entity\EasyPermitForm2;
use App\Services\DompdfService;
use App\Services\TraitementUrl;
use App\Services\TraitementImage;
use App\Mybase\Services\Base\SBase;
use App\Entity\PermitEnvironmentalForm;
use Symfony\Component\HttpKernel\KernelEvents;
use App\Services\Api\PermitEnvironmentalService;
use Symfony\Component\HttpKernel\Event\ViewEvent;
use ApiPlatform\Core\EventListener\EventPriorities;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class CreatePdfEnvironment implements EventSubscriberInterface
{
/**
* @var SBase
*/
private $sBase;
/**
* @var TraitementImage
*/
private $image;
/**
* @var TraitementUrl
*/
private $traitementUrl;
/**
* @var DompdfService
*/
private $dompdfService;
/**
* @var PermitEnvironmentalService
*/
private $permitEnvironmentalService;
public function __construct(
SBase $sBase,
TraitementImage $image,
TraitementUrl $traitementUrl,
DompdfService $dompdfService,
PermitEnvironmentalService $permitEnvironmentalService
) {
$this->sBase = $sBase;
$this->image = $image;
$this->traitementUrl = $traitementUrl;
$this->dompdfService = $dompdfService;
$this->permitEnvironmentalService = $permitEnvironmentalService;
}
/**
* @return array<string, mixed>
*/
public static function getSubscribedEvents(): array
{
return [
KernelEvents::VIEW => ['createPdf', EventPriorities::POST_WRITE]
];
}
/**
* @param ViewEvent $event
* @return void
*/
public function createPdf(ViewEvent $event)
{
$result = $event->getControllerResult();
$method = $event->getRequest()->getMethod();
$data = $event->getRequest()->request->all();
if (($result instanceof PermitEnvironmentalForm || $result instanceof EasyPermitForm2) && $method === "POST") {
$class = $result->getPermitClass();
$environmentRequestId = $result->getEnvironmentRequest()->getId();
$data['images'] = $this->image->imageBase64EnvironmentForm();
$path = '/uploads/environment/annexe/';
$annexFile = [];
foreach ($result->getAnnexePermit() as $annex) {
$files = $annex->getFiles();
foreach ($files as $file) {
$filename = $file->getName();
$annexFile[] = $path.$filename;
}
}
if ($result instanceof PermitEnvironmentalForm) {
$path = [$this->traitementUrl->getUrlServer() . $this->dompdfService->createPdfEnvironmentForm($result, $data)];
} else {
$path = [$this->traitementUrl->getUrlServer() . $this->dompdfService->createPdfEasyPermit2($result, $data)];
}
$datas = array_merge($path, $annexFile);
$dataForMail = [
"urlFile" => $data["urlFile"],
"urlMini" => $data["urlMini"],
"idTheProperty" => $data["theProperty"]
];
$this->permitEnvironmentalService->sendAllMail($dataForMail);
$permit = $result->setEnvironmentRequest($this->permitEnvironmentalService->dateGenerator($class, $environmentRequestId));
$this->sBase->save($permit);
$event->setResponse($this->sBase->jsonResponseOkNoData($datas, "create and send pdf success"));
}
}
}