custom/plugins/MolliePayments/src/Subscriber/ShippingSubscriber.php line 39

Open in your IDE?
  1. <?php
  2. namespace Kiener\MolliePayments\Subscriber;
  3. use Kiener\MolliePayments\Event\MollieOrderShipmentTrackingEvent;
  4. use Kiener\MolliePayments\Exception\CouldNotExtractMollieOrderIdException;
  5. use Kiener\MolliePayments\Facade\MollieShipment;
  6. use Psr\Log\LoggerInterface;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class ShippingSubscriber implements EventSubscriberInterface
  9. {
  10.     /**
  11.      * @var MollieShipment
  12.      */
  13.     private $shipmentFacade;
  14.     /**
  15.      * @var LoggerInterface
  16.      */
  17.     private $logger;
  18.     public function __construct(
  19.         MollieShipment  $shipmentFacade,
  20.         LoggerInterface $logger
  21.     )
  22.     {
  23.         $this->shipmentFacade $shipmentFacade;
  24.         $this->logger $logger;
  25.     }
  26.     public static function getSubscribedEvents()
  27.     {
  28.         return [
  29.             MollieOrderShipmentTrackingEvent::class => 'onShipOrderWithTracking',
  30.         ];
  31.     }
  32.     public function onShipOrderWithTracking(MollieOrderShipmentTrackingEvent $event)
  33.     {
  34.         try {
  35.             $this->shipmentFacade->shipOrderByOrderId(
  36.                 $event->getOrderId(),
  37.                 $event->getTrackingCarrier(),
  38.                 $event->getTrackingCode(),
  39.                 $event->getTrackingUrl(),
  40.                 $event->getContext()
  41.             );
  42.         } catch (CouldNotExtractMollieOrderIdException $e) {
  43.             // We need to catch CouldNotExtractMollieOrderIdException, because if it's not a Mollie Order
  44.             // it obviously cannot get shipped with Mollie. We also don't have to log this, except for debugging.
  45.             // But if we don't catch it, the rest of the process might break.
  46.             $this->logger->debug($e->getMessage(), [
  47.                 'orderId' => $event->getOrderId(),
  48.                 'trackingCarrier' => $event->getTrackingCarrier(),
  49.                 'trackingCode' => $event->getTrackingCode(),
  50.                 'trackingUrl' => $event->getTrackingUrl(),
  51.             ]);
  52.         } catch (\Exception $e) {
  53.             // We log the error, but don't rethrow so the rest of the proces can continue.
  54.             $this->logger->error(
  55.                 sprintf(
  56.                     "Error when shipping order from Mollie Event: \"%s\" in \"%s\" on line %s",
  57.                     $e->getMessage(),
  58.                     $e->getFile(),
  59.                     $e->getLine()
  60.                 ),
  61.                 [
  62.                     'orderId' => $event->getOrderId(),
  63.                     'trackingCarrier' => $event->getTrackingCarrier(),
  64.                     'trackingCode' => $event->getTrackingCode(),
  65.                     'trackingUrl' => $event->getTrackingUrl(),
  66.                 ]
  67.             );
  68.         }
  69.     }
  70. }