1+ <?php
2+
3+ namespace ColissimoLabel \EventListeners ;
4+
5+
6+ use ColissimoLabel \ColissimoLabel ;
7+ use ColissimoLabel \Service \LabelService ;
8+ use Picking \Event \GenerateLabelEvent ;
9+ use Picking \Picking ;
10+ use Symfony \Component \DependencyInjection \ContainerInterface ;
11+ use Symfony \Component \EventDispatcher \EventDispatcherInterface ;
12+ use Symfony \Component \EventDispatcher \EventSubscriberInterface ;
13+ use Thelia \Controller \Admin \BaseAdminController ;
14+ use Thelia \Core \HttpFoundation \JsonResponse ;
15+
16+ /**
17+ * Class GenerateLabelListener
18+ *
19+ * This class is used only when you have the Picking module
20+ *
21+ * @package ColissimoLabel\EventListeners
22+ */
23+ class GenerateLabelListener extends BaseAdminController implements EventSubscriberInterface
24+ {
25+ public function __construct (
26+ private readonly LabelService $ labelService ,
27+ private readonly EventDispatcherInterface $ eventDispatcher
28+ ) {
29+ }
30+
31+ public function generateLabel (GenerateLabelEvent $ event )
32+ {
33+ $ deliveryModuleCode = $ event ->getOrder ()->getModuleRelatedByDeliveryModuleId ()?->getCode();
34+ if ($ deliveryModuleCode === "ColissimoHomeDelivery " || $ deliveryModuleCode === "ColissimoPickupPoint " || $ deliveryModuleCode === "SoColissimo " ) {
35+ $ data = [];
36+ $ orderId = $ event ->getOrder ()->getId ();
37+ $ data ['new_status ' ] = ColissimoLabel::getConfigValue ("new_status " , 'nochange ' );
38+ $ data ['order_id ' ][$ orderId ] = $ orderId ;
39+ $ data ['weight ' ][$ orderId ] = $ event ->getWeight ();
40+ $ data ['signed ' ][$ orderId ] = $ event ->isSignedDelivery ();
41+ $ event ->setResponse (new JsonResponse ($ this ->labelService ->generateLabel ($ data , $ this ->eventDispatcher )[0 ]));
42+ }
43+ }
44+
45+ public static function getSubscribedEvents ()
46+ {
47+ $ events = [];
48+ if (class_exists ('Picking\Event\GenerateLabelEvent ' )){
49+ $ events [GenerateLabelEvent::PICKING_GENERATE_LABEL ] = ['generateLabel ' , 65 ];
50+ }
51+ return $ events ;
52+ }
53+ }
0 commit comments