Skip to content

Commit 8c70d65

Browse files
authored
Merge pull request #519 from Ilyumzhinov/feature/INT-2524
Добавил CustomFieldsFilter для фильтрации полей по типам.
2 parents d68301f + b566d5b commit 8c70d65

File tree

3 files changed

+71
-2
lines changed

3 files changed

+71
-2
lines changed

README.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
- [Подход к работе с библиотекой](#подход-к-работе-с-библиотекой)
1616
- [Поддерживаемые методы и сервисы](#поддерживаемые-методы-и-сервисы)
1717
- [Обработка ошибок](#обработка-ошибок)
18-
- [Фильтры](#Фильтры)
18+
- [Фильтры](#фильтры)
1919
- [Работа с Custom Fields сущностей](#работа-с-дополнительными-полями-сущностей)
2020
- [Работа с тегами сущностей](#работа-с-тегами-сущностей)
2121
- [Особенности работы с источниками](#особенности-работы-с-источниками)
2222
- [Константы](#константы)
23-
- [Работа в случае смены субдомена аккаунта](#Работа-в-случае-смены-субдомена-аккаунта)
23+
- [Работа в случае смены субдомена аккаунта](#работа-в-случае-смены-субдомена-аккаунта)
2424
- [Одноразовые токены интеграций, расшифровка](#одноразовые-токены-интеграций-расшифровка)
2525
- [Работа с валютами](#работа-с-валютами)
2626
- [Примеры](#примеры)
@@ -539,6 +539,7 @@ $leadsService = $apiClient->leads();
539539
| ```companies``` | ```\AmoCRM\Filters\CompaniesFilter``` | Доступен только на аккаунтах, которые подключены к тестированию функционала фильтрации по API | ✅ |
540540
| ```contacts``` | ```\AmoCRM\Filters\ContactsFilter``` | Доступен только на аккаунтах, которые подключены к тестированию функционала фильтрации по API | ✅ |
541541
| ```customers``` | ```\AmoCRM\Filters\CustomersFilter``` | Доступен только на аккаунтах, которые подключены к тестированию функционала фильтрации по API | ✅ |
542+
| ```customFields``` | ```\AmoCRM\Filters\CustomFieldsFilter``` | Фильтр для метода получения дополнительных полей `\AmoCRM\EntitiesServices\CustomFields::get` | ❌ |
542543
| ```leads``` | ```\AmoCRM\Filters\LeadsFilter``` | Доступен только на аккаунтах, которые подключены к тестированию функционала фильтрации по API | ✅ |
543544
| ```events``` | ```\AmoCRM\Filters\EventsFilter``` | Фильтр для списка событий | ❌ |
544545
| ```leads```, ```contacts```, ```customers```, ```companies``` | ```\AmoCRM\Filters\LinksFilter``` | Фильтр для получения связей для метода `\AmoCRM\EntitiesServices\HasLinkMethodInterface::getLinks` | ❌ |

examples/custom_fields_actions.php

+11
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
use AmoCRM\Helpers\EntityTypesInterface;
55
use AmoCRM\Collections\CustomFields\CustomFieldsCollection;
66
use AmoCRM\Exceptions\AmoCRMApiException;
7+
use AmoCRM\Filters\CustomFieldsFilter;
78
use AmoCRM\Models\CustomFields\CheckboxCustomFieldModel;
89
use AmoCRM\Models\CustomFields\CustomFieldModel;
910
use AmoCRM\Models\CustomFields\EnumModel;
@@ -47,6 +48,16 @@ function (AccessTokenInterface $accessToken, string $baseDomain) {
4748
die;
4849
}
4950

51+
//Получим поля по типу
52+
try {
53+
$filter = (new CustomFieldsFilter())
54+
->setTypes([CustomFieldModel::TYPE_TEXT, CustomFieldModel::TYPE_URL]); // или ['text', 'url']
55+
$result = $customFieldsService->get($filter);
56+
} catch (AmoCRMApiException $e) {
57+
printError($e);
58+
die;
59+
}
60+
5061
//Создадим модель поля и освежим его
5162
$customFieldModel = new CustomFieldModel();
5263
$customFieldModel->setId(269303);
+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php
2+
3+
namespace AmoCRM\Filters;
4+
5+
use AmoCRM\Filters\Interfaces\HasPagesInterface;
6+
use AmoCRM\Filters\Traits\ArrayOrStringFilterTrait;
7+
use AmoCRM\Filters\Traits\PagesFilterTrait;
8+
9+
/**
10+
* Supports pagination and filtering custom_fields by types.
11+
*/
12+
class CustomFieldsFilter extends BaseEntityFilter implements HasPagesInterface
13+
{
14+
use PagesFilterTrait;
15+
use ArrayOrStringFilterTrait;
16+
17+
/**
18+
* @var null|string[] An array of custom_field types.
19+
*/
20+
private ?array $types = null;
21+
22+
/**
23+
* @return string[]|null
24+
*/
25+
public function getTypes(): ?array
26+
{
27+
return $this->types;
28+
}
29+
30+
/**
31+
* Filters custom_fields by types.
32+
*
33+
* @param string[]|null $types Type are defined in `CustomFieldModel`.
34+
*/
35+
public function setTypes(?array $types): self
36+
{
37+
$this->types = $this->parseArrayOrStringFilter($types);
38+
39+
return $this;
40+
}
41+
42+
/**
43+
* @return array
44+
*/
45+
public function buildFilter(): array
46+
{
47+
$filter = [];
48+
49+
if (!empty($this->types)) {
50+
$filter['filter']['type'] = $this->types;
51+
}
52+
53+
$filter = $this->buildPagesFilter($filter);
54+
55+
return $filter;
56+
}
57+
}

0 commit comments

Comments
 (0)