From be847dcbd79a7f7ac43f46156ee12f443d3dd583 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joachim=20L=C3=B8vgaard?= Date: Thu, 29 Aug 2024 12:31:29 +0200 Subject: [PATCH] Handle cancelled order scenario --- .../ProcessUploadOrderRequestHandler.php | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/Message/CommandHandler/ProcessUploadOrderRequestHandler.php b/src/Message/CommandHandler/ProcessUploadOrderRequestHandler.php index df2906f..86f172f 100644 --- a/src/Message/CommandHandler/ProcessUploadOrderRequestHandler.php +++ b/src/Message/CommandHandler/ProcessUploadOrderRequestHandler.php @@ -4,12 +4,14 @@ namespace Setono\SyliusPeakPlugin\Message\CommandHandler; +use Doctrine\ORM\EntityManagerInterface; use Doctrine\Persistence\ManagerRegistry; use Setono\Doctrine\ORMTrait; use Setono\PeakWMS\Client\ClientInterface; use Setono\PeakWMS\DataTransferObject\SalesOrder\SalesOrder; use Setono\SyliusPeakPlugin\DataMapper\SalesOrder\SalesOrderDataMapperInterface; use Setono\SyliusPeakPlugin\Message\Command\ProcessUploadOrderRequest; +use Setono\SyliusPeakPlugin\Model\OrderInterface; use Setono\SyliusPeakPlugin\Model\UploadOrderRequestInterface; use Setono\SyliusPeakPlugin\Workflow\UploadOrderRequestWorkflow; use Symfony\Component\Messenger\Exception\UnrecoverableMessageHandlingException; @@ -50,6 +52,27 @@ public function __invoke(ProcessUploadOrderRequest $message): void throw new UnrecoverableMessageHandlingException(sprintf('The upload order request with id %d does not have an associated order', $message->uploadOrderRequest)); } + match ($order->getState()) { + OrderInterface::STATE_CANCELLED => $this->handleCancelledState($order, $uploadOrderRequest), + default => $this->handleOtherStates($message, $manager, $order, $uploadOrderRequest), + }; + } + + public function handleCancelledState(OrderInterface $order, UploadOrderRequestInterface $uploadOrderRequest): void + { + if ($uploadOrderRequest->getPeakOrderId() === null) { + return; + } + + $this->peakClient->salesOrder()->cancel((string) $order->getId()); + } + + private function handleOtherStates( + ProcessUploadOrderRequest $message, + EntityManagerInterface $manager, + OrderInterface $order, + UploadOrderRequestInterface $uploadOrderRequest, + ): void { try { $salesOrder = new SalesOrder(); $this->salesOrderDataMapper->map($order, $salesOrder);