Skip to content
Merged
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
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@

### Added

- Added service `CRM\Deal\Service\DealDetailsConfiguration` with support methods,
see [add crm.deal.details.* methods](https://github.com/bitrix24/b24phpsdk/issues/158):
- `getPersonal` method retrieves the settings of deal cards for personal user
- `getGeneral` method retrieves the settings of deal cards for all users
- `resetPersonal` method reset for item user settings
- `resetGeneral` method reset all card settings for all users
- `setPersonal` method set card configuration
- `setGeneral` method set card configuration for all users
- `setForceCommonConfigForAll` method set common detail form for All Users
- Added service `CRM\Lead\Service\LeadDetailsConfiguration` with support methods,
see [add crm.lead.details.* methods](https://github.com/bitrix24/b24phpsdk/issues/172):
- `getPersonal` method retrieves the settings of lead cards for personal user
Expand Down
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,10 @@ test-integration-scope-entity:
test-integration-scope-ai-admin:
docker-compose run --rm php-cli vendor/bin/phpunit --testsuite integration_tests_scope_ai_admin

.PHONY: integration_tests_scope_crm_deal_details
integration_tests_scope_crm_deal_details:
docker-compose run --rm php-cli vendor/bin/phpunit --testsuite integration_tests_scope_crm_deal_details

.PHONY: integration_tests_scope_crm_contact_details
integration_tests_scope_crm_contact_details:
docker-compose run --rm php-cli vendor/bin/phpunit --testsuite integration_tests_scope_crm_contact_details
Expand Down
1 change: 1 addition & 0 deletions phpstan.neon.dist
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ parameters:
- tests/Integration/Services/IMOpenLines
- tests/Integration/Services/Main
- tests/Integration/Services/Placement
- tests/Integration/Services/CRM/Deal/Service/DealDetailsConfigurationTest.php
- tests/Integration/Services/CRM/Lead/Service/LeadDetailsConfigurationTest.php
- tests/Integration/Services/CRM/Contact/Service/ContactDetailsConfigurationTest.php
- tests/Integration/Services/CRM/Lead/Service/LeadProductRowsTest.php
Expand Down
3 changes: 3 additions & 0 deletions phpunit.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@
<testsuite name="integration_tests_scope_ai_admin">
<directory>./tests/Integration/Services/AI/</directory>
</testsuite>
<testsuite name="integration_tests_scope_crm_deal_details">
<file>./tests/Integration/Services/CRM/Deal/Service/DealDetailsConfigurationTest.php</file>
</testsuite>
<testsuite name="integration_tests_scope_crm_contact_details">
<file>./tests/Integration/Services/CRM/Contact/Service/ContactDetailsConfigurationTest.php</file>
</testsuite>
Expand Down
2 changes: 2 additions & 0 deletions rector.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@
__DIR__ . '/tests/Integration/Services/Main',
__DIR__ . '/src/Services/Placement',
__DIR__ . '/tests/Integration/Services/Placement',
__DIR__ . '/src/Services/CRM/Deal/Service/DealDetailsConfiguration.php',
__DIR__ . '/tests/Integration/Services/CRM/Deal/Service/DealDetailsConfigurationTest.php',
__DIR__ . '/src/Services/CRM/Contact/Service/ContactDetailsConfiguration.php',
__DIR__ . '/tests/Integration/Services/CRM/Contact/Service/ContactDetailsConfigurationTest.php',
__DIR__ . '/src/Services/CRM/Lead',
Expand Down
12 changes: 12 additions & 0 deletions src/Services/CRM/CRMServiceBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,18 @@ public function companyDetailsConfiguration(): Company\Service\CompanyDetailsCon
return $this->serviceCache[__METHOD__];
}

public function dealDetailsConfiguration(): Deal\Service\DealDetailsConfiguration
{
if (!isset($this->serviceCache[__METHOD__])) {
$this->serviceCache[__METHOD__] = new Deal\Service\DealDetailsConfiguration(
$this->core,
$this->log
);
}

return $this->serviceCache[__METHOD__];
}

public function leadDetailsConfiguration(): Lead\Service\LeadDetailsConfiguration
{
if (!isset($this->serviceCache[__METHOD__])) {
Expand Down
184 changes: 184 additions & 0 deletions src/Services/CRM/Deal/Service/DealDetailsConfiguration.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
<?php

/**
* This file is part of the bitrix24-php-sdk package.
*
* © Vadim Soluyanov <vadimsallee@gmail.com>
*
* For the full copyright and license information, please view the MIT-LICENSE.txt
* file that was distributed with this source code.
*/

declare(strict_types=1);

namespace Bitrix24\SDK\Services\CRM\Deal\Service;

use Bitrix24\SDK\Attributes\ApiEndpointMetadata;
use Bitrix24\SDK\Attributes\ApiServiceMetadata;
use Bitrix24\SDK\Core\Credentials\Scope;
use Bitrix24\SDK\Core\Exceptions\InvalidArgumentException;
use Bitrix24\SDK\Core\Result\UpdatedItemResult;
use Bitrix24\SDK\Services\AbstractService;
use Bitrix24\SDK\Services\CRM\Common\CardFieldConfiguration;
use Bitrix24\SDK\Services\CRM\Common\CardSectionConfiguration;
use Bitrix24\SDK\Services\CRM\Common\Result\ElementCardConfiguration\CardConfigurationsResult;

#[ApiServiceMetadata(new Scope(['crm']))]
class DealDetailsConfiguration extends AbstractService
{
/**
* The method retrieves the settings of deal cards for personal user.
*
* @param non-negative-int|null $userId
* @link https://apidocs.bitrix24.com/api-reference/crm/deals/custom-form/crm-deal-details-configuration-get.html
*/
#[ApiEndpointMetadata(
'crm.deal.details.configuration.get',
'https://apidocs.bitrix24.com/api-reference/crm/deals/custom-form/crm-deal-details-configuration-get.html',
'The method crm.deal.details.configuration.get retrieves the settings of deal cards for personal user.'
)]
public function getPersonal(?int $userId = null): CardConfigurationsResult
{
return new CardConfigurationsResult($this->core->call('crm.deal.details.configuration.get', [
'scope' => 'P',
'userId' => $userId
]));
}

/**
* The method retrieves the settings of deal cards for all users.
*
* @link https://apidocs.bitrix24.com/api-reference/crm/deals/custom-form/crm-deal-details-configuration-get.html
*/
#[ApiEndpointMetadata(
'crm.deal.details.configuration.get',
'https://apidocs.bitrix24.com/api-reference/crm/deals/custom-form/crm-deal-details-configuration-get.html',
'The method crm.deal.details.configuration.get retrieves the settings of deal cards for all users.'
)]
public function getGeneral(): CardConfigurationsResult
{
return new CardConfigurationsResult($this->core->call('crm.deal.details.configuration.get', [
'scope' => 'C',
]));
}

/**
* The method resets the settings of deal cards for personal user.
*
* @param non-negative-int|null $userId
* @link https://apidocs.bitrix24.com/api-reference/crm/deals/custom-form/crm-deal-details-configuration-reset.html
*/
#[ApiEndpointMetadata(
'crm.deal.details.configuration.reset',
'https://apidocs.bitrix24.com/api-reference/crm/deals/custom-form/crm-deal-details-configuration-reset.html',
'The method crm.deal.details.configuration.get retrieves the settings of deal cards for personal user.'
)]
public function resetPersonal(?int $userId = null): UpdatedItemResult
{
return new UpdatedItemResult($this->core->call('crm.deal.details.configuration.reset', [
'scope' => 'P',
'userId' => $userId
]));
}

/**
* The method resets the settings of deal cards for all users.
*
* @link https://apidocs.bitrix24.com/api-reference/crm/deals/custom-form/crm-deal-details-configuration-reset.html
*/
#[ApiEndpointMetadata(
'crm.deal.details.configuration.reset',
'https://apidocs.bitrix24.com/api-reference/crm/deals/custom-form/crm-deal-details-configuration-reset.html',
'The method crm.deal.details.configuration.get retrieves the settings of deal cards for all users.'
)]
public function resetGeneral(): UpdatedItemResult
{
return new UpdatedItemResult($this->core->call('crm.deal.details.configuration.reset', [
'scope' => 'C',
]));
}

/**
* Set Parameters for Individual CRM Company Detail Card Configuration
* @param CardSectionConfiguration[] $cardConfiguration
* @throws InvalidArgumentException
* @link https://apidocs.bitrix24.com/api-reference/crm/deals/custom-form/crm-deal-details-configuration-set.html
*/
#[ApiEndpointMetadata(
'crm.deal.details.configuration.set',
'https://apidocs.bitrix24.com/api-reference/crm/deals/custom-form/crm-deal-details-configuration-set.html',
'Set Parameters for Individual CRM Deal Detail Card Configuration.'
)]
public function setPersonal(array $cardConfiguration, ?int $userId = null): UpdatedItemResult
{
$rawData = [];
foreach ($cardConfiguration as $sectionItem) {
if (!$sectionItem instanceof CardSectionConfiguration) {
throw new InvalidArgumentException(
sprintf(
'card configuration section mus be «%s» type, current type «%s»',
CardFieldConfiguration::class,
gettype($sectionItem)
)
);
}

$rawData[] = $sectionItem->toArray();
}

return new UpdatedItemResult($this->core->call('crm.deal.details.configuration.set', [
'scope' => 'P',
'userId' => $userId,
'data' => $rawData
]));
}

/**
* Set CRM Deal Detail Card Configuration for all users.
* @param CardSectionConfiguration[] $cardConfiguration
* @throws InvalidArgumentException
* @link https://apidocs.bitrix24.com/api-reference/crm/deals/custom-form/crm-deal-details-configuration-set.html
*/
#[ApiEndpointMetadata(
'crm.deal.details.configuration.set',
'https://apidocs.bitrix24.com/api-reference/crm/deals/custom-form/crm-deal-details-configuration-set.html',
'Set CRM Deal Detail Card Configuration for all users.'
)]
public function setGeneral(array $cardConfiguration): UpdatedItemResult
{
$rawData = [];
foreach ($cardConfiguration as $sectionItem) {
if (!$sectionItem instanceof CardSectionConfiguration) {
throw new InvalidArgumentException(
sprintf(
'card configuration section mus be «%s» type, current type «%s»',
CardFieldConfiguration::class,
gettype($sectionItem)
)
);
}

$rawData[] = $sectionItem->toArray();
}

return new UpdatedItemResult($this->core->call('crm.deal.details.configuration.set', [
'scope' => 'C',
'data' => $rawData
]));
}

/**
* Set Common Detail Form for All Users
* @throws InvalidArgumentException
* @link https://apidocs.bitrix24.com/api-reference/crm/deals/custom-form/crm-deal-details-configuration-force-common-scope-for-all.html
*/
#[ApiEndpointMetadata(
'crm.deal.details.configuration.forceCommonScopeForAll',
'https://apidocs.bitrix24.com/api-reference/crm/deals/custom-form/crm-deal-details-configuration-force-common-scope-for-all.html',
'Set Common Detail Form for All Users.'
)]
public function setForceCommonConfigForAll(): UpdatedItemResult
{
return new UpdatedItemResult($this->core->call('crm.deal.details.configuration.forceCommonScopeForAll'));
}
}
Loading