1717use libphonenumber \PhoneNumberFormat ;
1818use libphonenumber \PhoneNumberUtil ;
1919use LocalPickup \LocalPickup ;
20- use OpenApi \Events \DeliveryModuleOptionEvent ;
21- use OpenApi \Events \OpenApiEvents ;
22- use OpenApi \Model \Api \DeliveryModuleOption ;
23- use OpenApi \Model \Api \ModelFactory ;
2420use Propel \Runtime \Exception \PropelException ;
2521use SmartyException ;
2622use Symfony \Component \EventDispatcher \EventSubscriberInterface ;
27- use Symfony \Component \HttpFoundation \RequestStack ;
2823use Symfony \Component \Notifier \Exception \TransportExceptionInterface ;
2924use Symfony \Component \Notifier \Message \SmsMessage ;
3025use Symfony \Component \Notifier \TexterInterface ;
3126use Thelia \Core \Event \Order \OrderEvent ;
3227use Thelia \Core \Event \TheliaEvents ;
3328use Thelia \Core \Template \ParserInterface ;
34- use Thelia \Core \Template \TemplateHelperInterface ;
3529use Thelia \Exception \TheliaProcessException ;
3630use Thelia \Log \Tlog ;
3731use Thelia \Mailer \MailerFactory ;
3832use Thelia \Model \CountryQuery ;
3933use Thelia \Model \MessageQuery ;
40- use Thelia \Model \ModuleQuery ;
4134use Thelia \Model \Order ;
4235use Thelia \Model \OrderStatus ;
4336
44- class NotificationListener implements EventSubscriberInterface
37+ readonly class NotificationListener implements EventSubscriberInterface
4538{
4639 /**
4740 * APIListener constructor.
4841 */
4942 public function __construct (
50- private MailerFactory $ mailer ,
51- private ?TexterInterface $ texter ,
52- private ParserInterface $ parser ,
53- private TemplateHelperInterface $ templateHelper
54- )
55- {
56- $ this ->mailer = $ mailer ;
43+ private MailerFactory $ mailer ,
44+ private ?TexterInterface $ texter ,
45+ private ParserInterface $ parser ,
46+ ) {
5747 }
5848
5949 /**
50+ * @param OrderEvent $orderEvent
51+ * @return void
6052 * @throws PropelException
6153 * @throws TransportExceptionInterface
62- * @throws SmartyException
6354 */
6455 public function orderStatusChange (OrderEvent $ orderEvent ): void
6556 {
@@ -79,12 +70,22 @@ public function orderStatusChange(OrderEvent $orderEvent): void
7970 }
8071 }
8172
73+ /**
74+ * @param Order $order
75+ * @return bool
76+ * @throws PropelException
77+ */
8278 private function isEligibleForLocalPickupNotification (Order $ order ): bool
8379 {
8480 return $ order ->getDeliveryModuleId () === LocalPickup::getModuleId ()
8581 && $ order ->getOrderStatus ()->getCode () === OrderStatus::CODE_SENT ;
8682 }
8783
84+ /**
85+ * @param Order $order
86+ * @return void
87+ * @throws PropelException
88+ */
8889 private function sendLocalPickupEmail (Order $ order ): void
8990 {
9091 $ this ->mailer ->sendEmailToCustomer (
@@ -103,8 +104,12 @@ private function sendLocalPickupEmail(Order $order): void
103104 }
104105
105106 /**
106- * @throws PropelException|TransportExceptionInterface
107+ * @param Order $order
108+ * @return void
109+ * @throws NumberParseException
110+ * @throws PropelException
107111 * @throws SmartyException
112+ * @throws TransportExceptionInterface
108113 */
109114 private function sendSmsIfNeeded (Order $ order ): void
110115 {
@@ -118,20 +123,24 @@ private function sendSmsIfNeeded(Order $order): void
118123
119124 $ langCode = $ this ->getOrderLangCode ($ order );
120125 $ internationalNumber = $ this ->internationalizePhoneNumber ($ numberToUse , $ langCode );
126+
121127 $ message = MessageQuery::create ()
122128 ->filterByName (LocalPickup::SMS_CUSTOM_LOCAL_PICKUP )
123129 ->findOne ();
130+
124131 if (!$ message ) {
125132 throw new TheliaProcessException ('Message ' . LocalPickup::SMS_CUSTOM_LOCAL_PICKUP . ' not found. ' );
126133 }
127- $ this ->parser ->setTemplateDefinition (
128- $ this ->templateHelper ->getActiveMailTemplate (),
129- true
130- );
134+
135+ $ message ->setLocale ($ order ->getLang ()->getLocale ());
136+
137+ $ this ->parser ->assign ('order_id ' , $ order ->getId ());
138+
131139 $ sms = new SmsMessage (
132140 $ internationalNumber ,
133- $ this -> parser -> render ( $ message ->getHtmlTemplateFileName (), [ ' order_id ' => $ order -> getId ()] )
141+ $ message ->getTextMessageBody ( $ this -> parser )
134142 );
143+
135144 $ this ->texter ->send ($ sms );
136145 }
137146
@@ -175,7 +184,7 @@ private function getOrderLangCode(Order $order): string
175184 return $ country ? $ country ->getIsoalpha2 () : 'FR ' ;
176185 }
177186
178- public static function getSubscribedEvents ()
187+ public static function getSubscribedEvents (): array
179188 {
180189 return [
181190 TheliaEvents::ORDER_UPDATE_STATUS => ['orderStatusChange ' , 99 ]
0 commit comments