<?php
namespace App\EventSubscriber;
use App\Entity\EditRegisters;
use App\Entity\Registers;
use App\Repository\EditRegistersRepository;
use App\Repository\RegistersRepository;
use App\Repository\ThepropertyRepository;
use App\Service\MailToSend;
use App\Service\TraitementUrl;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
class EditRegistersSubscriber implements EventSubscriberInterface
{
/**
* @var MailToSend
*/
private $mailToSend;
/**
* @var EditRegisters
*/
private $editRegistersRepository;
/**
* @var Registers
*/
private $registersRepository;
private $traitementUrl;
private $thePropertyRepository;
public function __construct(
EditRegistersRepository $editRegistersRepository,
RegistersRepository $registersRepository,
ThepropertyRepository $thePropertyRepository,
MailToSend $mailToSend,
TraitementUrl $traitementUrl)
{
$this->thePropertyRepository = $thePropertyRepository;
$this->traitementUrl = $traitementUrl;
$this->mailToSend = $mailToSend;
$this->editRegistersRepository = $editRegistersRepository;
$this->registersRepository = $registersRepository;
}
public function onKernelResponse(ResponseEvent $event): void
{
$request = $event->getRequest();
$response = $event->getResponse();
$resource = $request->attributes->get('_api_resource_class');
if ($resource === EditRegisters::class && $request->getMethod() === Request::METHOD_POST) {
$data = json_decode($response->getContent(), true);
$editRegisters = $this->editRegistersRepository->find($data['id']);
$registers = $editRegisters->getRegisters();
$theProperty = $registers->getTheProperty();
$municipality = $theProperty->getMunicipality();
$file[] = $this->traitementUrl->getUrlServer().$editRegisters->getPath();
$this->mailToSend->sendReportMailToMunicipalityRegister($file, $municipality->getEmailMunicipality(), 'mail_for_municipality_registers');
}
}
public static function getSubscribedEvents()
{
return [
'kernel.response' => 'onKernelResponse',
];
}
}