<?php
namespace App\EventSubscriber;
use App\DTO\AppDTO;
use App\Entity\Cart as EntityCart;
use App\Env;
use App\Event\OrderMakedEvent;
use App\Event\OrderPayedEvent;
use App\Func;
use App\Service\Auth\Auth;
use App\Service\Cart\Cart;
use App\Service\Sms\SmsFactory;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Security;
/** @package App\EventSubscriber */
class SendSMS implements EventSubscriberInterface
{
public function __construct(
private AppDTO $app,
private Cart $Cart,
private Auth $Auth,
private Security $security,
private EntityManagerInterface $em,
)
{
$this->Auth->setUser($security->getUser());
}
public function onOrderMaked(OrderMakedEvent $event): void
{
if (Env::site() != Env::DOM && Env::site() != Env::OPT) {
return;
}
$order = $event->getOrder();
if ($order->getNotified() > 1) {
return;
}
SmsFactory::factory($this->app->sett->get('smsprovider'))
->send(
Func::mkphone($order->getPhone()),
'',
Func::mess_from_tmp($this->app->templates->get('order_maked_sms'),
['order_id' => $order->getId()])
);
$order->setNotified(2);
$this->em->flush();
}
public function onOrderPayed(OrderPayedEvent $event): void
{
}
public static function getSubscribedEvents(): array
{
return [
OrderMakedEvent::NAME => ['onOrderMaked', 50],
OrderPayedEvent::NAME => ['onOrderMaked', 50],
];
}
}