Recipient::lastName()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 5
ccs 0
cts 4
cp 0
crap 2
rs 10
c 1
b 0
f 0
1
<?php
2
3
/**
4
 * This file is part of RussianPost SDK package.
5
 *
6
 * © Appwilio (http://appwilio.com), greabock (https://github.com/greabock), JhaoDa (https://github.com/jhaoda)
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
14
namespace Appwilio\RussianPostSDK\Dispatching\Endpoints\Orders\Entites;
15
16
use Appwilio\RussianPostSDK\Core\Arrayable;
17
use Appwilio\RussianPostSDK\Dispatching\Instantiator;
18
use Appwilio\RussianPostSDK\Dispatching\Endpoints\Services\Entities\NormalizedFio;
19
20
final class Recipient implements Arrayable
21
{
22
    private $data = [];
23
24
    public static function fromNormalizedFio(NormalizedFio $normalizedFio)
25
    {
26
        return Instantiator::instantiate(self::class, [
27
            'surname'     => $normalizedFio->getLastName(),
28
            'given-name'  => $normalizedFio->getFirstName(),
29
            'middle-name' => $normalizedFio->getMiddleName(),
30
        ]);
31
    }
32
33
    public static function create(?string $fullName = null): self
34
    {
35
        return new self($fullName);
36
    }
37
38
    public function __construct(?string $fullName = null)
39
    {
40
        if ($fullName) {
41
            $this->data['recipient-name'] = $fullName;
42
        }
43
    }
44
45
    public function firstName(string $firstName)
46
    {
47
        $this->data['given-name'] = $firstName;
48
49
        return $this;
50
    }
51
52
    public function middleName(?string $middleName)
53
    {
54
        $this->data['middle-name'] = $middleName;
55
56
        return $this;
57
    }
58
59
    public function lastName(string $lastName)
60
    {
61
        $this->data['surname'] = $lastName;
62
63
        return $this;
64
    }
65
66
    public function phoneNumber(string $phoneNumber)
67
    {
68
        $this->data['tel-address'] = $phoneNumber;
69
70
        return $this;
71
    }
72
73
    public function toArray(): array
74
    {
75
        if (empty($this->data['recipient-name'])) {
76
            $fullName = \trim(\implode(' ', [
77
                $this->data['surname'],
78
                $this->data['given-name'],
79
                $this->data['middle-name'],
80
            ]));
81
82
            if ($fullName) {
83
                $this->data['recipient-name'] = $fullName;
84
            }
85
        }
86
87
        return $this->data;
88
    }
89
}
90