<?php
namespace App\Events;
use ApiPlatform\Core\EventListener\EventPriorities;
use App\Entity\ChangeWaterBranch;
use App\Entity\ProviderWaterIntervention;
use App\Entity\ProviderWatterDelete;
use App\Services\DompdfService;
use App\Services\Pdf\ProviderWaterInterventionPdf;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Event\ViewEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class PrimeRequestEventSubscriber implements EventSubscriberInterface
{
/**
* @var DompdfService
*/
private $dompdfService;
/**
* @var ProviderWaterInterventionPdf
*/
private $providerWaterInterventionPdf;
/**
* @param DompdfService $dompdfService
* @param ProviderWaterInterventionPdf $providerWaterInterventionPdf
*/
public function __construct(DompdfService $dompdfService, ProviderWaterInterventionPdf $providerWaterInterventionPdf)
{
$this->dompdfService = $dompdfService;
$this->providerWaterInterventionPdf = $providerWaterInterventionPdf;
}
/**
* @param ViewEvent $event
* @return void
*/
public function sendMail(ViewEvent $event)
{
$object = $event->getControllerResult();
$request = $event->getRequest();
if ($object instanceof ChangeWaterBranch && $request->isMethod(Request::METHOD_POST)) {
$this->dompdfService->generatePdfChangeWaterBranch($object);
}
if ($object instanceof ProviderWatterDelete && $request->isMethod(Request::METHOD_POST)) {
$this->dompdfService->generatePdfProviderWatterDelete($object);
}
if ($object instanceof ProviderWaterIntervention && $request->isMethod(Request::METHOD_POST)) {
$this->providerWaterInterventionPdf->generatePdf($object, "providerIntervention", "pdf_provider_water_intervention_directory");
}
}
/**
* @return array<string, mixed>
*/
public static function getSubscribedEvents(): array
{
return [
KernelEvents::VIEW => ['sendMail', EventPriorities::POST_WRITE]
];
}
}