src/EventSubscriber/BaselinkerOrder.php line 40

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