diff --git a/Command/SendOrderCommand.php b/Command/SendOrderCommand.php
index 7f703f0..2b8c271 100644
--- a/Command/SendOrderCommand.php
+++ b/Command/SendOrderCommand.php
@@ -48,8 +48,7 @@ public function execute(InputInterface $input, OutputInterface $output): int
if ($response->success === 1)
{
- $this->orderService->clearOrderQueueTable();
- $output->write("Order Queue is now empty\n");
+ $this->orderService->setOrdersAsSend();
}
} catch (Exception $exception) {
$output->write($exception->getMessage());
diff --git a/Config/module.xml b/Config/module.xml
index 5aa40e9..c7f5691 100644
--- a/Config/module.xml
+++ b/Config/module.xml
@@ -13,7 +13,7 @@
en_US
fr_FR
- 1.0.12
+ 1.0.13
Chabreuil Antoine
diff --git a/EventListeners/OrderListener.php b/EventListeners/OrderListener.php
index bcd9eb4..614fc0b 100644
--- a/EventListeners/OrderListener.php
+++ b/EventListeners/OrderListener.php
@@ -23,38 +23,52 @@ public function __construct(
/**
* @throws PropelException
*/
- public function sendOrderToQueue(OrderEvent $orderEvent): void
+ public function registerOrder(OrderEvent $event): void
{
- $request = $this->requestStack->getCurrentRequest()->request;
+ $statusToExport = explode(',', GuaranteedOpinion::getConfigValue(GuaranteedOpinion::STATUS_TO_EXPORT_CONFIG_KEY, '4'));
- if (null !== GuaranteedOpinionOrderQueueQuery::create()->findOneByOrderId($orderEvent->getOrder()->getId()))
- {
- return;
+ if (in_array($event->getPlacedOrder()->getStatusId(), $statusToExport, false)) {
+ $guaranteedReviewsOrderQueue = new GuaranteedOpinionOrderQueue();
+ $guaranteedReviewsOrderQueue->setOrderId($event->getPlacedOrder()->getId())
+ ->setStatus(0)
+ ->setTreatedAt(new DateTime(''))
+ ->save()
+ ;
}
+ }
- $orderStatuses = explode(',', GuaranteedOpinion::getConfigValue(GuaranteedOpinion::STATUS_TO_EXPORT_CONFIG_KEY));
+ /**
+ * @param OrderEvent $event
+ * @throws PropelException
+ */
+ public function checkOrderInQueue(OrderEvent $event): void
+ {
+ $statusToExport = explode(',', GuaranteedOpinion::getConfigValue(GuaranteedOpinion::STATUS_TO_EXPORT_CONFIG_KEY, '4'));
- foreach ($orderStatuses as $orderStatus)
- {
- if ($orderStatus === $status = $request->get('status_id'))
- {
- $guaranteedOpinionOrderQueue = new GuaranteedOpinionOrderQueue();
+ $newStatus = $event->getOrder()->getStatusId();
+ $orderId = $event->getOrder()->getId();
- $guaranteedOpinionOrderQueue
- ->setOrderId($orderEvent->getOrder()->getId())
- ->setTreatedAt(new DateTime(''))
- ->setStatus($status)
- ;
+ $guaranteedReviewsOrderQueue = GuaranteedOpinionOrderQueueQuery::create()
+ ->filterByOrderId($orderId)
+ ->findOne();
- $guaranteedOpinionOrderQueue->save();
+ if (null !== $guaranteedReviewsOrderQueue) {
+ if (!in_array($newStatus, $statusToExport, false) && (int)$guaranteedReviewsOrderQueue->getStatus() === 0){
+ $guaranteedReviewsOrderQueue->delete();
}
+ } else if (in_array($newStatus, $statusToExport, false)){
+ $guaranteedReviewsOrderQueue = new GuaranteedOpinionOrderQueue();
+ $guaranteedReviewsOrderQueue->setOrderId($orderId)
+ ->setStatus(0)
+ ->save();
}
}
public static function getSubscribedEvents(): array
{
return array(
- TheliaEvents::ORDER_UPDATE_STATUS => ["sendOrderToQueue", 192]
+ TheliaEvents::ORDER_UPDATE_STATUS => ["checkOrderInQueue", 64],
+ TheliaEvents::ORDER_PAY => ['registerOrder', 64],
);
}
}
\ No newline at end of file
diff --git a/Service/OrderService.php b/Service/OrderService.php
index 35c5b21..14c764f 100644
--- a/Service/OrderService.php
+++ b/Service/OrderService.php
@@ -28,7 +28,7 @@ public function prepareOrderRequest(): string
{
$jsonOrder = [];
- $guaranteedOpinionOrders = GuaranteedOpinionOrderQueueQuery::create()->find();
+ $guaranteedOpinionOrders = GuaranteedOpinionOrderQueueQuery::create()->filterByTreatedAt(null)->findByStatus(0);
foreach ($guaranteedOpinionOrders as $guaranteedOpinionOrder) {
$jsonOrder[] = $this->orderToJsonObject($guaranteedOpinionOrder);
@@ -97,12 +97,18 @@ private function productToJsonObject(OrderProduct $orderProduct): array
/**
* @throws PropelException
*/
- public function clearOrderQueueTable(): void
+ public function setOrdersAsSend(): void
{
- $orders = GuaranteedOpinionOrderQueueQuery::create()->find();
+ $orders = GuaranteedOpinionOrderQueueQuery::create()
+ ->filterByTreatedAt(null)
+ ->findByStatus(0);
foreach ($orders as $order) {
- $order->delete();
+ $order
+ ->setTreatedAt(new \DateTime())
+ ->setStatus(1);
+
+ $order->save();
}
}
}