Test Failed
Pull Request — master (#24)
by Herberto
05:13
created

AddressFactory::extractRijksDriehoek()   A

Complexity

Conditions 4
Paths 2

Size

Total Lines 16

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 4.0218

Importance

Changes 0
Metric Value
dl 0
loc 16
ccs 8
cts 9
cp 0.8889
rs 9.7333
c 0
b 0
f 0
cc 4
nc 2
nop 1
crap 4.0218
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Werkspot\KvkApi\Client\Factory\Profile\Company;
6
7
use Werkspot\KvkApi\Client\Factory\AbstractFactory;
8
use Werkspot\KvkApi\Client\Profile\Company\Address;
9
use Werkspot\KvkApi\Client\Profile\Company\Address\GpsCoordinates;
10
use Werkspot\KvkApi\Client\Profile\Company\Address\RijksDriehoek;
11
12
final class AddressFactory extends AbstractFactory implements AddressFactoryInterface
13
{
14
    /**
15
     * @return Address[]
16
     */
17 1
    public function fromArray(array $data): array
18
    {
19 1
        $addresses = [];
20 1
        foreach ($data as $address) {
21 1
            $addresses[] = $this->buildFromArray($address);
22
        }
23
24 1
        return $addresses;
25
    }
26
27 1
    private function buildFromArray($data): Address
28
    {
29 1
        return new Address(
30 1
            $this->extractStringOrNull('type', $data),
31 1
            $this->extractStringOrNull('bagId', $data),
32 1
            $this->extractStringOrNull('street', $data),
33 1
            $this->extractStringOrNull('houseNumber', $data),
34 1
            $this->extractStringOrNull('houseNumberAddition', $data),
35 1
            $this->extractStringOrNull('postalCode', $data),
36 1
            $this->extractStringOrNull('city', $data),
37 1
            $this->extractStringOrNull('country', $data),
38 1
            $this->extractGpsCoordinates($data),
39 1
            $this->extractRijksDriehoek($data)
40
        );
41
    }
42
43 1
    private function extractGpsCoordinates(array $data): ?GpsCoordinates
44
    {
45 1
        if (array_key_exists('gpsLatitude', $data) && array_key_exists('gpsLongitude', $data)) {
46 1
            return new GpsCoordinates(
47 1
                $this->extractFloatOrNull('gpsLatitude', $data),
48 1
                $this->extractFloatOrNull('gpsLongitude', $data)
49
            );
50
        }
51
52
        return null;
53
    }
54
55 1
    private function extractRijksDriehoek(array $data): ?RijksDriehoek
56
    {
57
        if (
58 1
            array_key_exists('rijksdriehoekX', $data) &&
59 1
            array_key_exists('rijksdriehoekY', $data) &&
60 1
            array_key_exists('rijksdriehoekZ', $data)
61
        ) {
62 1
            return new RijksDriehoek(
63 1
                $this->extractFloatOrNull('rijksdriehoekX', $data),
64 1
                $this->extractFloatOrNull('rijksdriehoekY', $data),
65 1
                $this->extractFloatOrNull('rijksdriehoekZ', $data)
66
            );
67
        }
68
69
        return null;
70
    }
71
}
72