Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v4-api. fixed apiList in Task and parseResponse method #106

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Models/Account.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public function apiCurrent($short = false, $parameters = [])
{
$result = $this->getRequest('/private/api/v2/json/accounts/current', $parameters);

return $short ? $this->getShorted($result['account']) : $result['account'];
return $short ? $this->getShorted($result['response']['account']) : $result['response']['account'];
}

/**
Expand Down
34 changes: 28 additions & 6 deletions src/Models/Lead.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@

namespace AmoCRM\Models;

use AmoCRM\Exception;
use AmoCRM\Models\Traits\SetNote;
use AmoCRM\Models\Traits\SetTags;
use AmoCRM\Models\Traits\SetDateCreate;
use AmoCRM\Models\Traits\SetLastModified;
use AmoCRM\NetworkException;

/**
* Class Lead
Expand Down Expand Up @@ -51,18 +53,38 @@ class Lead extends AbstractModel
* Метод для получения списка сделок с возможностью фильтрации и постраничной выборки.
* Ограничение по возвращаемым на одной странице (offset) данным - 500 сделок
*
* @link https://developers.amocrm.ru/rest_api/leads_list.php
* @link https://www.amocrm.ru/developers/content/crm_platform/leads-api#leads-list
* @param array $parameters Массив параметров к amoCRM API
* @param null|string $modified Дополнительная фильтрация по (изменено с)
* @return array Ответ amoCRM API
*/
public function apiList($parameters, $modified = null)

public function apiList($parameters, $url = '/api/v4/leads', $modified = null)
{
$response = $this->getRequest('/private/api/v2/json/leads/list', $parameters, $modified);

return isset($response['leads']) ? $response['leads'] : [];
$response = $this->getRequest($url, $parameters, $modified);
return isset($response['_embedded']['leads']) ? $response['_embedded']['leads'] : [];
}


/**
* Получение одной сделки
* Метод для получения одной сделки по id
* @link https://www.amocrm.ru/developers/content/crm_platform/leads-api#lead-detail
* @param $itemId
* @param string $url
* @param array $parameters
* @param null|string $modified Дополнительная фильтрация по (изменено с)
* @return array Ответ amoCRM API
* @throws Exception
* @throws NetworkException
*/
public function apiListItem($itemId, $url = '/api/v4/leads/', $parameters = [], $modified = null)
{
$response = $this->getRequest($url.$itemId, $parameters, $modified);

return $response ? : [];
}

/**
* Добавление сделки
*
Expand Down
97 changes: 61 additions & 36 deletions src/Models/Task.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

namespace AmoCRM\Models;

use AmoCRM\Exception;
use AmoCRM\Models\Traits\SetDateCreate;
use AmoCRM\Models\Traits\SetLastModified;
use AmoCRM\NetworkException;

/**
* Class Task
Expand All @@ -21,34 +23,38 @@
class Task extends AbstractModel
{
use SetDateCreate, SetLastModified;

/**
* @var array Список доступный полей для модели (исключая кастомные поля)
*/
protected $fields = [
'element_id',
'element_type',
'date_create',
'last_modified',
'status',
'request_id',
'task_type',
'text',
'created_by',
'updated_by',
'created_at',
'updated_at',
'responsible_user_id',
'group_id',
'entity_id',
'entity_type',
'duration',
'is_completed',
'task_type_id',
'text',
'result',
'complete_till',
'created_user_id',
'account_id'
];

/**
* @const int Типа задачи Контакт
*/
const TYPE_CONTACT = 1;

/**
* @const int Типа задачи Сделка
*/
const TYPE_LEAD = 2;

/**
* Сеттер для дата до которой необходимо завершить задачу
*
Expand All @@ -61,28 +67,47 @@ class Task extends AbstractModel
public function setCompleteTill($date)
{
$this->values['complete_till'] = strtotime($date);

return $this;
}

/**
* Список задач
*
* Метод для получения списка задач с возможностью фильтрации и постраничной выборки.
* Ограничение по возвращаемым на одной странице (offset) данным - 500 задач
*
* @link https://developers.amocrm.ru/rest_api/tasks_list.php
* @param array $parameters Массив параметров к amoCRM API
* @link https://www.amocrm.ru/developers/content/crm_platform/tasks-api#tasks-list
* @param array $parameters Массив параметров к amoCRM API
* @param string $url
* @param null|string $modified Дополнительная фильтрация по (изменено с)
* @return array Ответ amoCRM API
* @throws Exception
* @throws NetworkException
*/
public function apiList($parameters, $url = '/api/v4/tasks', $modified = null)
{
$response = $this->getRequest($url, $parameters, $modified);

return isset($response['_embedded']['tasks']) ? $response['_embedded']['tasks'] : [];
}

/**
* Получение одной задачи
* Метод для получения одной задачи по id
* @link https://www.amocrm.ru/developers/content/crm_platform/tasks-api#task-detail
* @param string $taskId идентификатор задачи
* @param string $url
* @param null|string $modified Дополнительная фильтрация по (изменено с)
* @return array Ответ amoCRM API
* @throws Exception
* @throws NetworkException
*/
public function apiList($parameters, $modified = null)
public function apiListItem($taskId, $url = '/api/v4/tasks/', $parameters = [], $modified = null)
{
$response = $this->getRequest('/private/api/v2/json/tasks/list', $parameters, $modified);

return isset($response['tasks']) ? $response['tasks'] : [];
$response = $this->getRequest($url.$taskId, $parameters, $modified);
return $response ? : [];
}

/**
* Добавление задачи
*
Expand All @@ -97,30 +122,30 @@ public function apiAdd($tasks = [])
if (empty($tasks)) {
$tasks = [$this];
}

$parameters = [
'tasks' => [
'add' => [],
],
];

foreach ($tasks AS $task) {
$parameters['tasks']['add'][] = $task->getValues();
}

$response = $this->postRequest('/private/api/v2/json/tasks/set', $parameters);

if (isset($response['tasks']['add'])) {
$result = array_map(function($item) {
return $item['id'];
}, $response['tasks']['add']);
} else {
return [];
}

return count($tasks) == 1 ? array_shift($result) : $result;
}

/**
* Обновление задачи
*
Expand All @@ -131,27 +156,27 @@ public function apiAdd($tasks = [])
* @param string $text Текст задачи
* @param string $modified Дата последнего изменения данной сущности
* @return bool Флаг успешности выполнения запроса
* @throws \AmoCRM\Exception
* @throws Exception
*/
public function apiUpdate($id, $text, $modified = 'now')
{
$this->checkId($id);

$parameters = [
'tasks' => [
'update' => [],
],
];

$task = $this->getValues();
$task['id'] = $id;
$task['text'] = $text;
$task['last_modified'] = strtotime($modified);

$parameters['tasks']['update'][] = $task;

$response = $this->postRequest('/private/api/v2/json/tasks/set', $parameters);

return empty($response['tasks']['update']['errors']);
}
}
Loading