Slide 16
Slide 16 text
final class OrderTrackingProcessManager
{
public function continue(AbstractOrderLineEvent $event): void
{
$orderId = new OrderId((string) $event
->
getOrderId());
$order = $this
->
getOrder($orderId);
$delayMinutes = $this
->
delayCalculator
->
forContinue(
$event
->
getPrintProviderId(),
$event
->
getDecoratorOrderId(),
);
$delayedCommand = DelayedCommandFactory
::
createWithDelayInMinutes(
new UpdateOrderState($order
->
printProviderId(), $orderId),
$delayMinutes,
);
$order
->
synchronizationPending($this
->
clock
->
now());
$this
->
dispatcher
->
enqueue($delayedCommand);
$this
->
orders
->
save($order);
$this
->
logInfo(
‘continue',
(string) $event
->
getOrderId(),
$event
->
getPrintProviderId()
->
getValue(),
$delayMinutes
);
}