|
2 | 2 |
|
3 | 3 | namespace Drupal\commerce_checkout; |
4 | 4 |
|
| 5 | +use Drupal\commerce_checkout\Resolver\ChainCheckoutFlowResolverInterface; |
5 | 6 | use Drupal\commerce_order\Entity\OrderInterface; |
6 | | -use Drupal\Core\Entity\EntityTypeManagerInterface; |
7 | 7 |
|
| 8 | +/** |
| 9 | + * Manages checkout flows for orders. |
| 10 | + */ |
8 | 11 | class CheckoutOrderManager implements CheckoutOrderManagerInterface { |
9 | 12 |
|
10 | 13 | /** |
11 | | - * The entity type manager. |
| 14 | + * The chain checkout flow resolver. |
12 | 15 | * |
13 | | - * @var \Drupal\Core\Entity\EntityTypeManagerInterface |
| 16 | + * @var \Drupal\commerce_checkout\Resolver\ChainCheckoutFlowResolverInterface |
14 | 17 | */ |
15 | | - protected $entityTypeManager; |
| 18 | + protected $chainCheckoutFlowResolver; |
16 | 19 |
|
17 | 20 | /** |
18 | 21 | * Constructs a new CheckoutOrderManager object. |
19 | 22 | * |
20 | | - * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager |
21 | | - * The entity type manager. |
| 23 | + * @param \Drupal\commerce_checkout\Resolver\ChainCheckoutFlowResolverInterface $chain_checkout_flow_resolver |
| 24 | + * The chain checkout flow resolver. |
22 | 25 | */ |
23 | | - public function __construct(EntityTypeManagerInterface $entity_type_manager) { |
24 | | - $this->entityTypeManager = $entity_type_manager; |
| 26 | + public function __construct(ChainCheckoutFlowResolverInterface $chain_checkout_flow_resolver) { |
| 27 | + $this->chainCheckoutFlowResolver = $chain_checkout_flow_resolver; |
25 | 28 | } |
26 | 29 |
|
27 | 30 | /** |
28 | 31 | * {@inheritdoc} |
29 | 32 | */ |
30 | 33 | public function getCheckoutFlow(OrderInterface $order) { |
31 | 34 | if ($order->checkout_flow->isEmpty()) { |
32 | | - /** @var \Drupal\commerce_order\Entity\OrderTypeInterface $order_type */ |
33 | | - $order_type = $this->entityTypeManager->getStorage('commerce_order_type')->load($order->bundle()); |
34 | | - $checkout_flow = $order_type->getThirdPartySetting('commerce_checkout', 'checkout_flow', 'default'); |
35 | | - // @todo Allow other modules to add their own resolving logic. |
36 | | - $order->checkout_flow->target_id = $checkout_flow; |
| 35 | + $order->checkout_flow = $this->chainCheckoutFlowResolver->resolve($order); |
37 | 36 | $order->save(); |
38 | 37 | } |
39 | 38 |
|
|
0 commit comments