src/CIC/EventSubscriber/createPortalStudentProfileCreatedSubscriber.php line 46

Open in your IDE?
  1. <?php
  2. namespace App\CIC\EventSubscriber;
  3. use ApiPlatform\Core\EventListener\EventPriorities;
  4. use App\CIC\Service\School\cicMaintainStudentSchoolService;
  5. use App\Entity\School\Student\StudentAcademic;
  6. use App\Entity\School\Student\StudentProfile;
  7. use App\Event\DepartmentChangeEvent;
  8. use App\Event\School\Student\StudentProfileChangeEvent;
  9. use App\Event\School\Student\StudentProfilePortalLoginChangeEvent;
  10. use App\Service\Loader\Legacy\StudentWriterService;
  11. use CIC\DB\envLoader\db;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Psr\Log\LoggerInterface;
  14. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  15. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpKernel\Event\ViewEvent;
  18. use Symfony\Component\HttpKernel\KernelEvents;
  19. class createPortalStudentProfileCreatedSubscriber implements EventSubscriberInterface
  20. {
  21.     private cicMaintainStudentSchoolService $service;
  22.     private EventDispatcherInterface $dispatcher;
  23.     private LoggerInterface $logger;
  24.     public static function getSubscribedEvents()
  25.     {
  26.         return [
  27.             StudentProfileChangeEvent::class => [
  28.                 ['onCreate']
  29.             ],
  30.             KernelEvents::VIEW => ['apiChange',24],
  31.         ];
  32.     }
  33.     public function __construct(cicMaintainStudentSchoolService $serviceEventDispatcherInterface $dispatcherLoggerInterface $logger)
  34.     {
  35.         $this->service $service;
  36.         $this->dispatcher $dispatcher;
  37.         $this->logger $logger;
  38.     }
  39.     public function onCreate(StudentProfileChangeEvent $event)
  40.     {
  41.         $this->createLogin($event->getStudent());
  42.     }
  43.     public function apiChange(ViewEvent $event) {
  44.         $this->logger->info('[eRep] api_Change');
  45.         $object=$event->getControllerResult();
  46.         $method=$event->getRequest()->getMethod();
  47.         if(!$object instanceof StudentProfile) {
  48.             return;
  49.         }
  50.         $this->logger->info(sprintf(
  51.             '[eRep] DEV TESTing: Create Login  called %s: %s',
  52.             $object->getId(),
  53.             $method
  54.         ));
  55.         if($method==Request::METHOD_POST)
  56.             $this->createLogin($object);
  57.     }
  58.     function createLogin(StudentProfile $student)
  59.     {
  60.         $this->logger->info(sprintf(
  61.             '[eRep] Create Login  called %s: %s',
  62.             $student->getStudentNumber(),
  63.             $student->getId()
  64.         ));
  65.         if(!$student->getStudentPortalUser()) {
  66.             $this->service->createPortalLogin($student);
  67.             if($student->getStudentPortalUser()) {
  68.                 $event=new StudentProfilePortalLoginChangeEvent($student);
  69.                 $this->dispatcher->dispatch($event);
  70.             }
  71.         }
  72.     }
  73. }