Skip to content

Commit e9da1c3

Browse files
Add filter order by status for OrderListener (#11)
* Add filter order by status for OrderListener * Modify queue on order status update * check order queue status before deleting
1 parent d291c33 commit e9da1c3

File tree

1 file changed

+43
-5
lines changed

1 file changed

+43
-5
lines changed

EventListeners/OrderListener.php

+43-5
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,65 @@
11
<?php
22

3-
43
namespace NetReviews\EventListeners;
54

65
use NetReviews\Model\NetreviewsOrderQueue;
6+
use NetReviews\Model\NetreviewsOrderQueueQuery;
7+
use NetReviews\NetReviews;
78
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
89
use Thelia\Core\Event\Order\OrderEvent;
10+
use Thelia\Core\Event\OrderStatus\OrderStatusEvent;
911
use Thelia\Core\Event\TheliaEvents;
12+
use Thelia\Model\OrderStatus;
1013

1114
class OrderListener implements EventSubscriberInterface
1215
{
1316
public static function getSubscribedEvents()
1417
{
1518
return [
1619
TheliaEvents::ORDER_PAY => ['registerOrder', 64],
20+
TheliaEvents::ORDER_UPDATE_STATUS => ['checkOrderInQueue', 64],
1721
];
1822
}
1923

24+
/**
25+
* @param OrderEvent $event
26+
* @throws \Propel\Runtime\Exception\PropelException
27+
*/
2028
public function registerOrder(OrderEvent $event)
2129
{
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+
}
2664
}
2765
}

0 commit comments

Comments
 (0)