#[Package('checkout')]
class BlockedShippingMethodSwitcher{ public function __construct(private readonly AbstractShippingMethodRoute
$shippingMethodRoute) { } public function switch(ErrorCollection
$errors, SalesChannelContext
$salesChannelContext): ShippingMethodEntity
{ $originalShippingMethod =
$salesChannelContext->
getShippingMethod();
if (!
$this->
shippingMethodBlocked($errors)) { return $originalShippingMethod;
} $shippingMethod =
$this->
getShippingMethodToChangeTo($errors,
$salesChannelContext);
if ($shippingMethod === null
) { return $originalShippingMethod;
} $this->
addNoticeToCart($errors,
$shippingMethod);
return $shippingMethod;
}