mailjet-8.x-2.7/modules/mailjet_stats/src/EventSubscriber/OrderCompleteSubscriber.php

modules/mailjet_stats/src/EventSubscriber/OrderCompleteSubscriber.php
<?php

namespace Drupal\mailjet_stats\EventSubscriber;

use Drupal\commerce_order\Entity\OrderInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Drupal\state_machine\Event\WorkflowTransitionEvent;
use Drupal\Core\Entity\EntityTypeManager;

/**
 * Class OrderCompleteSubscriber.
 * @package Drupal\mailjet_stats
 */
class OrderCompleteSubscriber implements EventSubscriberInterface
{
    /**
     * Drupal\Core\Entity\EntityTypeManager definition.
     * @var \Drupal\Core\Entity\EntityTypeManager
     */
    protected $entityTypeManager;

    /**
     * Constructor.
     */
    public function __construct(EntityTypeManager $entity_type_manager)
    {
        $this->entityTypeManager = $entity_type_manager;
    }

    /**
     * {@inheritdoc}
     */
    static function getSubscribedEvents(): array
    {
        $events['commerce_order.place.post_transition'] = ['orderCompleteHandler'];

        return $events;
    }

    /**
     * This method is called whenever the commerce_order.place.post_transition
     * event is dispatched.
     * @param WorkflowTransitionEvent $event
     */
    public function orderCompleteHandler(WorkflowTransitionEvent $event)
    {
        /** @var OrderInterface $order */
        $order = $event->getEntity();
        // Order items in the cart.
        $items = $order->getItems();

        if (isset($_SESSION['mailjet_campaign_id']) && ($event->getTransition()->getToState()->getId() === 'completed')) {
            $campaign_mailjet_id = $_SESSION['mailjet_campaign_id'];

            $entity_manager = \Drupal::entityTypeManager();
            $order2 = $entity_manager->getStorage('commerce_order')
                ->load($order->getOrderNumber());
            $order2->set('field_mailjet_campaign_id', $campaign_mailjet_id);
            $order2->save();

            $query = \Drupal::database()->select('mailjet_campign', 'mj');
            $query->addField('mj', 'campaign_id');
            $query->condition('mj.camp_id_mailjet', trim($_SESSION['mailjet_campaign_id']));
            $query->range(0, 1);
            $id = $query->execute()->fetchField();

            $campaign = $entity_manager->getStorage('campaign_entity')->load($id);
            $campaign->set('order_id', $order->getOrderNumber());
            $campaign->save();

            $order2->set('field_mailjet_campaign_nam', $campaign->get('name')->getValue()[0]['value']);
            $order2->save();

            unset($_SESSION['mailjet_campaign_id']);
        }
    }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc