1
1
<?php
2
2
3
-
4
3
namespace NetReviews \EventListeners ;
5
4
6
5
use NetReviews \Model \NetreviewsOrderQueue ;
6
+ use NetReviews \Model \NetreviewsOrderQueueQuery ;
7
+ use NetReviews \NetReviews ;
7
8
use Symfony \Component \EventDispatcher \EventSubscriberInterface ;
8
9
use Thelia \Core \Event \Order \OrderEvent ;
10
+ use Thelia \Core \Event \OrderStatus \OrderStatusEvent ;
9
11
use Thelia \Core \Event \TheliaEvents ;
12
+ use Thelia \Model \OrderStatus ;
10
13
11
14
class OrderListener implements EventSubscriberInterface
12
15
{
13
16
public static function getSubscribedEvents ()
14
17
{
15
18
return [
16
19
TheliaEvents::ORDER_PAY => ['registerOrder ' , 64 ],
20
+ TheliaEvents::ORDER_UPDATE_STATUS => ['checkOrderInQueue ' , 64 ],
17
21
];
18
22
}
19
23
24
+ /**
25
+ * @param OrderEvent $event
26
+ * @throws \Propel\Runtime\Exception\PropelException
27
+ */
20
28
public function registerOrder (OrderEvent $ event )
21
29
{
22
- $ netReviewsOrderQueue = new NetreviewsOrderQueue ();
23
- $ netReviewsOrderQueue ->setOrderId ($ event ->getPlacedOrder ()->getId ())
24
- ->setStatus (0 )
25
- ->save ();
30
+ $ statusToExport = explode (', ' , NetReviews::getConfigValue ('status_to_export ' , '4 ' ));
31
+ if (in_array ($ event ->getPlacedOrder ()->getStatusId (), $ statusToExport , false )){
32
+ $ netReviewsOrderQueue = new NetreviewsOrderQueue ();
33
+ $ netReviewsOrderQueue ->setOrderId ($ event ->getPlacedOrder ()->getId ())
34
+ ->setStatus (0 )
35
+ ->save ();
36
+ }
37
+ }
38
+
39
+ /**
40
+ * @param OrderEvent $event
41
+ * @throws \Propel\Runtime\Exception\PropelException
42
+ */
43
+ public function checkOrderInQueue (OrderEvent $ event )
44
+ {
45
+ $ statusToExport = explode (', ' , NetReviews::getConfigValue ('status_to_export ' , '4 ' ));
46
+
47
+ $ newStatus = $ event ->getOrder ()->getStatusId ();
48
+ $ orderId = $ event ->getOrder ()->getId ();
49
+
50
+ $ netReviewsOrderQueue = NetreviewsOrderQueueQuery::create ()
51
+ ->filterByOrderId ($ orderId )
52
+ ->findOne ();
53
+
54
+ if (null !== $ netReviewsOrderQueue ){
55
+ if (!in_array ($ newStatus , $ statusToExport , false ) && (int )$ netReviewsOrderQueue ->getStatus () === 0 ){
56
+ $ netReviewsOrderQueue ->delete ();
57
+ }
58
+ } else if (in_array ($ newStatus , $ statusToExport , false )){
59
+ $ netReviewsOrderQueue = new NetreviewsOrderQueue ();
60
+ $ netReviewsOrderQueue ->setOrderId ($ orderId )
61
+ ->setStatus (0 )
62
+ ->save ();
63
+ }
26
64
}
27
65
}
0 commit comments