src/IlaveU/FrontBundle/Themes/IlaveU/EventSubscriber/EventsApiSubscriber.php line 46
<?phpnamespace App\IlaveU\FrontBundle\Themes\IlaveU\EventSubscriber;use ApiPlatform\Symfony\EventListener\EventPriorities;use App\Entity\Book;use Symfony\Component\EventDispatcher\EventSubscriberInterface;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpKernel\Event\ViewEvent;use Symfony\Component\HttpKernel\KernelEvents;use Symfony\Component\Mime\Email;use Symfony\Component\Mailer\MailerInterface;use App\Entity\User;use App\IlaveU\ShopBundle\Entity\Customer\Customer;use App\IlaveU\ShopBundle\Entity\Order\Order;use App\IlaveU\ShopBundle\Entity\Shipping\ShippingMethod;use Doctrine\ORM\EntityManagerInterface;use Doctrine\ORM\Events;use Doctrine\Persistence\Event\LifecycleEventArgs;use Exception;use Doctrine\Persistence\ManagerRegistry;use Symfony\Component\HttpFoundation\RequestStack;use Symfony\Component\Mercure\HubInterface;use Symfony\Component\Mercure\Update;use Symfony\Component\Security\Core\Security;use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;use App\Security\AppAuthenticator;final class EventsApiSubscriber implements EventSubscriberInterface{public function __construct(private readonly Security $security, protected RequestStack $requestStack, private readonly HubInterface $hub, private readonly UserPasswordHasherInterface $passwordEncoder, private readonly ManagerRegistry $doctrine, private readonly UserAuthenticatorInterface $userAuthenticator, private readonly AppAuthenticator $appAuthenticator){}public static function getSubscribedEvents(){return [KernelEvents::VIEW => ['sendMail', EventPriorities::PRE_WRITE],];}public function sendMail(ViewEvent $event): void{$entityInstance = $event->getControllerResult();$method = $event->getRequest()->getMethod();if ($entityInstance instanceof User and Request::METHOD_PUT === $method) {}if ($entityInstance instanceof Customer and Request::METHOD_PATCH === $method) {$user = $entityInstance->getUser();$user->setPassword($this->passwordEncoder->hashPassword($user,(string)$user->getPassword()));$this->doctrine->getManager()->persist($user);$this->doctrine->getManager()->flush();}if ($entityInstance instanceof Customer and Request::METHOD_PUT === $method) {$sponsorshipCustomer = $this->doctrine->getManager()->getRepository(Customer::class)->findOneBy(["email"=>$entityInstance->getSponsorshipCode()]);if(!$sponsorshipCustomer){$entityInstance->setSponsorshipCode(null);$this->doctrine->getManager()->persist($entityInstance);$this->doctrine->getManager()->flush();}}if ($entityInstance instanceof Order and Request::METHOD_PUT === $method) {if($entityInstance->getStatus()=="waiting" and !$entityInstance->getIsChecked()){if($this->security->getUser()){if(in_array("ROLE_CUSTOMER",$this->security->getUser()->getRoles())){$customer = $this->doctrine->getManager()->getRepository(Customer::class)->findOneBy(["user"=>$this->security->getUser()]);if($customer){$entityInstance->setCustomer($customer);if(!$entityInstance->getFirstName()){$entityInstance->setFirstName($customer->getFirstName());}if(!$entityInstance->getLastName()){$entityInstance->getLastName();}if(!$entityInstance->getEmail()){$entityInstance->getEmail();}if(!$entityInstance->getTel()){$entityInstance->getEmail();}$this->doctrine->getManager()->persist($entityInstance);$this->doctrine->getManager()->flush();}}}$update = new Update('https://hello.com/books/1',json_encode(['status' => 'success','entity'=>'Order','data'=>$entityInstance,]));try {if($entityInstance->getSource() != "ADMIN")$this->hub->publish($update);} catch (Exception) {//dd($e);}}}}}