src/EventSubscriber/SendEmail.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Func;
  4. use App\DTO\AppDTO;
  5. use App\Service\Auth\Auth;
  6. use App\Service\Cart\Cart;
  7. use App\Event\OrderMakedEvent;
  8. use App\Env;
  9. use App\Event\OrderPayedEvent;
  10. use App\Repository\DeliveryRepository;
  11. use App\Repository\EsystemRepository;
  12. use App\Repository\ProdRepository;
  13. use App\Repository\UserRepository;
  14. use App\Service\Mail\Mail;
  15. use Doctrine\ORM\EntityManagerInterface;
  16. use Symfony\Component\Security\Core\Security;
  17. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  18. use Twig\Environment;
  19. /** @package App\EventSubscriber */
  20. class SendEmail implements EventSubscriberInterface
  21. {
  22.     public function __construct(
  23.         private AppDTO $app
  24.         private Cart $Cart
  25.         private Auth $Auth,
  26.         private Security $security,
  27.         private EsystemRepository $esystemRepository,
  28.         private DeliveryRepository $deliveryRepository,
  29.         private UserRepository $userRepository,
  30.         private ProdRepository $prodRepository,
  31.         private Mail $mail,
  32.         private Environment $twig,
  33.         private EntityManagerInterface $em,
  34.     )
  35.     {
  36.         $this->Auth->setUser($security->getUser());
  37.     }
  38.     public function onOrderMaked(OrderMakedEvent $event): void
  39.     {
  40.         $order $event->getOrder();
  41.         if ($order->getNotified()) {
  42.             return;
  43.         }
  44.         
  45.         $user $this->userRepository->find($order->getUser());
  46.         $cart $this->Cart->loadFromOrder($order->getId());
  47.         
  48.         $cartitems $this->Cart->getCart();
  49.         foreach ($cartitems as $k => $v) {
  50.             $cartitems[$k]['prod'] = $this->prodRepository->find($v['id']);        
  51.         }
  52.         $payment $this->esystemRepository->find($order->getEsystem());
  53.         $delivery $this->deliveryRepository->find($order->getDelivery());
  54.         $client_data "<table><tr><td>" $this->app->labels->get('name') . "</td><td>" $order->getName() . "</td></tr><tr><td>Email</td><td>" $order->getEmail() . "</td></tr><tr><td>" $this->app->labels->get('phone') . "</td><td>" Func::mkphone($order->getPhone()) . "</td></tr><tr><td>" $this->app->labels->get('address') . "</td><td>" $order->getAddr() . "</td></tr></table>";
  55.         $order_cont $this->twig->render('cart/show.html.twig', [
  56.             'user' => $user,
  57.             'cart' => $cart,
  58.             'cart_items' => $cartitems,
  59.             'freedelivery' => $order->getDeliverycost() ? false true,
  60.             'order' => $order,
  61.         ]);
  62.         $params = array(
  63.             "order_id" => $order->getId(),
  64.             "order_time" => date("d.m.Y (G:i)"$order->getTstamp()),
  65.             "order" => $order_cont,
  66.             "client" => $client_data,
  67.             "payment" => $payment $payment->getCont() : '',
  68.             "delivery" => $delivery $delivery->getCont() : '',
  69.             "delivery_cost" => $order->getDeliverycost(),
  70.             "name" => $order->getName(),
  71.             "surname" => "",
  72.             "email" => $order->getEmail(),
  73.             "phone" => Func::mkphone($order->getPhone()),
  74.             "city" => $order->getCity(),
  75.             "address" => $order->getAddr(),
  76.             "needcall" => $order->isNeedcall(),
  77.         );
  78.         $order->setNotified(1);
  79.         $this->em->flush();
  80.         
  81.         $this->mail->send($this->app->sett->get('sitename'), Env::mail_from(), $order->getEmail(), $this->app->labels->get("order_message_theme"), Func::mess_from_tmp($this->app->templates->get("order_message_template"), $params));
  82.         $this->mail->send($this->app->sett->get('sitename'), Env::mail_from(), $this->app->sett->get('admin_email'), $this->app->labels->get("order_message_theme"), Func::mess_from_tmp($this->app->templates->get("order_message_template"), $params));       
  83.     }
  84.     public static function getSubscribedEvents(): array
  85.     {
  86.         return [
  87.             OrderMakedEvent::NAME => 'onOrderMaked',
  88.         ];
  89.     }
  90. }