src/EventSubscriber/ProviderServiceSubscriber.php line 71

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\ProviderSibelga;
  4. use App\Entity\ProviderSibelgaWork;
  5. use App\Entity\ProviderSociety;
  6. use App\Entity\ProviderSolar;
  7. use App\Mybase\Services\Base\SBase;
  8. use App\Repository\ProviderSibelgaRepository;
  9. use App\Repository\ProviderSibelgaWorkRepository;
  10. use App\Repository\ProviderSocietyRepository;
  11. use App\Repository\ProviderSolarRepository;
  12. use App\Repository\ThepropertyRepository;
  13. use App\Service\TraitementUrl;
  14. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  15. use Symfony\Component\HttpKernel\Event\RequestEvent;
  16. class ProviderServiceSubscriber implements EventSubscriberInterface
  17. {
  18.     /**
  19.      * @var ProviderSibelgaRepository
  20.      */
  21.     private $providerSibelgaRepository;
  22.     /**
  23.      * @var SBase
  24.      */
  25.     private $base;
  26.     /**
  27.      * @var ProviderSibelgaWorkRepository
  28.      */
  29.     private $providerSibelgaWorkRepository;
  30.     /**
  31.      * @var ProviderSocietyRepository
  32.      */
  33.     private $providerSocietyRepository;
  34.     /**
  35.      * @var ThePropertyRepository
  36.      */
  37.     private $thePropertyRepository;
  38.     /**
  39.      * @var ProviderSolarRepository
  40.      */
  41.     private $providerSolarRepository;
  42.     /**
  43.      * @var TraitementUrl
  44.      */
  45.     private $traitementUrl;
  46.     public function __construct(
  47.         ProviderSibelgaRepository $providerSibelgaRepository,
  48.         SBase $base,
  49.         ProviderSibelgaWorkRepository $providerSibelgaWorkRepository,
  50.         ProviderSocietyRepository $providerSocietyRepository,
  51.         ThepropertyRepository $thePropertyRepository,
  52.         ProviderSolarRepository $providerSolarRepository,
  53.         TraitementUrl $traitementUrl)
  54.     {
  55.         $this->providerSibelgaRepository $providerSibelgaRepository;
  56.         $this->base $base;
  57.         $this->providerSibelgaWorkRepository $providerSibelgaWorkRepository;
  58.         $this->providerSocietyRepository $providerSocietyRepository;
  59.         $this->thePropertyRepository $thePropertyRepository;
  60.         $this->providerSolarRepository $providerSolarRepository;
  61.         $this->traitementUrl $traitementUrl;
  62.     }
  63.     /**
  64.      * @return void
  65.      */
  66.     public function onKernelRequest(RequestEvent $event)
  67.     {
  68.         $request $event->getRequest();
  69.         $object $request->attributes->get('_api_resource_class');
  70.         $data $request->query;
  71.         //List Fournisseur Sibelga
  72.         if (
  73.             $object === ProviderSibelga::class
  74.             && $request->getMethod() === 'GET'
  75.         ) {
  76.             $datas $this->providerSibelgaRepository->findByCaracteristic($data->get('task'), $data->get('work'), $data->get('type'));
  77.             if ($datas === null) {
  78.                 $event->setResponse($this->base->jsonResponseNotFound('Aucun service sibelga trouvé'));
  79.                 return;
  80.             }
  81.             $datas $this->base->serialize($datas'json', ['groups' => 'sibelga:read']);
  82.             $event->setResponse($this->base->jsonResponseOk($datas'List des services sibelga'));
  83.         }
  84.         //List Fournisseur Sibelga Work
  85.         if (
  86.             $object === ProviderSibelgaWork::class
  87.             && $request->getMethod() === 'GET'
  88.         ) {
  89.             $datas $this->providerSibelgaWorkRepository->find($data->get('task'));
  90.             if (!$datas instanceof \App\Entity\ProviderSibelgaWork) {
  91.                 $event->setResponse($this->base->jsonResponseNotFound('Aucun service sibelga work trouvé'));
  92.                 return;
  93.             }
  94.             $datas $this->base->serialize($datas'json', ['groups' => 'sibelgawork:read']);
  95.             $event->setResponse($this->base->jsonResponseOk($datas'List des services sibelga work'));
  96.         }
  97.         //List des societé Fournisseur
  98.         if (
  99.             $object === ProviderSociety::class
  100.             && $request->getMethod() === 'GET'
  101.         ) {
  102.             $theProperty $this->thePropertyRepository->find($data->get('theProperty'));
  103.             if ($theProperty instanceof \App\Entity\TheProperty) {
  104.                 $municipality $theProperty->getMunicipality()->getName();
  105.                 if ($municipality) {
  106.                     $datas $this->providerSocietyRepository->findBy(['municipality' => $municipality]);
  107.                     if ($datas === null) {
  108.                         $event->setResponse($this->base->jsonResponseNotFound('Aucun service sibelga work trouvé'));
  109.                         return;
  110.                     }
  111.                     $datas $this->base->serialize($datas'json', ['groups' => 'providersociety:read']);
  112.                     $event->setResponse($this->base->jsonResponseOk($datas'List des societé fournisseur'));
  113.                     return;
  114.                 }
  115.             }
  116.             $event->setResponse($this->base->jsonResponseNotFound('Bien non trouvé'));
  117.         }
  118.         //Ajout fournisseur solaire
  119.         if (
  120.             $object === ProviderSolar::class
  121.             && $request->getMethod() === 'POST'
  122.         ) {
  123.             $datas $this->base->getPostedData($request);
  124.             $files $request->files->get('files') ? $request->files->get('files') : null;
  125.             $theProperty $this->thePropertyRepository->find($datas['theProperty']);
  126.             if (!$theProperty instanceof \App\Entity\TheProperty) {
  127.                 $event->setResponse($this->base->jsonResponseNotFound('Bien non trouvé'));
  128.                 return;
  129.             }
  130.             $providerSolar $this->providerSolarRepository->findBy(['theProperty' => $theProperty]);
  131.             if ($providerSolar === []) {
  132.                 $uploadFiles $this->base->uploadFile($files'provider_solar');
  133.                 $linkFiles $this->traitementUrl->getUrlServer().'/uploads/providers/solar/'.$uploadFiles['filename'];
  134.                 $providerSolar = new ProviderSolar();
  135.                 $providerSolar->setTheProperty($theProperty)
  136.                     ->setGreatPotential($datas['greatPotential'] ?? null)
  137.                     ->setGoodPotential($datas['goodPotential'] ?? null)
  138.                     ->setFile($uploadFiles['filename'])
  139.                     ->setAnnualProduction($datas['annualProduction'] ?? null)
  140.                     ->setPath($linkFiles);
  141.                 $this->base->save($providerSolar);
  142.                 $datas $this->base->serialize($providerSolar'json', ['groups' => 'provider_solar:read']);
  143.                 $event->setResponse($this->base->jsonResponseOk($datas'Fournisseur solaire ajouté avec succees'));
  144.                 return;
  145.             }
  146.             $event->setResponse($this->base->jsonResponseNotFound('Fournisseur solaire existe déjà'));
  147.             return;
  148.         }
  149.     }
  150.     /**
  151.      * @return void
  152.      */
  153.     public static function getSubscribedEvents()
  154.     {
  155.         return [
  156.             'kernel.request' => 'onKernelRequest',
  157.         ];
  158.     }
  159. }