diff --git a/src/Models/Company.php b/src/Models/Company.php index 14229a1..65f67dc 100644 --- a/src/Models/Company.php +++ b/src/Models/Company.php @@ -21,6 +21,7 @@ class Company extends AbstractModel * @var array Список доступный полей для модели (исключая кастомные поля) */ protected $fields = [ + 'id', 'name', 'request_id', 'date_create', @@ -30,6 +31,7 @@ class Company extends AbstractModel 'linked_leads_id', 'tags', 'modified_user_id', + 'updated_at', ]; /** @@ -154,14 +156,16 @@ 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' => [ @@ -169,11 +173,11 @@ public function apiUpdate($id, $modified = 'now') ], ]; - $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); diff --git a/src/Models/Contact.php b/src/Models/Contact.php index 9b12c5f..58b69bc 100644 --- a/src/Models/Contact.php +++ b/src/Models/Contact.php @@ -21,6 +21,7 @@ class Contact extends AbstractModel * @var array Список доступный полей для модели (исключая кастомные поля) */ protected $fields = [ + 'id', 'name', 'request_id', 'date_create', @@ -183,14 +184,16 @@ 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' => [ @@ -198,11 +201,10 @@ public function apiUpdate($id, $modified = 'now') ], ]; - $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); diff --git a/src/Models/Lead.php b/src/Models/Lead.php index 927c1b5..aaa92d2 100644 --- a/src/Models/Lead.php +++ b/src/Models/Lead.php @@ -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 * @@ -17,10 +22,13 @@ */ class Lead extends AbstractModel { + use SetNote, SetTags, SetDateCreate, SetLastModified; + /** * @var array Список доступный полей для модели (исключая кастомные поля) */ protected $fields = [ + 'id', 'name', 'date_create', 'last_modified', @@ -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; - } - /** * Список сделок * @@ -168,14 +107,16 @@ 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' => [ @@ -183,11 +124,10 @@ public function apiUpdate($id, $modified = 'now') ], ]; - $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);