# Методы person
# person.update()
### Обновить персону
```JavaScript
person.update($data)
```
##### Описание:
Обновляет данные персоны в соответствии с БД.
##### Атрибуты:
Имя | Тип | Описание |
data
| json | Данные о персоне в формате json. Возможные поля расписаны ниже |
person\_role\_id
| integer | Id персоны |
is\_external
| bool | Если не устанавливать по умолчанию будет установлено 1, означающее что персона является клиентом.
А 0 означает что персона является работником бизнеса
|
user\_id
| integer | Id пользователя, привязываемого к персоне |
firstname
| string|null | Имя персоны |
lastname
| string|null | Фамилия персоны |
middlename
| string|null | Отчество персоны |
email
| string|null | Адрес электронной почты персоны |
phone
| string|null | Номер телефона персоны |
organization\_name
| string|null | Название организации |
organization\_address
| string|null | Адрес организации |
comment
| string|null | Комментарий к персоне |
##### Возвращает:
**bool** - подтверждение обновления данных.
##### Пример:
```JavaScript
person.update({
'is_external': 1,
'firstname': 'Иван',
'lastname': 'Иванов'
});
```
# person.delete()
### Удалить персону
```JavaScript
person.delete()
```
##### Описание:
Удаляет персону лида.
##### Возвращает:
**bool** - подтверждение удаления персоны.
# person.getAllData()
### Получить все поля персоны
```JavaScript
person.getAllData()
```
##### Описание:
Возвращает значения всех полей персоны лида в виде массива.
Возвращает:
**array** - массив всех значений полей персоны:
- **id** - id персоны;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **person\_role\_id** - id роли;
- **is\_external** - значение поля **Сотрудник/Клиент**;
- **user\_id** - id пользователя;
- **firstname** - имя;
- **lastname** - фамилия;
- **middlename** - отчество;
- **email** - адрес электронной почты;
- **phone** - номер телефона;
- **organization\_name** - название организации;
- **organization\_address** - адрес организации;
- **comment** - комментарий;
- **created\_at** - дата создания;
- **updated\_at** - дата последнего редактирования;
- **deleted\_at** - дата удаления;
- все системные поля персоны (по английски).
##### Пример:
```JavaScript
let AllData = person.getAllData();
let Data2 = AllData[1];
```
# person.setData()
### Установить поле персоны
```JavaScript
person.setData(string $key, $value)
```
##### Описание:
Заполняет указанное поле персоны лида указанным значением.
##### Атрибуты:
Имя | Тип | Описание |
key
| string | Ключ наименование поля |
value
| mixed | Значение вводимое в поле |
В качестве ключа можно указать:
- **id** - id персоны;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **person\_role\_id** - id роли;
- **is\_external** - значение поля **Сотрудник/Клиент**;
- **user\_id** - id пользователя;
- **firstname** - имя;
- **lastname** - фамилия;
- **middlename** - отчество;
- **email** - адрес электронной почты;
- **phone** - номер телефона;
- **organization\_name** - название организации;
- **organization\_address** - адрес организации;
- **comment** - комментарий;
- **created\_at** - дата создания;
- **updated\_at** - дата последнего редактирования;
- **deleted\_at** - дата удаления;
- все системные поля персоны (по английски).
##### Возвращает:
**self** - значение отредактированного поля в соответствующем формате.
##### Пример:
```JavaScript
person.setData('email', 'user@mail.ru');
```
# person.getData()
### Получить значение данных персоны
```JavaScript
person.getData(string $key)
```
##### Описание:
Возвращает значение данных персоны по ключу или названию поля БД.
##### Атрибуты:
Имя | Тип | Описание |
key
| string | Ключ наименование поля |
В качестве ключа можно указать:
- **id** - id персоны;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **person\_role\_id** - id роли;
- **is\_external** - значение поля **Сотрудник/Клиент**;
- **user\_id** - id пользователя;
- **firstname** - имя;
- **lastname** - фамилия;
- **middlename** - отчество;
- **email** - адрес электронной почты;
- **phone** - номер телефона;
- **organization\_name** - название организации;
- **organization\_address** - адрес организации;
- **comment** - комментарий;
- **created\_at** - дата создания;
- **updated\_at** - дата последнего редактирования;
- **deleted\_at** - дата удаления;
- все системные поля персоны (по английски).
##### Возвращает:
**self** - значение запрашиваемого поля в соответствующем формате.
##### Пример:
```JavaScript
let createdAt = person.getData('created_at');
```
# person.issetData() и person.isDataExist()
### Проверить наличие данных по персоне
```JavaScript
person.issetData(string $key)
```
или
```
person.isDataExist(string $key)
```
##### Описание:
Проверяет существование данных персоны лида.
##### Атрибуты:
Имя | Тип | Описание |
key
| string | Ключ наименование поля |
В качестве ключа можно указать:
- **id** - id персоны;
- **business\_id** - id бизнеса;
- **bot\_id** - id бота;
- **person\_role\_id** - id роли;
- **is\_external** - значение поля **Сотрудник/Клиент**;
- **user\_id** - id пользователя;
- **firstname** - имя;
- **lastname** - фамилия;
- **middlename** - отчество;
- **email** - адрес электронной почты;
- **phone** - номер телефона;
- **comment** - комментарий;
- **created\_at** - дата создания;
- **updated\_at** - дата последнего редактирования;
- **deleted\_at** - дата удаления;
- все системные поля персоны (по английски).
##### Возвращает:
**bool** - подтверждение существования данных.
##### Пример:
```JavaScript
let DataExist = person.issetData('phone');
```
или
```JavaScript
let DataExist = person.isDataExist('phone');
```
# person.getId()
### Получить ID персоны
```JavaScript
person.getId()
```
##### Описание:
Возвращает id персоны привязанной к лиду.
##### Возвращает:
**int** - id персоны в формате числа.
##### Пример:
```JavaScript
let PersonId = person.getId();
lead.setAttr('PersonId', PersonId);
```
# person.getFullName()
### Получить полное имя персоны
```JavaScript
person.getFullName()
```
##### Описание:
Возвращает полное имя персоны лида в виде **Фамилия + Имя + Отчество**.
##### Возвращает:
**string** - полное имя персоны.
##### Пример:
```JavaScript
let PersonName = person.getFullName();
lead.setAttr('PersonName', PersonName);
```
# person.getRoleId()
### Получить ID роли персоны
```JavaScript
person.getRoleId()
```
##### Описание:
Возвращает id роли привязанной к персоне лида.
##### Возвращает:
**int** - id роли персоны в формате числа.
##### Пример:
```JavaScript
let RoleId = person.getRoleId();
lead.setAttr('RoleId', RoleId);
```
# person.getRoleName()
### Получить название роли персоны
```JavaScript
person.getRoleName()
```
##### Описание:
Возвращает название роли привязанной к персоне лида.
##### Возвращает:
**string** - название роли персоны.
##### Пример:
```JavaScript
let RoleName = person.getRoleName();
lead.setAttr('RoleName', RoleName);
```
# person.getRoleTitle()
### Получить заголовок роли персоны
```JavaScript
person.getRoleTitle()
```
##### Описание:
Возвращает заголовок роли привязанной к персоне лида.
##### Возвращает:
**string** - заголовок роли персоны.
##### Пример:
```JavaScript
let RoleTitle = person.getRoleTitle();
lead.setAttr('RoleTitle', RoleTitle);
```
# person.getRoleFormattedTitle()
### Получить форматированное название роли персоны
```JavaScript
person.getRoleFormattedTitle()
```
##### Описание:
Возвращает форматированное название роли персоны лида.
Будет возвращено:
- Заголовок роли, если он указан, иначе
- Имя роли, если оно указано, иначе
- ID роли.
##### Возвращает:
**string** - форматированное название роли персоны.
##### Пример:
```JavaScript
let FormattedTitle = person.getRoleFormattedTitle();
lead.setAttr('FormattedTitle', FormattedTitle);
```
# person.getPhone()
### Получить номер телефона персоны
```JavaScript
person.getPhone()
```
##### Описание:
Находит номер телефона персоны лида.
##### Возвращает:
**string** - номер телефона персоны в формате строки.
# person.setPhone()
### Установить номер телефона персоны
```JavaScript
person.setPhone(?string $phone)
```
##### Описание:
Устанавливает значение номера телефона персоны лида.
##### Атрибуты:
Имя | Тип | Описание |
phone
| string | Номер телефона |
##### Возвращает:
**bool** - подтверждение установки значения.
##### Пример:
```JavaScript
person.setPhone('+71234567890');
```
# person.getEmail()
### Получить почту персоны
```JavaScript
person.getEmail()
```
##### Описание:
Находит адрес электронной почты персоны лида.
##### Возвращает:
**string** - адрес электронной почты персоны в формате строки.
# person.addToQueue()
### Добавление персоны в очередь
```JavaScript
person.addToQueue(?int $personQueueId = null, ?string $personQueueTable = null, ?int $ticketTypeId = null, bool $isActive = true, int $rejectsCount = 0)
```
##### Описание:
Добавляет персону в указанную очередь.
##### Атрибуты:
Имя | Тип | Описание |
personQueueId | int | ID вида очереди, в которую будет добавлена персона
|
personQueueTable | string | Наименование кастомной таблицы
|
ticketTypeId | int | ID вида заявки, в очередь которой будет добавлена персона
|
isActive | bool | Активность персоны в очереди
|
rejectsCount | int | Количество отказов от заявки
|
Одновременно в методе может быть указан либо только вид заявки, либо только вид очереди (одна из этих переменных должна содержать значение null). Так же по видам заявок не должна допускаться установка значения кастомной таблицы
##### Возвращает:
**int** - id добавленной персоны.
##### Пример:
```JavaScript
person.addToQueue(null, null, 2541);
```
# person.removeFromQueue()
### Удаление персоны из очереди
```JavaScript
person.removeFromQueue(?int $personQueueId = null, ?string $personQueueTable = null, ?int $ticketTypeId = null)
```
##### Описание:
Удаляет персону из указанной очереди.
##### Атрибуты:
Имя | Тип | Описание |
personQueueId | int | ID вида очереди
|
personQueueTable | string | Наименование кастомной таблицы
|
ticketTypeId | int | ID вида заявки
|
Одновременно в методе может быть указан либо только вид заявки, либо только вид очереди (одна из этих переменных должна содержать значение null)
##### Возвращает:
**bool** - подтверждение удаления персоны.
##### Пример:
```JavaScript
person.removeFromQueue(3527, "table");
```
# person.moveToEndOfQueue()
### Перемещение персоны в конец очереди
```JavaScript
person.moveToEndOfQueue(int $queueMode = 1, ?int $personQueueId = null, ?string $personQueueTable = null, ?int $ticketTypeId = null, bool $isResetRejectsCount = true)
```
##### Описание:
Перемещает персону в конец указанной очереди, либо в конец нескольких очередей.
##### Атрибуты:
Имя | Тип | Описание |
queueMode | int | Режим работы очереди.
Для работы с очередью на основе видов заявок указывать не нужно, будет использовано значение по умолчанию **1**;
Для работы с очередью на основе видов очередей указать **2**
|
personQueueId | ?int | id очереди |
personQueueTable | ?string | Название таблицы-связки для очередей |
ticketTypeIds
| int|array|object|null | **$ticketTypeIds = null**, то персона будет перемещена в конец очереди по всем типам заявок;
**$ticketTypeIds = число**, то персона будет перемещена в конец очереди по указанному типу заявки;
**$ticketTypeIds = строка** **с перечислениями** типов заявок через запятую, то персона будет перемещена в конец очереди по указанным типам заявок (например 1,2,3);
**$ticketTypeIds = строка без перечислений** через запятую, ticketTypeIds будет приведен к типу = число и персона будет перемещена в конец очереди по указанному типу заявки;
**$ticketTypeIds = json массив**, то персона будет перемещена в конец очереди по всем типам заявок (например \[1,2,3\]) |
isResetRejectsCount
| bool | Обнулить количество отказов персоны |
##### Возвращает:
**bool** - подтверждение удачного перемещения персоны.
##### Пример:
```JavaScript
person.moveToEndOfQueue(2, 3352, null, [1013]);
persons.moveToEndOfQueue();
```
# person.setIsActiveInQueue()
### Активация/деактивация персоны в очереди
```JavaScript
person.setIsActiveInQueue(bool $isActive = true)
```
##### Описание:
Включает или выключает параметр **Активна** персоны в очереди.
##### Атрибуты:
Имя | Тип | Описание |
isActive
| bool | Активировать или деактивировать персону в очереди |
##### Возвращает:
**bool** - подтверждение активации или деактивации.
##### Пример:
```
persons.setIsActiveInQueue(true);
```