src/EventSubscriber/PermitPropertySubscriber.php line 60

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Constant\PermitProcedureConstants;
  4. use App\Entity\PermitProperty;
  5. use App\Entity\PermitPropertyProcedure;
  6. use App\Repository\AnnexPermitPropertyRepository;
  7. use App\Repository\PermitPropertyRepository;
  8. use App\Repository\ThepropertyRepository;
  9. use App\Service\MailToSend;
  10. use App\Service\TraitementUrl;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  15. class PermitPropertySubscriber implements EventSubscriberInterface
  16. {
  17.     /**
  18.      * @var MailToSend
  19.      */
  20.     private $mailToSend;
  21.     /**
  22.      * @var PermitProperty
  23.      */
  24.     private $permitPropertyRepository;
  25.     /**
  26.      * @var AnnexPermitPropertyRepository
  27.      */
  28.     private $annexPermitPropertyRepository;
  29.     private $traitementUrl;
  30.     /**
  31.      * @var EntityManagerInterface
  32.      */
  33.     private $em;
  34.     private $thePropertyRepository;
  35.     public function __construct(
  36.         PermitPropertyRepository $permitPropertyRepository,
  37.         ThepropertyRepository $thePropertyRepository,
  38.         AnnexPermitPropertyRepository $annexPermitPropertyRepository,
  39.         MailToSend $mailToSend,
  40.         EntityManagerInterface $em,
  41.         TraitementUrl $traitementUrl)
  42.     {
  43.         $this->permitPropertyRepository $permitPropertyRepository;
  44.         $this->thePropertyRepository $thePropertyRepository;
  45.         $this->annexPermitPropertyRepository $annexPermitPropertyRepository;
  46.         $this->traitementUrl $traitementUrl;
  47.         $this->mailToSend $mailToSend;
  48.         $this->em $em;
  49.     }
  50.     public function onKernelResponse(ResponseEvent $event): void
  51.     {
  52.         $request $event->getRequest();
  53.         $response $event->getResponse();
  54.         $resource $request->attributes->get('_api_resource_class');
  55.         if ($resource === PermitProperty::class && $request->getMethod() === Request::METHOD_POST) {
  56.             $data json_decode($response->getContent(), true);
  57.             $permitProperty $this->permitPropertyRepository->find($data['id']);
  58.             $annexPermitProperty $this->annexPermitPropertyRepository->findBy(['permitProperty' => $permitProperty->getId()]);
  59.             // Add permitPropertyProcedure
  60.             $dateCreated $permitProperty->getCreated()->format('Y-m-d H:i:s');
  61.             $dateProcedure date('Y-m-d H:i:s'strtotime($dateCreated.' + 45 days'));
  62.             $permitPropertyProcedure = new PermitPropertyProcedure();
  63.             $permitPropertyProcedure->setPermitProperty($permitProperty);
  64.             $permitPropertyProcedure->setStatus(PermitProcedureConstants::STEP_REQUEST_SENT);
  65.             $permitPropertyProcedure->setAcknowledgmentUltimeDate($dateProcedure);
  66.             $this->em->persist($permitPropertyProcedure);
  67.             $this->em->flush();
  68.             // Send email to municipality
  69.             $theProperty $permitProperty->getTheProperty();
  70.             $municipality $theProperty->getMunicipality();
  71.             $file[] = $this->traitementUrl->getUrlServer().$permitProperty->getPath();
  72.             foreach ($annexPermitProperty as $annex) {
  73.                 $file[] = $this->traitementUrl->getUrlServer().$annex->getPath();
  74.             }
  75.             if (!is_null($municipality)) {
  76.                 $this->mailToSend->sendReportMailToMunicipality($file$municipality->getEmailMunicipality(), 'mail_for_municipality');
  77.             }
  78.         }
  79.     }
  80.     public static function getSubscribedEvents()
  81.     {
  82.         return [
  83.             'kernel.response' => 'onKernelResponse',
  84.         ];
  85.     }
  86. }