src/EventSubscriber/BaselinkerOrder.php line 61

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Env;
  4. use App\Event\OrderMakedEvent;
  5. use App\Event\OrderPayedEvent;
  6. use App\Repository\CartRepository;
  7. use App\Repository\ProdRepository;
  8. use App\Repository\UserRepository;
  9. use App\Service\Baselinker\DTO\Prod;
  10. use App\Repository\EsystemRepository;
  11. use App\Service\Baselinker\DTO\Order;
  12. use App\Repository\DeliveryRepository;
  13. use App\Service\Baselinker\Baselinker;
  14. use App\Service\Baselinker\DTO\Company;
  15. use App\Service\Baselinker\DTO\Delivery;
  16. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  17. class BaselinkerOrder implements EventSubscriberInterface
  18. {
  19.     public function __construct(
  20.         private CartRepository $Cart,
  21.         private ProdRepository $Prods,
  22.         private DeliveryRepository $Delivery,
  23.         private EsystemRepository $Esystems,
  24.         private UserRepository $Users,
  25.         private Baselinker $baselinker
  26.     )
  27.     {
  28.         $this->baselinker->setToken(Env::baselinker_token());
  29.     }
  30.     public function onOrderMaked(OrderMakedEvent $event): void
  31.     {
  32.         if (Env::site() != Env::MIX && Env::site() != Env::OPT_MIX) {
  33.             return;
  34.         }
  35.         $order $event->getOrder();
  36.         $user $this->Users->find($order->getUser());
  37.         $cartitems $this->Cart->getByOrder($order->getId());
  38.         $delivery $this->Delivery->find($order->getDelivery());
  39.         $esystem $this->Esystems->find($order->getEsystem());
  40.         $bl_prods = [];
  41.         foreach ($cartitems as $k => $v) {            
  42.             $prod $v->getProd();
  43.             $discount = ($v->getSkidka()) ? $v->getSkidka() :  $v->getUserdiscount() + $v->getNumdiscount();
  44.             $bl_prods[] = new Prod((string) $prod->getId(), '', (string) $prod->getName(), (string) $prod->getExternalId(), $v->getPrice() * (100 $discount) / 1000$v->getNum(), (float) $prod->getWeight());
  45.         }
  46.         $bl $this->baselinker->newOrder(
  47.             new Order((int) $order->getId(), 0, (int) $order->getTstamp(), (string) $order->getPhone(), (string) $order->getEmail(), Env::currency_code(), (string) $esystem->getName(), (string) $order->getComment()),
  48.             $bl_prods,
  49.             new Delivery((string) $delivery->getIntname(), (string) $delivery->getName(), (string) $order->getDeliverycost(), (string) $order->getName(), (string) $order->getAddr(), (string) $order->getCity(), '', (string) $order->getPostcode(), ""),
  50.             new Company($user->getCompanyNip(), $user->getCompanyName(), $user->getCompanyIndex(), $user->getCompanyCity(), $user->getCompanyStreet(), $user->getCompanyHouse(), $user->getCompanyFlat())
  51.         );
  52.     }
  53.     public function onOrderPayed(OrderPayedEvent $event): void
  54.     {
  55.         if (Env::site() != Env::MIX && Env::site() != Env::OPT_MIX) {
  56.             return;
  57.         }
  58.         // $baselinker = new Baselinker(Env::baselinker_token());
  59.         // $baselinker->orderPayed($order_id, $order->amount);
  60.         $order $event->getOrder();
  61.         $this->baselinker->orderPayed($order->getId(), $order->getAmount());
  62.     }
  63.     public static function getSubscribedEvents(): array
  64.     {
  65.         return [
  66.             OrderMakedEvent::NAME => 'onOrderMaked',
  67.             OrderPayedEvent::NAME => 'onOrderPayed',
  68.         ];
  69.     }
  70. }