custom/plugins/WabsAuftragsdatenSync/src/Subscriber/WabsAuftragsdatenSyncSubscriber.php line 44

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace WabsAuftragsdatenSync\Subscriber;
  3. use Exception;
  4. use Psr\Log\LoggerInterface;
  5. use Shopware\Core\Checkout\Customer\CustomerEntity;
  6. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  7. use Shopware\Storefront\Page\Checkout\Finish\CheckoutFinishPageLoadedEvent;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use WabsAuftragsdatenSync\Services\WabsAuftragsdatenSyncService;
  10. class WabsAuftragsdatenSyncSubscriber implements EventSubscriberInterface
  11. {
  12.     /** @var WabsAuftragsdatenSyncService $wabsAuftragsdatenSyncService */
  13.     private $wabsAuftragsdatenSyncService;
  14.     /** @var LoggerInterface $logger */
  15.     private $logger;
  16.     /**  @var EntityRepositoryInterface */
  17.     private $orderCustomerRepository;
  18.     public function __construct(
  19.         WabsAuftragsdatenSyncService $wabsAuftragsdatenSyncService,
  20.         LoggerInterface $logger,
  21.         \Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface $orderCustomerRepository
  22.     ) {
  23.         $this->wabsAuftragsdatenSyncService $wabsAuftragsdatenSyncService;
  24.         $this->logger $logger;
  25.         $this->orderCustomerRepository $orderCustomerRepository;
  26.     }
  27.     public static function getSubscribedEvents(): array
  28.     {
  29.         return [
  30.             CheckoutFinishPageLoadedEvent::class => 'onCheckoutFinish'
  31.         ];
  32.     }
  33.     public function onCheckoutFinish(CheckoutFinishPageLoadedEvent $event)
  34.     {
  35.         try {
  36.             $orderCustomer $event->getPage()->getOrder()->getOrderCustomer();
  37.             $customerId $orderCustomer->getCustomerId();
  38.             /** @var CustomerEntity $customer */
  39.             $customer $this->wabsAuftragsdatenSyncService->getCustomerById($customerId);
  40.             $order = [
  41.                 "id" => $event->getPage()->getOrder()->getId(),
  42.                 "customFields" => [
  43.                     "igm_mbs_order_customer_group" => $customer->getGroupId()
  44.                 ]
  45.             ];
  46.             $this->wabsAuftragsdatenSyncService->saveGroupIdOnOrder($order);
  47.         } catch (Exception $exception) {
  48.             $this->logger->error("Could not save CustomerGroupId on Order!");
  49.         }
  50.         try {
  51.             $customerCustomFields $customer->getCustomFields();
  52.             if (isset($customerCustomFields['customerDistrict'])) {
  53.                 $data = [
  54.                     'id' => $orderCustomer->getId(),
  55.                     'customFields' => ['customerDistrict' => $customerCustomFields['customerDistrict']]
  56.                 ];
  57.                 $this->orderCustomerRepository->update([$data], $event->getContext());
  58.             }
  59.         } catch (Exception $exception) {
  60.             $this->logger->error("Could not save customerDistrict on OrderCustomer!");
  61.         }
  62.     }
  63. }