src/EventSubscriber/ColisSubscriber.php line 94

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use ApiPlatform\Core\Api\IriConverterInterface;
  4. use ApiPlatform\Core\EventListener\EventPriorities;
  5. use App\Constant\ApiConstants;
  6. use App\Entity\Colis;
  7. use App\Service\FileUploader;
  8. use App\Service\SmsService;
  9. use App\Service\Utils;
  10. use Doctrine\Persistence\ManagerRegistry;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpKernel\Event\ViewEvent;
  14. use Symfony\Component\HttpKernel\KernelEvents;
  15. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  16. use Vich\UploaderBundle\Storage\StorageInterface;
  17. class ColisSubscriber implements EventSubscriberInterface
  18. {
  19.     private $managerRegistry;
  20.     private $utils;
  21.     private $iriConverter;
  22.     private $fileUploader;
  23.     private $tokenStorage;
  24.     private $smsService;
  25.     public function __construct(ManagerRegistry $managerRegistry,Utils $utils,
  26.                                 IriConverterInterface $converter,
  27.                                 FileUploader $fileUploader,
  28.                                 TokenStorageInterface $tokenStorage,
  29.                                 SmsService $smsService)
  30.     {
  31.         $this->managerRegistry $managerRegistry;
  32.         $this->utils $utils;
  33.         $this->iriConverter $converter;
  34.         $this->fileUploader $fileUploader;
  35.         $this->tokenStorage $tokenStorage;
  36.         $this->smsService $smsService;
  37.     }
  38.     public static function getSubscribedEvents()
  39.     {
  40.         return [
  41.             KernelEvents::VIEW => [
  42.                 //['processColis', EventPriorities::PRE_WRITE],
  43.                 ['pocessChildren'EventPriorities::POST_WRITE],
  44.                 ['pocessUpdate'EventPriorities::POST_WRITE],
  45.                 //['processReception',EventPriorities::PRE_WRITE],
  46.             ],
  47.         ];
  48.     }
  49.     /*public function processColis(ViewEvent $event){
  50.         $colis = $event->getControllerResult();
  51.         $method = $event->getRequest()->getMethod();
  52.         if (!$colis instanceof Colis || Request::METHOD_POST !== $method || strpos($event->getRequest()->getPathInfo(),'changestatus')) {
  53.             return ;
  54.         }
  55.         $maxID = $this->managerRegistry->getRepository(Colis::class)->getMaxId() + 1;
  56.         $Ref = "REF"."-".strtoupper(substr($colis->getVilleExp()->getLibelle(),0,3)).'-'.strtoupper(substr($colis->getVilleRec()->getLibelle(),0,3))."-".$maxID.'-'.$this->utils->generateRandomLetter();
  57.         $colis->setAgent($this->tokenStorage->getToken()->getUser());
  58.         $colis->setReference($Ref);
  59.     }*/
  60.     public function pocessChildren(ViewEvent $event) {
  61.         $colis $event->getControllerResult();
  62.         $method $event->getRequest()->getMethod();
  63.         if (!$colis instanceof Colis || Request::METHOD_POST !== $method || !strpos($event->getRequest()->getPathInfo(),'super')) {
  64.             return ;
  65.         }
  66.         $data json_decode($event->getRequest()->getContent(),true);
  67.         $childrens $data['childrens'];
  68.         //die($data['childrens']);
  69.         $managerColis $this->managerRegistry->getManagerForClass(Colis::class);
  70.         foreach ((array) $childrens as $children){
  71.             $coli $this->iriConverter->getItemFromIri($children);
  72.             //$this->managerRegistry->getRepository(Colis::class)->find($children);
  73.             $coli->setSuper($colis);
  74.             $managerColis->flush();
  75.         }
  76.     }
  77.     public function pocessUpdate(ViewEvent $event){
  78.         //die('ici');
  79.         $colis $event->getControllerResult();
  80.         $method $event->getRequest()->getMethod();
  81.         if (!$colis instanceof Colis || Request::METHOD_POST !== $method || !strpos($event->getRequest()->getPathInfo(),'changestatus')) {
  82.             return ;
  83.         }
  84.         $managerColis $this->managerRegistry->getManagerForClass(Colis::class);
  85.         $statut $event->getRequest()->get('statut');
  86.         if($colis->getIsSuper()){
  87.             $colis_list $this->managerRegistry->getRepository(Colis::class)->findBy(['super' => $colis->getId()]);
  88.             if(!is_null($colis_list) && !empty($colis_list)){
  89.                 foreach ($colis_list as $c){
  90.                     $c->setStatut($statut);
  91.                     if($statut == ApiConstants::STATUS_TRANSIT){
  92.                         $c->setDateTransit(new \DateTime("now"));
  93.                         $this->smsService->sendSms("Bonjour ".$c->getExpediteur()->getNom().", votre colis envoyé est en transit. Paris center vous remercie pour votre confiance.",$c->getExpediteur()->getTel());
  94.                         $this->smsService->sendSms("Bonjour ".$c->getRecepteur()->getNom().", un colis qui vous est destiné est en transit vers votre pays. Paris center vous remercie pour votre confiance. Pour plus d'information rendez-vous sur www.pariscentrplus.com.",$c->getRecepteur()->getTel());
  95.                     } elseif ($statut == ApiConstants::STATUS_DESTINATION){
  96.                         $c->setDateDestination(new \DateTime("now"));
  97.                     }
  98.                     else if($statut == ApiConstants::STATUS_RECEPTION) {
  99.                         $c->setDateReception(new \DateTime("now"));
  100.                         $this->smsService->sendSms("Bonjour ".$c->getExpediteur()->getNom().", votre colis envoyé a été rétiré par ".$c->getRecepteur()->getNom().". Paris center vous remercie pour votre confiance.",$c->getExpediteur()->getTel());
  101.                     }
  102.                     $managerColis->flush();
  103.                 }
  104.             }
  105.         } else {
  106.             //$this->smsService->sendSms("Bonjour Thibus, votre colis envoyé est en transit. Paris center vous remercie pour votre confiance.","+22578789100");
  107.             if($statut == ApiConstants::STATUS_TRANSIT){
  108.                 $this->smsService->sendSms("Bonjour ".$colis->getExpediteur()->getNom().", votre colis envoyé est en transit. Paris center vous remercie pour votre confiance.",$colis->getExpediteur()->getTel());
  109.                 $this->smsService->sendSms("Bonjour ".$colis->getRecepteur()->getNom().", un colis qui vous est destiné est en transit vers votre pays. Paris center vous remercie pour votre confiance. Pour plus d'information rendez-vous sur www.pariscentrplus.com.",$colis->getRecepteur()->getTel());
  110.             }
  111.             else if($statut == ApiConstants::STATUS_RECEPTION) {
  112.                 $this->smsService->sendSms("Bonjour ".$colis->getExpediteur()->getNom().", votre colis envoyé a été rétiré par ".$colis->getRecepteur()->getNom().". Paris center vous remercie pour votre confiance.",$colis->getExpediteur()->getTel());
  113.             }
  114.         }
  115.     }
  116.     /*public function  processReception(ViewEvent $event)
  117.     {
  118.         //return ;
  119.         $colis = $event->getControllerResult();
  120.         $method = $event->getRequest()->getMethod();
  121.         if (!$colis instanceof Colis || Request::METHOD_PUT !== $method || !strpos($event->getRequest()->getPathInfo(),'changestatus')) {
  122.             return ;
  123.         }
  124.         $statut = $event->getRequest()->get('statut');
  125.         if(!$colis->getIsSuper()){
  126.             if($statut == 2) {
  127.                 if($colis->getFileRecPhotoRecto()){
  128.                     $fileName = $this->fileUploader->upload($colis->getFileRecPhotoRecto());
  129.                     $colis->setRecPhotoRecto($fileName);
  130.                 }
  131.                 if($colis->getFileRecPhotoVerso()){
  132.                     $fileName = $this->fileUploader->upload($colis->getFileRecPhotoVerso());
  133.                     $colis->setRecPhotoVerso($fileName);
  134.                 }
  135.             }
  136.         }
  137.     }*/
  138. }