Skip to content

Commit 0c8d1af

Browse files
committed
Merge remote-tracking branch 'remotes/dev/1.8' into 1.8
2 parents 67fe240 + a64265c commit 0c8d1af

File tree

5 files changed

+155
-7
lines changed

5 files changed

+155
-7
lines changed

Diff for: src/OroCRM/Bundle/ChannelBundle/Controller/Api/Rest/ChannelController.php

+42-3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
use Oro\Bundle\SecurityBundle\Annotation\AclAncestor;
1818
use Oro\Bundle\SecurityBundle\Exception\ForbiddenException;
1919
use Oro\Bundle\SoapBundle\Controller\Api\Rest\RestController;
20+
use Oro\Bundle\SoapBundle\Request\Parameters\Filter\ChainParameterFilter;
21+
use Oro\Bundle\SoapBundle\Request\Parameters\Filter\BooleanParameterFilter;
22+
use Oro\Bundle\SoapBundle\Request\Parameters\Filter\EntityClassParameterFilter;
23+
use Oro\Bundle\SoapBundle\Request\Parameters\Filter\StringToArrayParameterFilter;
2024

2125
use OroCRM\Bundle\ChannelBundle\Event\ChannelDeleteEvent;
2226
use OroCRM\Bundle\ChannelBundle\Event\ChannelBeforeDeleteEvent;
@@ -43,6 +47,19 @@ class ChannelController extends RestController
4347
* nullable=true,
4448
* description="Number of items per page. Defaults to 10."
4549
* )
50+
* @QueryParam(
51+
* name="entity",
52+
* requirements=".+",
53+
* nullable=true,
54+
* description="The entity alias. One or several aliases separated by comma. Defaults to all entities"
55+
* )
56+
* @QueryParam(
57+
* name="active",
58+
* requirements="true|false",
59+
* nullable=true,
60+
* strict=true,
61+
* description="The channel active status. Default for all(active, inactive) channel statuses"
62+
* )
4663
* @ApiDoc(
4764
* description="Get all channels",
4865
* resource=true
@@ -52,10 +69,32 @@ class ChannelController extends RestController
5269
*/
5370
public function cgetAction()
5471
{
55-
$page = (int)$this->getRequest()->get('page', 1);
56-
$limit = (int)$this->getRequest()->get('limit', self::ITEMS_PER_PAGE);
72+
$page = (int)$this->getRequest()->get('page', 1);
73+
$limit = (int)$this->getRequest()->get('limit', self::ITEMS_PER_PAGE);
74+
$entities = $this->getRequest()->get('entity', null);
75+
76+
$filterParameters = [
77+
'entity' => new ChainParameterFilter(
78+
[
79+
new StringToArrayParameterFilter(),
80+
new EntityClassParameterFilter($this->get('oro_entity.entity_class_name_helper'))
81+
]
82+
),
83+
'active' => new BooleanParameterFilter(),
84+
];
85+
$map = [
86+
'entity' => 'entities.name',
87+
'active' => 'status',
88+
];
89+
90+
$joins = [];
91+
if (!empty($entities)) {
92+
$joins[] = 'entities';
93+
}
94+
95+
$criteria = $this->getFilterCriteria($this->getSupportedQueryParameters('cgetAction'), $filterParameters, $map);
5796

58-
return $this->handleGetListRequest($page, $limit);
97+
return $this->handleGetListRequest($page, $limit, $criteria, $joins);
5998
}
6099

61100
/**

Diff for: src/OroCRM/Bundle/ChannelBundle/Entity/Manager/ChannelApiEntityManager.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ class ChannelApiEntityManager extends ApiEntityManager
1212
protected function getSerializationConfig()
1313
{
1414
$config = [
15-
'fields' => [
15+
'excluded_fields' => ['data'],
16+
'fields' => [
1617
'dataSource' => ['fields' => 'id'],
1718
'entities' => ['fields' => 'name'],
1819
'status' => [

Diff for: src/OroCRM/Bundle/ChannelBundle/Tests/Functional/Controller/Api/Rest/ChannelApiControllerTest.php

+45-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace OroCRM\Bundle\ContactBundle\Tests\Functional\Api\Rest;
44

55
use Oro\Bundle\TestFrameworkBundle\Test\WebTestCase;
6+
use OroCRM\Bundle\ChannelBundle\Entity\Channel;
67

78
/**
89
* @outputBuffering enabled
@@ -13,7 +14,7 @@ class ChannelApiControllerTest extends WebTestCase
1314
protected function setUp()
1415
{
1516
$this->initClient([], $this->generateWsseAuthHeader());
16-
$this->loadFixtures(['OroCRM\Bundle\ChannelBundle\Tests\Functional\Fixture\LoadChannel']);
17+
$this->loadFixtures(['OroCRM\Bundle\ChannelBundle\Tests\Functional\Fixture\LoadChannels']);
1718
}
1819

1920
public function testCget()
@@ -23,6 +24,49 @@ public function testCget()
2324

2425
$channels = $this->getJsonResponseContent($this->client->getResponse(), 200);
2526

27+
$this->assertNotEmpty($channels);
28+
$this->assertCount(2, $channels);
29+
}
30+
31+
public function testCgetWithActiveFilter()
32+
{
33+
/** @var Channel $activeChannel */
34+
$activeChannel = $this->getReference('channel_1');
35+
36+
/** @var Channel $inactiveChannel */
37+
$inactiveChannel = $this->getReference('channel_2');
38+
39+
//fetch active channels
40+
$url = $this->getUrl('orocrm_api_get_channels', ['active' => 'false']);
41+
$this->client->request('GET', $url);
42+
43+
$channels = $this->getJsonResponseContent($this->client->getResponse(), 200);
44+
45+
$this->assertNotEmpty($channels);
46+
$this->assertCount(1, $channels);
47+
$this->assertEquals($channels[0]['name'], $inactiveChannel->getName());
48+
49+
//fetch inactive channels
50+
$url = $this->getUrl('orocrm_api_get_channels', ['active' => 'true']);
51+
$this->client->request('GET', $url);
52+
53+
$channels = $this->getJsonResponseContent($this->client->getResponse(), 200);
54+
55+
$this->assertNotEmpty($channels);
56+
$this->assertCount(1, $channels);
57+
$this->assertEquals($channels[0]['name'], $activeChannel->getName());
58+
}
59+
60+
public function testCgetWithEntityFilter()
61+
{
62+
$url = $this->getUrl(
63+
'orocrm_api_get_channels',
64+
['entity' => 'OroCRM\Bundle\ChannelBundle\Entity\CustomerIdentity']
65+
);
66+
$this->client->request('GET', $url);
67+
68+
$channels = $this->getJsonResponseContent($this->client->getResponse(), 200);
69+
2670
$this->assertNotEmpty($channels);
2771
$this->assertCount(1, $channels);
2872
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php
2+
3+
namespace OroCRM\Bundle\ChannelBundle\Tests\Functional\Fixture;
4+
5+
use Doctrine\Common\DataFixtures\AbstractFixture;
6+
use Doctrine\Common\Persistence\ObjectManager;
7+
8+
use Oro\Bundle\OrganizationBundle\Entity\Organization;
9+
10+
use OroCRM\Bundle\ChannelBundle\Entity\Channel;
11+
12+
class LoadChannels extends AbstractFixture
13+
{
14+
/** @var ObjectManager */
15+
protected $em;
16+
17+
/**
18+
* {@inheritdoc}
19+
*/
20+
public function load(ObjectManager $manager)
21+
{
22+
$this->em = $manager;
23+
$date = new \DateTime('now');
24+
25+
$channel = new Channel();
26+
$channel
27+
->setName('first channel')
28+
->setStatus(true)
29+
->setOwner($this->loadOwner())
30+
->setChannelType('testType')
31+
->setCreatedAt($date)
32+
->setUpdatedAt($date)
33+
->setCustomerIdentity('test1')
34+
->setEntities(['test1', 'test2']);
35+
36+
$manager->persist($channel);
37+
38+
$this->setReference('channel_1', $channel);
39+
40+
$channel2 = new Channel();
41+
$channel2
42+
->setName('second channel')
43+
->setOwner($this->loadOwner())
44+
->setChannelType('testType')
45+
->setCreatedAt($date)
46+
->setUpdatedAt($date)
47+
->setCustomerIdentity('test1')
48+
->setEntities(['OroCRM\Bundle\ChannelBundle\Entity\CustomerIdentity']);
49+
50+
$manager->persist($channel2);
51+
52+
$this->setReference('channel_2', $channel2);
53+
54+
$manager->flush();
55+
}
56+
57+
/**
58+
* @return Organization|null
59+
*/
60+
protected function loadOwner()
61+
{
62+
return $this->em->getRepository('OroOrganizationBundle:Organization')->getFirst();
63+
}
64+
}

Diff for: src/OroCRM/Bundle/MagentoBundle/Resources/config/datagrid.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -861,8 +861,8 @@ datagrid:
861861
options:
862862
field_options:
863863
choices:
864-
false: orocrm.magento.datagrid.columns.order_is_guest.no
865-
true: orocrm.magento.datagrid.columns.order_is_guest.yes
864+
'false': orocrm.magento.datagrid.columns.order_is_guest.no
865+
'true': orocrm.magento.datagrid.columns.order_is_guest.yes
866866
data_name: o.isGuest
867867
createdAt:
868868
type: datetime

0 commit comments

Comments
 (0)