src/EventSubscriber/CreateAppointmentEventSubscriber.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\Patient;
  4. use App\Event\CreateAppointmentEvent;
  5. use Doctrine\DBAL\Driver\Exception;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use App\Repository\SmsMessageRepository;
  8. use App\Repository\PatientRepository;
  9. class CreateAppointmentEventSubscriber implements EventSubscriberInterface
  10. {
  11.     private $smsMessageRepository;
  12.     private $patientRepository;
  13.     /**
  14.      * CreatePatientEventSubscriber constructor.
  15.      */
  16.     public function __construct(SmsMessageRepository $smsMessageRepository,
  17.                                 PatientRepository    $patientRepository)
  18.     {
  19.         $this->smsMessageRepository $smsMessageRepository;
  20.         $this->patientRepository $patientRepository;
  21.     }
  22.     public static function getSubscribedEvents(): array
  23.     {
  24.         return [
  25.             CreateAppointmentEvent::NAME => [
  26.                 ['updateSmsMessage'0],
  27.             ],
  28.         ];
  29.     }
  30.     /**
  31.      * @throws Exception
  32.      * @throws \Doctrine\DBAL\Exception
  33.      */
  34.     public function updateSmsMessage(CreateAppointmentEvent $event)
  35.     {
  36.         if (!$event->getAppointment()->getPatientId()) {
  37.             return;
  38.         }
  39.         /** @var Patient $patient */
  40.         $patient $this->patientRepository->find($event->getAppointment()->getPatientId());
  41.         if (!$patient) {
  42.             return;
  43.         }
  44.         if (!$patient->getUpdateSmsMessage()) {
  45.             return;
  46.         }
  47.         $this->smsMessageRepository->setInstitutionForSentSmsMessage(
  48.             $patient->getPhoneNumber(),
  49.             $event->getAppointment()->getDoctor()->getDepartment()->getInstitution());
  50.         $patient->setNoNeedUpdateSmsMessage();
  51.         $this->patientRepository->update();
  52.     }
  53. }