Skip to content

Commit

Permalink
social profiles support for contacts
Browse files Browse the repository at this point in the history
  • Loading branch information
bessudnov committed Nov 17, 2020
1 parent fafc148 commit defaa6c
Show file tree
Hide file tree
Showing 4 changed files with 256 additions and 1 deletion.
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -745,6 +745,20 @@ CLIENT_REDIRECT_URI="https://example.com/examples/get_token.php (Важно об
После авторизации вы можете проверить работу примеров, обращаясь к ним из браузера. Стоит отметить, что для корректной работы примеров
необходимо проверить ID сущностей в них.

## Работа с Issues
Если вы столкнулись с проблемой при работе с библиотекой, вы можете составить Issue, который будет рассмотрен при первой возможности.

При составлении, детально опишите проблему, приложите примеры кода, а также ответы на запросы из getLastRequestInfo.

Не забывайте удалять из примеров значимые данные, которые не должны быть достоянием общественности.

Также могут быть рассмотрены пожелания по улучшению библиотеки.

Вы можете предложить свои исправления/изменения исходного кода библиотеки, посредством создания Issue с описанием, а также Pull request с упоминанием Issue в комментарии к нему.
Они будут рассмотрены и будут приняты или отклонены. Некоторые Pull Request могут остаться без ответа и действия, в случае, если правки потенциально жизнеспособны, но в данный момент не являются ключевыми для проекта.

Если вы столкнулись с проблемой функционала amoCRM - обратитесь в техническую поддержку через чат в вашем аккаунте.

## License

MIT
25 changes: 25 additions & 0 deletions src/AmoCRM/Collections/SocialProfiles/SocialProfilesCollection.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

namespace AmoCRM\Collections\SocialProfiles;

use AmoCRM\Collections\BaseApiCollection;
use AmoCRM\Models\SocialProfiles\SocialProfileModel;

/**
* Class SocialProfiles
*
* @package AmoCRM\Collections\SocialProfiles
*
* @method null|SocialProfileModel current()
* @method null|SocialProfileModel last()
* @method null|SocialProfileModel first()
* @method null|SocialProfileModel offsetGet($offset)
* @method SocialProfilesCollection offsetSet($offset, SocialProfileModel $value)
* @method SocialProfilesCollection prepend(SocialProfileModel $value)
* @method SocialProfilesCollection add(SocialProfileModel $value)
* @method null|SocialProfileModel getBy($key, $value)
*/
class SocialProfilesCollection extends BaseApiCollection
{
public const ITEM_CLASS = SocialProfileModel::class;
}
36 changes: 35 additions & 1 deletion src/AmoCRM/Models/ContactModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace AmoCRM\Models;

use AmoCRM\Collections\SocialProfiles\SocialProfilesCollection;
use AmoCRM\Exceptions\InvalidArgumentException;
use AmoCRM\Helpers\EntityTypesInterface;
use AmoCRM\Models\Interfaces\CanBeLinkedInterface;
Expand All @@ -26,6 +27,7 @@ class ContactModel extends BaseApiModel implements TypeAwareInterface, CanBeLink
public const LEADS = 'leads';
public const CUSTOMERS = 'customers';
public const CATALOG_ELEMENTS = 'catalog_elements';
public const SOCIAL_PROFILES = 'social_profiles';

/**
* @var int
Expand Down Expand Up @@ -122,6 +124,11 @@ class ContactModel extends BaseApiModel implements TypeAwareInterface, CanBeLink
*/
protected $catalogElementsLinks = null;

/**
* @var SocialProfilesCollection|null
*/
protected $socialProfiles = null;

public function getType(): string
{
return EntityTypesInterface::CONTACTS;
Expand Down Expand Up @@ -407,6 +414,26 @@ public function setCatalogElementsLinks(?CatalogElementsCollection $catalogEleme
return $this;
}

/**
* @return SocialProfilesCollection|null
*/
public function getSocialProfiles(): ?SocialProfilesCollection
{
return $this->socialProfiles;
}

/**
* @param SocialProfilesCollection|null $socialProfiles
*
* @return ContactModel
*/
public function setSocialProfiles(?SocialProfilesCollection $socialProfiles): ContactModel
{
$this->socialProfiles = $socialProfiles;

return $this;
}

/**
* @return LeadsCollection|null
*/
Expand Down Expand Up @@ -568,7 +595,10 @@ public static function fromArray(array $contact): self
);
$contactModel->setCatalogElementsLinks($catalogElementsCollection);
}

if (!empty($contact[AmoCRMApiRequest::EMBEDDED][self::SOCIAL_PROFILES])) {
$socialProfilesCollection = SocialProfilesCollection::fromArray($contact[AmoCRMApiRequest::EMBEDDED][self::SOCIAL_PROFILES]);
$contactModel->setSocialProfiles($socialProfilesCollection);
}

if (!empty($contact['account_id'])) {
$contactModel->setAccountId((int)$contact['account_id']);
Expand Down Expand Up @@ -611,6 +641,10 @@ public function toArray(): array
$result['catalog_elements'] = $this->getCatalogElementsLinks()->toArray();
}

if (!is_null($this->getSocialProfiles())) {
$result['social_profiles'] = $this->getSocialProfiles()->toArray();
}

if (!is_null($this->getCompany())) {
$result['company'] = $this->getCompany()->toArray();
}
Expand Down
182 changes: 182 additions & 0 deletions src/AmoCRM/Models/SocialProfiles/SocialProfileModel.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,182 @@
<?php

namespace AmoCRM\Models\SocialProfiles;

use AmoCRM\Exceptions\NotAvailableForActionException;
use AmoCRM\Models\BaseApiModel;

/**
* Class SocialProfileModel
*
* @package AmoCRM\Models\SocialProfiles
*/
class SocialProfileModel extends BaseApiModel
{
/**
* @var string|null
*/
protected $id;

/**
* @var string|null
*/
protected $name;

/**
* @var string|null
*/
protected $avatar;

/**
* @var string|null
*/
protected $sourceName;

/**
* @var array|null
*/
protected $data;

/**
* @param array $socialProfile
*
* @return self
*/
public static function fromArray(array $socialProfile): self
{
$model = new static();

$model
->setId($socialProfile['id'])
->setName($socialProfile['name'])
->setAvatar($socialProfile['avatar'])
->setSourceName($socialProfile['source_name'])
->setData($socialProfile['data']);

return $model;
}

/**
* @return string|null
*/
public function getId(): ?string
{
return $this->id;
}

/**
* @param string|null $id
*
* @return SocialProfileModel
*/
public function setId(?string $id): SocialProfileModel
{
$this->id = $id;

return $this;
}

/**
* @return string|null
*/
public function getName(): ?string
{
return $this->name;
}

/**
* @param string|null $name
*
* @return SocialProfileModel
*/
public function setName(?string $name): SocialProfileModel
{
$this->name = $name;

return $this;
}

/**
* @return string|null
*/
public function getAvatar(): ?string
{
return $this->avatar;
}

/**
* @param string|null $avatar
*
* @return SocialProfileModel
*/
public function setAvatar(?string $avatar): SocialProfileModel
{
$this->avatar = $avatar;

return $this;
}

/**
* @return string|null
*/
public function getSourceName(): ?string
{
return $this->sourceName;
}

/**
* @param string|null $sourceName
*
* @return SocialProfileModel
*/
public function setSourceName(?string $sourceName): SocialProfileModel
{
$this->sourceName = $sourceName;

return $this;
}

/**
* @return array|null
*/
public function getData(): ?array
{
return $this->data;
}

/**
* @param array|null $data
*
* @return SocialProfileModel
*/
public function setData(?array $data): SocialProfileModel
{
$this->data = $data;

return $this;
}

/**
* @inheritDoc
*/
public function toArray(): array
{
return [
'id' => $this->getId(),
'name' => $this->getName(),
'avatar' => $this->getAvatar(),
'source_name' => $this->getSourceName(),
'data' => $this->getData(),
];
}

/**
* @param string|null $requestId
* @return array
* @throws NotAvailableForActionException
*/
public function toApi(?string $requestId = "0"): array
{
throw new NotAvailableForActionException();
}
}

0 comments on commit defaa6c

Please sign in to comment.