ContactPerson::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace SergeyNezbritskiy\NovaPoshta\Models;
6
7
use SergeyNezbritskiy\NovaPoshta\Connection;
8
use SergeyNezbritskiy\NovaPoshta\ModelInterface;
9
use SergeyNezbritskiy\NovaPoshta\NovaPoshtaApiException;
10
11
class ContactPerson implements ModelInterface
12
{
13
    private const MODEL_NAME = 'ContactPerson';
14
    private const CONTACT_PERSON_NOT_FOUND_CODE = 20000400480;
15
16
    private Connection $connection;
17
18
    /**
19
     * @param Connection $connection
20
     */
21
    public function __construct(Connection $connection)
22
    {
23
        $this->connection = $connection;
24
    }
25
26
    /**
27
     * @see https://developers.novaposhta.ua/view/model/a39040c4-8512-11ec-8ced-005056b2dbe1/method/a3a25bda-8512-11ec-8ced-005056b2dbe1
28
     * @param string $ref
29
     * @param array $counterparty
30
     * @return array
31
     * @throws NovaPoshtaApiException
32
     */
33
    public function save(string $ref, array $counterparty): array
34
    {
35
        $params = [
36
            'CounterpartyRef' => $ref,
37
            'FirstName' => $counterparty['FirstName'],
38
            'MiddleName' => $counterparty['MiddleName'],
39
            'LastName' => $counterparty['LastName'],
40
            'Phone' => $counterparty['Phone'],
41
            'Email' => $counterparty['Email'],
42
        ];
43
        $result = $this->connection->post(self::MODEL_NAME, 'save', $params);
44
        return array_shift($result);
45
    }
46
47
    /**
48
     * @see https://developers.novaposhta.ua/view/model/a39040c4-8512-11ec-8ced-005056b2dbe1/method/a3c5a577-8512-11ec-8ced-005056b2dbe1
49
     * @param string $ref
50
     * @param array $counterparty
51
     * @return array
52
     * @throws NovaPoshtaApiException
53
     */
54
    public function update(string $ref, array $counterparty): array
55
    {
56
        $params = [
57
            'CounterpartyRef' => $ref,
58
            'Ref' => $counterparty['Ref'],
59
            'FirstName' => $counterparty['FirstName'],
60
            'MiddleName' => $counterparty['MiddleName'],
61
            'LastName' => $counterparty['LastName'],
62
            'Phone' => $counterparty['Phone'],
63
            'Email' => $counterparty['Email'],
64
        ];
65
        $result = $this->connection->post(self::MODEL_NAME, 'update', $params);
66
        return array_shift($result);
67
    }
68
69
    /**
70
     * @see https://developers.novaposhta.ua/view/model/a39040c4-8512-11ec-8ced-005056b2dbe1/method/a3ea91c8-8512-11ec-8ced-005056b2dbe1
71
     * @param string $ref
72
     * @return void
73
     * @throws NovaPoshtaApiException
74
     */
75
    public function delete(string $ref): void
76
    {
77
        try {
78
            $this->connection->post(self::MODEL_NAME, 'delete', ['Ref' => $ref]);
79
        } catch (NovaPoshtaApiException $e) {
80
            if ($e->getCode() !== self::CONTACT_PERSON_NOT_FOUND_CODE) {
81
                // @codeCoverageIgnoreStart
82
                throw $e;
83
                // @codeCoverageIgnoreEnd
84
            }
85
        }
86
    }
87
}
88