Passed
Pull Request — master (#359)
by Alejandro
05:46
created

VisitLocation::exchangeArray()   B

Complexity

Conditions 8
Paths 128

Size

Total Lines 22
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 9.214

Importance

Changes 0
Metric Value
cc 8
eloc 14
nc 128
nop 1
dl 0
loc 22
ccs 11
cts 15
cp 0.7332
crap 9.214
rs 8.2111
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A VisitLocation::jsonSerialize() 0 10 1
1
<?php
2
declare(strict_types=1);
3
4
namespace Shlinkio\Shlink\Core\Entity;
5
6
use Shlinkio\Shlink\Common\Entity\AbstractEntity;
7
use Shlinkio\Shlink\Common\IpGeolocation\Model\Location;
8
use Shlinkio\Shlink\Core\Visit\Model\VisitLocationInterface;
9
10
class VisitLocation extends AbstractEntity implements VisitLocationInterface
11
{
12
    /** @var string */
13
    private $countryCode;
14
    /** @var string */
15
    private $countryName;
16
    /** @var string */
17
    private $regionName;
18
    /** @var string */
19
    private $cityName;
20
    /** @var string */
21
    private $latitude;
22
    /** @var string */
23
    private $longitude;
24
    /** @var string */
25
    private $timezone;
26
27 8
    public function __construct(Location $location)
28
    {
29 8
        $this->exchangeLocationInfo($location);
30
    }
31
32 2
    public function getCountryName(): string
33
    {
34 2
        return $this->countryName ?? '';
35
    }
36
37 1
    public function getLatitude(): string
38
    {
39 1
        return $this->latitude ?? '';
40
    }
41
42 1
    public function getLongitude(): string
43
    {
44 1
        return $this->longitude ?? '';
45
    }
46
47
    public function getCityName(): string
48
    {
49
        return $this->cityName ?? '';
50
    }
51
52 8
    private function exchangeLocationInfo(Location $info): void
53
    {
54 8
        $this->countryCode = $info->countryCode();
55 8
        $this->countryName = $info->countryName();
56 8
        $this->regionName = $info->regionName();
57 8
        $this->cityName = $info->city();
58 8
        $this->latitude = (string) $info->latitude();
59 8
        $this->longitude = (string) $info->longitude();
60 8
        $this->timezone = $info->timeZone();
61
    }
62
63
    public function jsonSerialize(): array
64
    {
65
        return [
66
            'countryCode' => $this->countryCode,
67
            'countryName' => $this->countryName,
68
            'regionName' => $this->regionName,
69
            'cityName' => $this->cityName,
70
            'latitude' => $this->latitude,
71
            'longitude' => $this->longitude,
72
            'timezone' => $this->timezone,
73
        ];
74
    }
75
}
76