src/EventSubscriber/SendEmail.php line 40

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 Symfony\Component\Security\Core\Security;
  16. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  17. use Twig\Environment;
  18. /** @package App\EventSubscriber */
  19. class SendEmail implements EventSubscriberInterface
  20. {
  21.     public function __construct(
  22.         private AppDTO $app
  23.         private Cart $Cart
  24.         private Auth $Auth,
  25.         private Security $security,
  26.         private EsystemRepository $esystemRepository,
  27.         private DeliveryRepository $deliveryRepository,
  28.         private UserRepository $userRepository,
  29.         private ProdRepository $prodRepository,
  30.         private Mail $mail,
  31.         private Environment $twig,
  32.     )
  33.     {
  34.         $this->Auth->setUser($security->getUser());
  35.     }
  36.     public function onOrderMaked(OrderMakedEvent $event): void
  37.     {
  38.         $order $event->getOrder();
  39.         $user $this->userRepository->find($order->getUser());
  40.         $cart $this->Cart->loadFromOrder($order->getId());
  41.         
  42.         $cartitems $this->Cart->getCart();
  43.         foreach ($cartitems as $k => $v) {
  44.             $cartitems[$k]['prod'] = $this->prodRepository->find($v['id']);        
  45.         }
  46.         $payment $this->esystemRepository->find($order->getEsystem());
  47.         $delivery $this->deliveryRepository->find($order->getDelivery());
  48.         $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>";
  49.         $order_cont $this->twig->render('cart/show.html.twig', [
  50.             'user' => $user,
  51.             'cart' => $cart,
  52.             'cart_items' => $cartitems,
  53.             'freedelivery' => $order->getDeliverycost() ? false true,
  54.             'order' => $order,
  55.         ]);
  56.         $params = array(
  57.             "order_id" => $order->getId(),
  58.             "order_time" => date("d.m.Y (G:i)"$order->getTstamp()),
  59.             "order" => $order_cont,
  60.             "client" => $client_data,
  61.             "payment" => $payment $payment->getCont() : '',
  62.             "delivery" => $delivery $delivery->getCont() : '',
  63.             "delivery_cost" => $order->getDeliverycost(),
  64.             "name" => $order->getName(),
  65.             "surname" => "",
  66.             "email" => $order->getEmail(),
  67.             "phone" => Func::mkphone($order->getPhone()),
  68.             "city" => $order->getCity(),
  69.             "address" => $order->getAddr(),
  70.             "needcall" => $order->isNeedcall(),
  71.         );
  72.         $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));
  73.         $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));       
  74.     }
  75.     public static function getSubscribedEvents(): array
  76.     {
  77.         return [
  78.             OrderMakedEvent::NAME => 'onOrderMaked',
  79.         ];
  80.     }
  81. }