Passed
Push — master ( c090bb...e5cdcf )
by Carlos C
01:54 queued 12s
created

SourcesImporter   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Test Coverage

Coverage 94.44%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 19
c 2
b 0
f 0
dl 0
loc 29
ccs 17
cts 18
cp 0.9444
rs 10
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A import() 0 27 4
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpCfdi\SatCatalogosPopulate\Importers;
6
7
use PhpCfdi\SatCatalogosPopulate\Database\Repository;
8
use PhpCfdi\SatCatalogosPopulate\ImporterInterface;
9
use Psr\Log\LoggerInterface;
10
use RuntimeException;
11
12
class SourcesImporter implements ImporterInterface
13
{
14 1
    public function import(string $source, Repository $repository, LoggerInterface $logger): void
15
    {
16 1
        $importers = [
17 1
            'CFDI' => ['source' => $source . '/catCFDI.xls', 'importer' => new CfdiCatalogs()],
18 1
            'CFDI 4.0' => ['source' => $source . '/cfdi_40.xls', 'importer' => new Cfdi40Catalogs()],
19 1
            'Nóminas' => ['source' => $source . '/catNomina.xls', 'importer' => new NominaCatalogs()],
20
            'Nóminas - Estados' => [
21 1
                'source' => $source . '/nominas_estados.xls',
22 1
                'importer' => new NominaEstadosCatalogs(),
23
            ],
24 1
            'CCE' => ['source' => $source, 'importer' => new CceCatalogs()],
25 1
            'Pagos' => ['source' => $source . '/catPagos.xls', 'importer' => new RepCatalogs()],
26
        ];
27
28 1
        foreach ($importers as $name => $info) {
29 1
            $sourceFile = $info['source'];
30 1
            if (! file_exists($sourceFile)) {
31
                throw new RuntimeException("Se esperaba encontrar $sourceFile pero no existe");
32
            }
33
        }
34
35 1
        foreach ($importers as $name => $info) {
36
            /** @var ImporterInterface $importer */
37 1
            $sourceFile = $info['source'];
38 1
            $importer = $info['importer'];
39 1
            $logger->info("Importando $name desde $sourceFile...");
40 1
            $importer->import($sourceFile, $repository, $logger);
41
        }
42
    }
43
}
44