diff --git a/src/Command/DispatchOrdersCommand.php b/src/Command/UploadOrdersCommand.php similarity index 56% rename from src/Command/DispatchOrdersCommand.php rename to src/Command/UploadOrdersCommand.php index 687f216..cea9ca5 100644 --- a/src/Command/DispatchOrdersCommand.php +++ b/src/Command/UploadOrdersCommand.php @@ -4,26 +4,26 @@ namespace Setono\SyliusShipmondoPlugin\Command; -use Setono\SyliusShipmondoPlugin\Dispatcher\OrderDispatcherInterface; +use Setono\SyliusShipmondoPlugin\Uploader\OrderUploaderInterface; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; #[AsCommand( - name: 'setono:sylius-shipmondo:dispatch-orders', - description: 'Dispatch orders to Shipmondo', + name: 'setono:sylius-shipmondo:upload-orders', + description: 'Upload orders to Shipmondo', )] -final class DispatchOrdersCommand extends Command +final class UploadOrdersCommand extends Command { - public function __construct(private readonly OrderDispatcherInterface $orderDispatcher) + public function __construct(private readonly OrderUploaderInterface $orderUploader) { parent::__construct(); } protected function execute(InputInterface $input, OutputInterface $output): int { - $this->orderDispatcher->dispatch(); + $this->orderUploader->upload(); return 0; } diff --git a/src/Dispatcher/OrderDispatcherInterface.php b/src/Dispatcher/OrderDispatcherInterface.php deleted file mode 100644 index 473da07..0000000 --- a/src/Dispatcher/OrderDispatcherInterface.php +++ /dev/null @@ -1,13 +0,0 @@ -orderRepository->find($message->order); @@ -32,11 +35,13 @@ public function __invoke(DispatchOrder $message): void Assert::isInstanceOf($order, OrderInterface::class); if (null !== $message->version && $order->getVersion() !== $message->version) { - throw new UnrecoverableMessageHandlingException(sprintf('Order with id %s has been updated since it was dispatched', (string) $message->order)); + throw new UnrecoverableMessageHandlingException(sprintf('Order with id %s has been updated since it was tried to be uploaded', (string) $message->order)); } $salesOrder = $this->salesOrderDataMapper->map($order); $this->shipmondoClient->salesOrders()->create($salesOrder); + + $this->orderWorkflow->apply($order, OrderWorkflow::TRANSITION_COMPLETE_UPLOAD); } } diff --git a/src/Model/OrderInterface.php b/src/Model/OrderInterface.php index 8dce86a..31f599c 100644 --- a/src/Model/OrderInterface.php +++ b/src/Model/OrderInterface.php @@ -11,9 +11,9 @@ interface OrderInterface extends BaseOrderInterface, VersionedInterface { public const SHIPMONDO_STATE_PENDING = 'pending'; - public const SHIPMONDO_STATE_DISPATCHING = 'dispatching'; + public const SHIPMONDO_STATE_UPLOADING_TO_SHIPMONDO = 'uploading_to_shipmondo'; - public const SHIPMONDO_STATE_DISPATCHED = 'dispatched'; + public const SHIPMONDO_STATE_UPLOADED_TO_SHIPMONDO = 'uploaded_to_shipmondo'; public const SHIPMONDO_STATE_FAILED = 'failed'; diff --git a/src/Provider/PreQualifiedDispatchableOrdersProvider.php b/src/Provider/PreQualifiedUploadableOrdersProvider.php similarity index 88% rename from src/Provider/PreQualifiedDispatchableOrdersProvider.php rename to src/Provider/PreQualifiedUploadableOrdersProvider.php index 195d1cd..b911a48 100644 --- a/src/Provider/PreQualifiedDispatchableOrdersProvider.php +++ b/src/Provider/PreQualifiedUploadableOrdersProvider.php @@ -7,13 +7,13 @@ use Doctrine\ORM\EntityRepository; use DoctrineBatchUtils\BatchProcessing\SelectBatchIteratorAggregate; use Psr\EventDispatcher\EventDispatcherInterface; -use Setono\SyliusShipmondoPlugin\Event\PreSelectPreQualifiedDispatchableOrders; +use Setono\SyliusShipmondoPlugin\Event\PreSelectPreQualifiedUploadableOrders; use Setono\SyliusShipmondoPlugin\Model\OrderInterface; use Sylius\Component\Core\OrderCheckoutStates; use Sylius\Component\Core\OrderPaymentStates; use Sylius\Component\Order\Repository\OrderRepositoryInterface; -final class PreQualifiedDispatchableOrdersProvider implements PreQualifiedDispatchableOrdersProviderInterface +final class PreQualifiedUploadableOrdersProvider implements PreQualifiedUploadableOrdersProviderInterface { public function __construct( private readonly OrderRepositoryInterface&EntityRepository $orderRepository, @@ -37,7 +37,7 @@ public function getOrders(): \Generator ->setParameter('paymentStates', [OrderPaymentStates::STATE_PAID, OrderPaymentStates::STATE_AUTHORIZED]) ; - $this->eventDispatcher->dispatch(new PreSelectPreQualifiedDispatchableOrders($qb)); + $this->eventDispatcher->dispatch(new PreSelectPreQualifiedUploadableOrders($qb)); /** @var SelectBatchIteratorAggregate $iterator */ $iterator = SelectBatchIteratorAggregate::fromQuery($qb->getQuery(), 50); diff --git a/src/Provider/PreQualifiedDispatchableOrdersProviderInterface.php b/src/Provider/PreQualifiedUploadableOrdersProviderInterface.php similarity index 81% rename from src/Provider/PreQualifiedDispatchableOrdersProviderInterface.php rename to src/Provider/PreQualifiedUploadableOrdersProviderInterface.php index 3b63f96..9c027f9 100644 --- a/src/Provider/PreQualifiedDispatchableOrdersProviderInterface.php +++ b/src/Provider/PreQualifiedUploadableOrdersProviderInterface.php @@ -6,7 +6,7 @@ use Setono\SyliusShipmondoPlugin\Model\OrderInterface; -interface PreQualifiedDispatchableOrdersProviderInterface +interface PreQualifiedUploadableOrdersProviderInterface { /** * @return iterable diff --git a/src/Resources/config/services.xml b/src/Resources/config/services.xml index 7a6c591..9e3e70d 100644 --- a/src/Resources/config/services.xml +++ b/src/Resources/config/services.xml @@ -6,12 +6,12 @@ - + diff --git a/src/Resources/config/services/command.xml b/src/Resources/config/services/command.xml index 0d12de0..9ef569f 100644 --- a/src/Resources/config/services/command.xml +++ b/src/Resources/config/services/command.xml @@ -2,9 +2,9 @@ - - + + diff --git a/src/Resources/config/services/message.xml b/src/Resources/config/services/message.xml index 05a1a17..351835c 100644 --- a/src/Resources/config/services/message.xml +++ b/src/Resources/config/services/message.xml @@ -2,11 +2,12 @@ - + + diff --git a/src/Resources/config/services/provider.xml b/src/Resources/config/services/provider.xml index 237525d..cdd5d81 100644 --- a/src/Resources/config/services/provider.xml +++ b/src/Resources/config/services/provider.xml @@ -2,8 +2,8 @@ - + diff --git a/src/Resources/config/services/dispatcher.xml b/src/Resources/config/services/uploader.xml similarity index 76% rename from src/Resources/config/services/dispatcher.xml rename to src/Resources/config/services/uploader.xml index d195940..4846637 100644 --- a/src/Resources/config/services/dispatcher.xml +++ b/src/Resources/config/services/uploader.xml @@ -2,9 +2,9 @@ - - + + diff --git a/src/Resources/translations/messages.en.yaml b/src/Resources/translations/messages.en.yaml index 08f8ff9..da2f65c 100644 --- a/src/Resources/translations/messages.en.yaml +++ b/src/Resources/translations/messages.en.yaml @@ -1,12 +1,12 @@ setono_sylius_shipmondo: ui: - shipmondo: Shipmondo - shipmondo_index: Manage your Shipmondo settings - shipmondo_state: Shipmondo state - dispatching: Dispatching - pending: Pending - dispatched: Dispatched failed: Failed + pending: Pending register_webhooks: Register webhooks register_webhooks_information: Either you have not registered webhooks yet or you need to re-register them because of changes in the configuration. Either way, please click the "Register webhooks" button below. + shipmondo: Shipmondo + shipmondo_index: Manage your Shipmondo settings + shipmondo_state: Shipmondo state + uploaded_to_shipmondo: Uploaded to Shipmondo + uploading_to_shipmondo: Uploading to Shipmondo webhooks_registered_information: Webhooks were registered on %date%. diff --git a/src/Dispatcher/OrderDispatcher.php b/src/Uploader/OrderUploader.php similarity index 63% rename from src/Dispatcher/OrderDispatcher.php rename to src/Uploader/OrderUploader.php index e319039..5c4c808 100644 --- a/src/Dispatcher/OrderDispatcher.php +++ b/src/Uploader/OrderUploader.php @@ -2,24 +2,24 @@ declare(strict_types=1); -namespace Setono\SyliusShipmondoPlugin\Dispatcher; +namespace Setono\SyliusShipmondoPlugin\Uploader; use Doctrine\ORM\OptimisticLockException; use Doctrine\Persistence\ManagerRegistry; use Setono\DoctrineObjectManagerTrait\ORM\ORMManagerTrait; -use Setono\SyliusShipmondoPlugin\Message\Command\DispatchOrder; -use Setono\SyliusShipmondoPlugin\Provider\PreQualifiedDispatchableOrdersProviderInterface; +use Setono\SyliusShipmondoPlugin\Message\Command\UploadOrder; +use Setono\SyliusShipmondoPlugin\Provider\PreQualifiedUploadableOrdersProviderInterface; use Setono\SyliusShipmondoPlugin\Workflow\OrderWorkflow; use Symfony\Component\Messenger\MessageBusInterface; use Symfony\Component\Workflow\Exception\LogicException; use Symfony\Component\Workflow\WorkflowInterface; -final class OrderDispatcher implements OrderDispatcherInterface +final class OrderUploader implements OrderUploaderInterface { use ORMManagerTrait; public function __construct( - private readonly PreQualifiedDispatchableOrdersProviderInterface $preQualifiedDispatchableOrdersProvider, + private readonly PreQualifiedUploadableOrdersProviderInterface $preQualifiedUploadableOrdersProvider, private readonly MessageBusInterface $commandBus, private readonly WorkflowInterface $orderWorkflow, ManagerRegistry $managerRegistry, @@ -27,13 +27,13 @@ public function __construct( $this->managerRegistry = $managerRegistry; } - public function dispatch(): void + public function upload(): void { // todo: check for eligibility - foreach ($this->preQualifiedDispatchableOrdersProvider->getOrders() as $order) { + foreach ($this->preQualifiedUploadableOrdersProvider->getOrders() as $order) { try { - $this->orderWorkflow->apply($order, OrderWorkflow::TRANSITION_START_DISPATCH); + $this->orderWorkflow->apply($order, OrderWorkflow::TRANSITION_START_UPLOAD); } catch (LogicException) { continue; } @@ -44,7 +44,7 @@ public function dispatch(): void continue; } - $this->commandBus->dispatch(new DispatchOrder($order)); + $this->commandBus->dispatch(new UploadOrder($order)); } } } diff --git a/src/Uploader/OrderUploaderInterface.php b/src/Uploader/OrderUploaderInterface.php new file mode 100644 index 0000000..330dac1 --- /dev/null +++ b/src/Uploader/OrderUploaderInterface.php @@ -0,0 +1,13 @@ +