From 0624b4dfdf01a460720fbdf56000770218732f2e Mon Sep 17 00:00:00 2001 From: Thomas Da Silva Date: Wed, 10 Apr 2024 14:58:42 +0200 Subject: [PATCH] Fix Send Orders --- Command/SendOrderCommand.php | 3 +- Config/module.xml | 2 +- EventListeners/OrderListener.php | 50 ++++++++++++++++++++------------ Service/OrderService.php | 14 ++++++--- 4 files changed, 44 insertions(+), 25 deletions(-) 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(); } } }