public function process(ContainerBuilder $container)
{
if (!$container->hasDefinition('sylius.registry.shipping_calculator') || !$container->hasDefinition('sylius.form_registry.shipping_calculator')) {
return;
}
$registry = $container->getDefinition('sylius.registry.shipping_calculator');
$formTypeRegistry = $container->getDefinition('sylius.form_registry.shipping_calculator');
$calculators = [];
foreach ($container->findTaggedServiceIds('sylius.shipping_calculator') as $id => $attributes) {
if (!isset($attributes[0]['calculator'], $attributes[0]['label'])) {
throw new \InvalidArgumentException('Tagged shipping calculators needs to have `calculator` and `label` attributes.');
}
$name = $attributes[0]['calculator'];
$calculators[$name] = $attributes[0]['label'];
$registry->addMethodCall('register', [$name, new Reference($id)]);
if (isset($attributes[0]['form-type'])) {
$formTypeRegistry->addMethodCall('add', [$name, 'default', $attributes[0]['form-type']]);
}
}
$container->setParameter('sylius.shipping_calculators', $calculators);
}