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

Добавил то чего не хватало: #75

Open
wants to merge 1 commit 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
20 changes: 12 additions & 8 deletions src/Models/Company.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class Company extends AbstractModel
* @var array Список доступный полей для модели (исключая кастомные поля)
*/
protected $fields = [
'id',
'name',
'request_id',
'date_create',
Expand All @@ -30,6 +31,7 @@ class Company extends AbstractModel
'linked_leads_id',
'tags',
'modified_user_id',
'updated_at',
];

/**
Expand Down Expand Up @@ -154,26 +156,28 @@ public function apiAdd($companies = [])
* Метод позволяет обновлять данные по уже существующим компаниям
*
* @link https://developers.amocrm.ru/rest_api/company_set.php
* @param int $id Уникальный идентификатор компании
* @param int $contacts Массив с данными для обновления
* @param string $modified Дата последнего изменения данной сущности
* @return bool Флаг успешности выполнения запроса
* @throws \AmoCRM\Exception
*/
public function apiUpdate($id, $modified = 'now')
public function apiUpdate($contacts = [], $modified = 'now')
{
$this->checkId($id);
if (empty($contacts)) {
$contacts = [$contacts];
}

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

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

$parameters['contacts']['update'][] = $company;
foreach ($contacts as $key => $contact) {
$parameters['contacts']['update'][$key] = $contact->getValues();
$parameters['contacts']['update'][$key]['last_modified'] = strtotime($modified);
$parameters['contacts']['update'][$key]['updated_at'] = strtotime($modified);
}

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

Expand Down
18 changes: 10 additions & 8 deletions src/Models/Contact.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ class Contact extends AbstractModel
* @var array Список доступный полей для модели (исключая кастомные поля)
*/
protected $fields = [
'id',
'name',
'request_id',
'date_create',
Expand Down Expand Up @@ -183,26 +184,27 @@ public function apiAdd($contacts = [])
* Метод позволяет обновлять данные по уже существующим контактам
*
* @link https://developers.amocrm.ru/rest_api/contacts_set.php
* @param int $id Уникальный идентификатор контакта
* @param int $contacts Массив с данными для обновления
* @param string $modified Дата последнего изменения данной сущности
* @return bool Флаг успешности выполнения запроса
* @throws \AmoCRM\Exception
*/
public function apiUpdate($id, $modified = 'now')
public function apiUpdate($contacts = [], $modified = 'now')
{
$this->checkId($id);
if (empty($contacts)) {
$contacts = [$contacts];
}

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

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

$parameters['contacts']['update'][] = $contact;
foreach ($contacts as $key => $contact) {
$parameters['contacts']['update'][$key] = $contact->getValues();
$parameters['contacts']['update'][$key]['last_modified'] = strtotime($modified);
}

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

Expand Down
94 changes: 17 additions & 77 deletions src/Models/Lead.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

namespace AmoCRM\Models;

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

/**
* Class Lead
*
Expand All @@ -17,10 +22,13 @@
*/
class Lead extends AbstractModel
{
use SetNote, SetTags, SetDateCreate, SetLastModified;

/**
* @var array Список доступный полей для модели (исключая кастомные поля)
*/
protected $fields = [
'id',
'name',
'date_create',
'last_modified',
Expand All @@ -37,75 +45,6 @@ class Lead extends AbstractModel
'modified_user_id',
];

/**
* Сеттер для даты создания сделки
*
* @param string $date Дата в произвольном формате
* @return $this
*/
public function setDateCreate($date)
{
$this->values['date_create'] = strtotime($date);

return $this;
}

/**
* Сеттер для даты последнего изменения сделки
*
* @param string $date Дата в произвольном формате
* @return $this
*/
public function setLastModified($date)
{
$this->values['last_modified'] = strtotime($date);

return $this;
}

/**
* Сеттер для списка тегов сделки
*
* @param int|array $value Название тегов через запятую или массив тегов
* @return $this
*/
public function setTags($value)
{
if (!is_array($value)) {
$value = [$value];
}

$this->values['tags'] = implode(',', $value);

return $this;
}

/**
* Сеттер для списка примечаний, которые появятся в сделке
* после принятия неразобранного
*
* @param array|Note $value Примечание или массив примечаний
* @return $this
*/
public function setNotes($value)
{
$this->values['notes'] = [];

if ($value instanceof Note) {
$value = [$value];
}

foreach ($value as $note) {
if ($note instanceof Note) {
$note = $note->getValues();
}

$this->values['notes'][] = $note;
}

return $this;
}

/**
* Список сделок
*
Expand Down Expand Up @@ -168,26 +107,27 @@ public function apiAdd($leads = [])
* Метод позволяет обновлять данные по уже существующим сделкам
*
* @link https://developers.amocrm.ru/rest_api/leads_set.php
* @param int $id Уникальный идентификатор сделки
* @param int $leads Массив с данными для обновления
* @param string $modified Дата последнего изменения данной сущности
* @return bool Флаг успешности выполнения запроса
* @throws \AmoCRM\Exception
*/
public function apiUpdate($id, $modified = 'now')
public function apiUpdate($leads = [], $modified = 'now')
{
$this->checkId($id);
if (empty($leads)) {
$leads = [$this];
}

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

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

$parameters['leads']['update'][] = $lead;
foreach ($leads as $key => $lead) {
$parameters['leads']['update'][$key] = $lead->getValues();
$parameters['leads']['update'][$key]['last_modified'] = strtotime($modified);
}

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

Expand Down