OpenXE/classes/Modules/Pipedrive/Service/PipedrivePersonPropertyService.php
2021-05-21 08:49:41 +02:00

79 lines
2.1 KiB
PHP

<?php
declare(strict_types=1);
namespace Xentral\Modules\Pipedrive\Service;
use Xentral\Modules\Pipedrive\Exception\PipedriveClientException;
use Xentral\Modules\Pipedrive\Exception\PipedriveConfigurationException;
use Xentral\Modules\Pipedrive\Exception\PipedriveHttpClientException;
use Xentral\Modules\Pipedrive\Exception\PipedriveMetaException;
use Xentral\Modules\Pipedrive\Exception\PipedrivePersonPropertyServiceException;
final class PipedrivePersonPropertyService
{
/** @var PipedriveClientService $client */
private $client;
/**
* @param PipedriveClientService $client
*/
public function __construct(PipedriveClientService $client)
{
$this->client = $client;
}
/**
* @throws PipedriveClientException
* @throws PipedriveHttpClientException
* @throws PipedriveConfigurationException
* @throws PipedriveMetaException
*
* @return PipedriveServerResponseInterface
*/
public function getProperties(): PipedriveServerResponseInterface
{
return $this->client->read('getPersonFields');
}
/**
* @param int $id
*
* @throws PipedriveClientException
* @throws PipedriveConfigurationException
* @throws PipedriveHttpClientException
* @throws PipedriveMetaException
*
* @return PipedriveServerResponseInterface
*/
public function getProperty(int $id): PipedriveServerResponseInterface
{
return $this->client->read('getOnePersonField', [], [$id]);
}
/**
* @throws PipedriveClientException
* @throws PipedriveConfigurationException
* @throws PipedriveHttpClientException
* @throws PipedriveMetaException
* @throws PipedrivePersonPropertyServiceException
*
* @return array
*/
public function getPdLeadStatus(): array
{
$response = $this->getProperty(9039);
if ($response->getStatusCode() !== 200) {
throw new PipedrivePersonPropertyServiceException($response->getError());
}
if (($data = $response->getData()) && array_key_exists('options', $data)) {
return $data['options'];
}
return [];
}
}