src/EventSubscriber/KYCDocumentSubscriber.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Event\EventData;
  4. use App\Entity\User;
  5. use App\Entity\Teacher;
  6. use Doctrine\ORM\EntityManager;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpKernel\Kernel;
  10. use App\Controller\BaseController;
  11. use App\Service\MangoPayService;
  12. class KYCDocumentSubscriber extends BaseController implements EventSubscriberInterface 
  13. {
  14.     /**
  15.      * List of event
  16.      *
  17.      * @return array
  18.      */
  19.     public static function getSubscribedEvents()
  20.     {
  21.         // un evennement invoice.payment_succeeded a été lancé
  22.         return array(
  23.             EventData::ON_EVENT_UPLOAD_MANGOPAY_KYC_DOCUEMENT => array(
  24.                 array('uploadMangopayKycDocument'1)
  25.             ),
  26.             EventData::ON_EVENT_MANGOPAY_KYC_SUCCEEDED => array(
  27.                 array('onMangopayKycDocumentValid'1)
  28.             ),
  29.             
  30.         );
  31.     }
  32.     /**
  33.      * Upload KYC document
  34.      * @param EventData $event
  35.      */
  36.     public function uploadMangopayKycDocument(EventData $event)
  37.     {
  38.         $datas $event->getData();
  39.         $user $datas['user'] ;
  40.         $type $datas['type'] ;
  41.         
  42.         $mangoPayService $this->mangoPayService ;
  43.         
  44.         //Mis à jour chez mangopay
  45.         $typeIdentity $typeAdress false ;
  46.         if($type == MangoPayService::DOCUMENT_TYPE_IDENTITY_PROOF){
  47.             $file $this->getParameter("file_kyc_directory")."/".$user->getIdentityProof() ;
  48.             $typeIdentity true ;
  49.             
  50.         }
  51.         if($type == MangoPayService::DOCUMENT_TYPE_ADDRESS_PROOF){
  52.              $file $this->getParameter("file_kyc_directory")."/".$user->getAddressProof() ;
  53.              $typeAdress true ;
  54.         }
  55.         
  56.         $document $mangoPayService->createKYCDocument($user->getNaturalUser(), $file$type) ;
  57.         if($typeIdentity == true){
  58.             $user->setIdentityProofId($document->Id) ;
  59.         }
  60.         if($typeAdress == true){
  61.             $user->setAddressProofId($document->Id) ;
  62.         }
  63.         
  64.         $this->save($user);
  65.         
  66.         
  67.         return $user ;
  68.     }
  69.     
  70.     /**
  71.      * On KYC document valid
  72.      * @param EventData $event
  73.      */
  74.     public function onMangopayKycDocumentValid(EventData $event)
  75.     {
  76.         $datas $event->getData();
  77.         $id $datas['RessourceId'] ;
  78.         
  79.         //Verifier si la clé du document est un identity proof
  80.         //Si pas un identity proof , on verifie si la clé du document est un address proof
  81.         
  82.         $teacher $this->entityManager->getRepository(Teacher::class)->findOneBy(['identityProofId' => $id]) ;
  83.         if(!empty($teacher)){
  84.             $teacher->setIdentityProofStatus(true) ;
  85.             $this->save($teacher);
  86.         }else{
  87.             $teacher $this->entityManager->getRepository(Teacher::class)->findOneBy(['addressProofId' => $id]) ;
  88.             if(!empty($teacher)){
  89.                 $teacher->setAddressProofStatus(true) ;
  90.                 $this->save($teacher);
  91.             }
  92.         }
  93.         return true ;
  94.     }
  95.     
  96. }