Completed
Push — master ( 5ef40e...635f45 )
by dotzero
02:05
created

Links::apiUnlink()   B

Complexity

Conditions 4
Paths 8

Size

Total Lines 24
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 13
CRAP Score 4.0058

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 24
ccs 13
cts 14
cp 0.9286
rs 8.6845
cc 4
eloc 12
nc 8
nop 1
crap 4.0058
1
<?php
2
3
namespace AmoCRM\Models;
4
5
/**
6
 * Class Links
7
 *
8
 * Класс модель для работы со Связями между сущностями
9
 *
10
 * @package AmoCRM\Models
11
 * @author [email protected]
12
 * @author dotzero <[email protected]>
13
 * @link https://github.com/dotzero/amocrm-php
14
 *
15
 * For the full copyright and license information, please view the LICENSE
16
 * file that was distributed with this source code.
17
 */
18
class Links extends AbstractModel
19
{
20
    /**
21
     * @var array Список доступный полей для модели (исключая кастомные поля)
22
     */
23
    protected $fields = [
24
        'from',
25
        'from_id',
26
        'to',
27
        'to_id',
28
        'from_catalog_id',
29
        'to_catalog_id',
30
        'quantity',
31
    ];
32
33
    /**
34
     * Связи между сущностями
35
     *
36
     * Метод для получения связей между сущностями аккаунта
37
     *
38
     * @link https://developers.amocrm.ru/rest_api/links/list.php
39
     * @param array $parameters Массив параметров к amoCRM API
40
     * @return array Ответ amoCRM API
41
     */
42 1
    public function apiList($parameters)
43
    {
44 1
        if (!isset($parameters['links'])) {
45
            $parameters = [
46
                'links' => [
47
                    $parameters
48 1
                ]
49 1
            ];
50 1
        }
51
52 1
        $response = $this->getRequest('/private/api/v2/json/links/list', $parameters);
53
54 1
        return isset($response['links']) ? $response['links'] : [];
55
    }
56
57
    /**
58
     * Установка связи между сущностями
59
     *
60
     * Метод позволяет устанавливать связи между сущностями
61
     *
62
     * @link https://developers.amocrm.ru/rest_api/links/set.php
63
     * @param array $links Массив связей для пакетного добавления
64
     * @return bool Флаг успешности выполнения запроса
65
     */
66 1
    public function apiLink($links = [])
67
    {
68 1
        if (empty($links)) {
69 1
            $links = [$this];
70 1
        }
71
72
        $parameters = [
73
            'links' => [
74 1
                'link' => [],
75 1
            ],
76 1
        ];
77
78 1
        foreach ($links AS $link) {
79 1
            $parameters['links']['link'][] = $link->getValues();
80 1
        }
81
82 1
        $response = $this->postRequest('/private/api/v2/json/links/set', $parameters);
83
84 1
        if (!isset($response['links']['link']['errors'])) {
85
            return false;
86
        }
87
88 1
        return empty($response['links']['link']['errors']);
89
    }
90
91
    /**
92
     * Разрыв связи между сущностями
93
     *
94
     * Метод позволяет удалять связи между сущностями
95
     *
96
     * @link https://developers.amocrm.ru/rest_api/links/set.php
97
     * @param array $links Массив связей для пакетного удаления
98
     * @return bool Флаг успешности выполнения запроса
99
     */
100 1
    public function apiUnlink($links = [])
101
    {
102 1
        if (empty($links)) {
103 1
            $links = [$this];
104 1
        }
105
106
        $parameters = [
107
            'links' => [
108 1
                'unlink' => [],
109 1
            ],
110 1
        ];
111
112 1
        foreach ($links AS $link) {
113 1
            $parameters['links']['unlink'][] = $link->getValues();
114 1
        }
115
116 1
        $response = $this->postRequest('/private/api/v2/json/links/set', $parameters);
117
118 1
        if (!isset($response['links']['unlink']['errors'])) {
119
            return false;
120
        }
121
122 1
        return empty($response['links']['unlink']['errors']);
123
    }
124
}
125