GewebeSyliusVATExtension   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 25
dl 0
loc 51
rs 10
c 0
b 0
f 0
wmc 6

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getMigrationsNamespace() 0 3 1
A getMigrationsDirectory() 0 3 1
A prepend() 0 3 1
A load() 0 26 2
A getNamespacesOfMigrationsExecutedBefore() 0 4 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Gewebe\SyliusVATPlugin\DependencyInjection;
6
7
use Sylius\Bundle\CoreBundle\DependencyInjection\PrependDoctrineMigrationsTrait;
8
use Sylius\Bundle\ResourceBundle\DependencyInjection\Extension\AbstractResourceExtension;
9
use Symfony\Component\Config\FileLocator;
10
use Symfony\Component\DependencyInjection\ContainerBuilder;
11
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
12
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
13
14
final class GewebeSyliusVATExtension extends AbstractResourceExtension implements PrependExtensionInterface
15
{
16
    use PrependDoctrineMigrationsTrait;
17
18
    public function load(array $configs, ContainerBuilder $container): void
19
    {
20
        $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../../config'));
21
        $loader->load('services.yaml');
22
23
        $configuration = $this->getConfiguration([], $container);
24
        if ($configuration === null) {
25
            return;
26
        }
27
28
        /** @var string[][] $configs */
29
        $configs = $this->processConfiguration($configuration, $configs);
30
31
        $definition = $container->getDefinition('gewebe_sylius_vat_plugin.order_processor');
32
        $definition->replaceArgument(3, $configs['order']['recalculate']);
33
34
        $definition = $container->getDefinition('gewebe_sylius_vat_plugin.vat_number_validator_config');
35
        $definition->replaceArgument(0, $configs['required']['default']);
36
        $definition->replaceArgument(1, $configs['required']['company']);
37
        $definition->replaceArgument(2, $configs['required']['countries']);
38
        $definition->replaceArgument(3, $configs['validate']['format']);
39
        $definition->replaceArgument(4, $configs['validate']['country']);
40
        $definition->replaceArgument(5, $configs['validate']['registration']);
41
        $definition->replaceArgument(6, $configs['validate']['on_service_unavailable']);
42
        $definition->replaceArgument(7, $configs['revalidate']['on_login']);
43
        $definition->replaceArgument(8, $configs['revalidate']['expiration_days']);
44
    }
45
46
    public function prepend(ContainerBuilder $container): void
47
    {
48
        $this->prependDoctrineMigrations($container);
49
    }
50
51
    protected function getMigrationsNamespace(): string
52
    {
53
        return 'Gewebe\SyliusVATPlugin\Migrations';
54
    }
55
56
    protected function getMigrationsDirectory(): string
57
    {
58
        return '@GewebeSyliusVATPlugin/src/Migrations';
59
    }
60
61
    protected function getNamespacesOfMigrationsExecutedBefore(): array
62
    {
63
        return [
64
            'Sylius\Bundle\CoreBundle\Migrations',
65
        ];
66
    }
67
}
68