WebinarApi::removeSubscriber()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 3
c 0
b 0
f 0
dl 0
loc 7
ccs 4
cts 4
cp 1
rs 10
cc 1
nc 1
nop 2
crap 1
1
<?php
2
3
4
namespace slavkluev\Bizon365\Api;
5
6
use GuzzleHttp\Exception\ClientException;
7
use slavkluev\Bizon365\Helpers\UrlHelper;
8
9
class WebinarApi extends AbstractApi
10
{
11
    const METHODS = [
12
        'get'               => 'webinars/reports/get',
13
        'get.list'          => 'webinars/reports/getlist',
14
        'get.viewers'       => 'webinars/reports/getviewers',
15
        'get.subpages'      => 'webinars/subpages/getSubpages',
16
        'get.subscribers'   => 'webinars/subpages/getSubscribers',
17
        'add.subscriber'    => 'webinars/subpages/addSubscriber',
18
        'remove.subscriber' => 'webinars/subpages/removeSubscriber',
19
    ];
20
21
    /**
22
     * Получение списка доступных отчетов.
23
     *
24
     * @see https://blog.bizon365.ru/api/v1/webinars/reports/
25
     *
26
     * @param int|null  $skip         Пропустить указанное число записей.
27
     * @param int|null  $limit        Ограничить количество записей. Не более 100.
28
     * @param bool|null $liveWebinars Искать среди живых вебинаров.
29
     * @param bool|null $autoWebinars Искать среди автовебинаров.
30
     *
31
     * @return mixed
32
     *
33
     * @throws ClientException
34
     */
35 3
    public function getList(
36
        ?int $skip = null,
37
        ?int $limit = null,
38
        ?bool $liveWebinars = null,
39
        ?bool $autoWebinars = null
40
    ) {
41 3
        $url = UrlHelper::build(self::METHODS['get.list'], [
42 3
            'skip'         => $skip,
43 3
            'limit'        => $limit,
44 3
            'LiveWebinars' => $liveWebinars,
45 3
            'AutoWebinars' => $autoWebinars,
46
        ]);
47 3
        return $this->get($url);
48
    }
49
50
    /**
51
     * Получение конкретного отчета.
52
     *
53
     * @see https://blog.bizon365.ru/api/v1/webinars/reports/
54
     *
55
     * @param string $webinarId Идентификатор вебинара.
56
     *
57
     * @return mixed
58
     *
59
     * @throws ClientException
60
     */
61 3
    public function getWebinar(string $webinarId)
62
    {
63 3
        $url = UrlHelper::build(self::METHODS['get'], [
64 3
            'webinarId' => $webinarId,
65
        ]);
66 3
        return $this->get($url);
67
    }
68
69
    /**
70
     * Получение списка зрителей вебинара.
71
     *
72
     * @see https://blog.bizon365.ru/api/v1/webinars/reports/
73
     *
74
     * @param string   $webinarId Идентификатор вебинара.
75
     * @param int|null $skip      Пропустить указанное число записей.
76
     * @param int|null $limit     Ограничить количество записей. Не более 1000.
77
     *
78
     * @return mixed
79
     *
80
     * @throws ClientException
81
     */
82 3
    public function getViewers(
83
        string $webinarId,
84
        ?int $skip = null,
85
        ?int $limit = null
86
    ) {
87 3
        $url = UrlHelper::build(self::METHODS['get.viewers'], [
88 3
            'webinarId' => $webinarId,
89 3
            'skip'      => $skip,
90 3
            'limit'     => $limit,
91
        ]);
92 3
        return $this->get($url);
93
    }
94
95
    /**
96
     * Получение списка страниц регистрации и их рассылок.
97
     *
98
     * @see https://blog.bizon365.ru/api/v1/webinars/subpages/
99
     *
100
     * @param int|null $skip  Пропустить указанное число записей.
101
     * @param int|null $limit Ограничить количество записей.
102
     *
103
     * @return mixed
104
     *
105
     * @throws ClientException
106
     */
107 3
    public function getSubpages(
108
        ?int $skip = null,
109
        ?int $limit = null
110
    ) {
111 3
        $url = UrlHelper::build(self::METHODS['get.subpages'], [
112 3
            'skip'  => $skip,
113 3
            'limit' => $limit,
114
        ]);
115 3
        return $this->get($url);
116
    }
117
118
    /**
119
     * Получение списка подписчиков в заданной странице регистрации.
120
     *
121
     * @see https://blog.bizon365.ru/api/v1/webinars/subpages/
122
     *
123
     * @param string      $pageId            Идентификатор страницы регистрации.
124
     * @param int|null    $skip              Пропустить указанное число записей.
125
     * @param int|null    $limit             Ограничить количество записей.
126
     * @param string|null $registeredTimeMin Нижняя граница для времени регистрации подписчика. Задается в формате ISO.
127
     * @param string|null $registeredTimeMax Верхняя граница для времени регистрации подписчика. Задается в формате ISO.
128
     * @param string|null $webinarTimeMin    Нижняя граница для времени сеанса. Задается в формате ISO.
129
     * @param string|null $webinarTimeMax    Верхняя граница для времени сеанса. Задается в формате ISO.
130
     * @param string|null $urlMarker         Значение Маркера из URL, идентификатор партнера.
131
     *
132
     * @return mixed
133
     *
134
     * @throws ClientException
135
     */
136 3
    public function getSubscribers(
137
        string $pageId,
138
        ?int $skip = null,
139
        ?int $limit = null,
140
        ?string $registeredTimeMin = null,
141
        ?string $registeredTimeMax = null,
142
        ?string $webinarTimeMin = null,
143
        ?string $webinarTimeMax = null,
144
        ?string $urlMarker = null
145
    ) {
146 3
        $url = UrlHelper::build(self::METHODS['get.subscribers'], [
147 3
            'pageId'            => $pageId,
148 3
            'skip'              => $skip,
149 3
            'limit'             => $limit,
150 3
            'registeredTimeMin' => $registeredTimeMin,
151 3
            'registeredTimeMax' => $registeredTimeMax,
152 3
            'webinarTimeMin'    => $webinarTimeMin,
153 3
            'webinarTimeMax'    => $webinarTimeMax,
154 3
            'urlMarker'         => $urlMarker,
155
        ]);
156 3
        return $this->get($url);
157
    }
158
159
    /**
160
     * Добавление подписчика в базу, регистрируя его на конкретный сеанс вебинара.
161
     *
162
     * @see https://blog.bizon365.ru/api/v1/webinars/subpages/
163
     *
164
     * @param array $subscriber Массив с требуемыми параметрами.
165
     *  $subscriber = [
166
     *      'pageId'     => (string) Идентификатор страницы регистрации в Бизоне. Обязательное.
167
     *      'email'      => (string) Электронная почта подписчика. Обязательное.
168
     *      'phone'      => (string) Номер телефона.
169
     *      'time'       => (string) Выбранное время сеанса. Формат: ISO. Обязательное.
170
     *      'username'   => (string) Имя подписчика.
171
     *      'confirm'    => (int)    Если параметр = 1, то подписчик добавляется в режиме "с подтверждением e-mail".
172
     *      'url_marker' => (string) Значение "Марке из URL"..
173
     *      'utm_*'      => (string) Поддерживаются utm-метки.
174
     *  ]
175
     *
176
     * @return mixed
177
     *
178
     * @throws ClientException
179
     */
180 3
    public function addSubscriber(array $subscriber)
181
    {
182 3
        return $this->post(self::METHODS['add.subscriber'], $subscriber);
183
    }
184
185
    /**
186
     * Удаление подписчика со страницы регистрации.
187
     *
188
     * @see https://blog.bizon365.ru/api/v1/webinars/subpages/
189
     *
190
     * @param string $pageId Идентификатор страницы регистрации в Бизоне.
191
     * @param string $email  Электронная почта подписчика.
192
     *
193
     * @return mixed
194
     *
195
     * @throws ClientException
196
     */
197 3
    public function removeSubscriber(
198
        string $pageId,
199
        string $email
200
    ) {
201 3
        return $this->post(self::METHODS['remove.subscriber'], [
202 3
            'pageId' => $pageId,
203 3
            'email'  => $email,
204
        ]);
205
    }
206
}
207