Skip to content
This repository was archived by the owner on Oct 24, 2023. It is now read-only.

Commit 1f3acd7

Browse files
authored
Merge pull request #701 from commercetools/php-maintainance4
2 parents b363ffc + 083b4d8 commit 1f3acd7

File tree

74 files changed

+2936
-2
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+2936
-2
lines changed

src/Core/Builder/Request/ProductRequestBuilder.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44

55
use Commercetools\Core\Request\Products\ProductByIdGetRequest;
66
use Commercetools\Core\Request\Products\ProductByIdHeadRequest;
7+
use Commercetools\Core\Request\Products\ProductByIdProductSelectionsGetRequest;
78
use Commercetools\Core\Request\Products\ProductByKeyGetRequest;
89
use Commercetools\Core\Request\Products\ProductByKeyHeadRequest;
10+
use Commercetools\Core\Request\Products\ProductByKeyProductSelectionsGetRequest;
911
use Commercetools\Core\Request\Products\ProductCreateRequest;
1012
use Commercetools\Core\Model\Product\ProductDraft;
1113
use Commercetools\Core\Request\Products\ProductDeleteByKeyRequest;
@@ -43,6 +45,17 @@ public function getByIdHead($id)
4345
return $request;
4446
}
4547

48+
/**
49+
* @link https://docs.commercetools.com/api/projects/products#query-product-selections-for-a-product-by-id
50+
* @param string $idProductSelections
51+
* @return ProductByIdProductSelectionsGetRequest
52+
*/
53+
public function getByIdProductSelections($idProductSelections)
54+
{
55+
$request = ProductByIdProductSelectionsGetRequest::ofIdProductSelections($idProductSelections);
56+
return $request;
57+
}
58+
4659
/**
4760
*
4861
* @param string $key
@@ -65,6 +78,17 @@ public function getByKeyHead($key)
6578
return $request;
6679
}
6780

81+
/**
82+
* @link https://docs.commercetools.com/api/projects/products#query-product-selections-for-a-product-by-key
83+
* @param string $keyProductSelections
84+
* @return ProductByKeyProductSelectionsGetRequest
85+
*/
86+
public function getByKeyProductSelections($keyProductSelections)
87+
{
88+
$request = ProductByKeyProductSelectionsGetRequest::ofKeyProductSelections($keyProductSelections);
89+
return $request;
90+
}
91+
6892
/**
6993
* @link https://docs.commercetools.com/http-api-projects-products.html#create-a-product
7094
* @param ProductDraft $product
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
<?php
2+
// phpcs:disable Generic.Files.LineLength
3+
namespace Commercetools\Core\Builder\Request;
4+
5+
use Commercetools\Core\Request\ProductSelections\ProductSelectionAssignmentsQueryRequest;
6+
use Commercetools\Core\Request\ProductSelections\ProductSelectionByIdGetRequest;
7+
use Commercetools\Core\Request\ProductSelections\ProductSelectionByIdProductsGetRequest;
8+
use Commercetools\Core\Request\ProductSelections\ProductSelectionByKeyGetRequest;
9+
use Commercetools\Core\Request\ProductSelections\ProductSelectionByKeyProductsGetRequest;
10+
use Commercetools\Core\Request\ProductSelections\ProductSelectionCreateRequest;
11+
use Commercetools\Core\Model\ProductSelection\ProductSelectionDraft;
12+
use Commercetools\Core\Request\ProductSelections\ProductSelectionDeleteByKeyRequest;
13+
use Commercetools\Core\Model\ProductSelection\ProductSelection;
14+
use Commercetools\Core\Request\ProductSelections\ProductSelectionDeleteRequest;
15+
use Commercetools\Core\Request\ProductSelections\ProductSelectionQueryRequest;
16+
use Commercetools\Core\Request\ProductSelections\ProductSelectionUpdateByKeyRequest;
17+
use Commercetools\Core\Request\ProductSelections\ProductSelectionUpdateRequest;
18+
19+
class ProductSelectionRequestBuilder
20+
{
21+
22+
/**
23+
* @link https://docs.commercetools.com/api/projects/product-selections#query-products-available-in-a-store-through-active-product-selections
24+
*
25+
* @return ProductSelectionAssignmentsQueryRequest
26+
*/
27+
public function assignmentsQuery()
28+
{
29+
$request = ProductSelectionAssignmentsQueryRequest::of();
30+
return $request;
31+
}
32+
33+
/**
34+
* @link https://docs.commercetools.com/api/projects/product-selections#get-product-selection-by-id
35+
* @param string $id
36+
* @return ProductSelectionByIdGetRequest
37+
*/
38+
public function getById($id)
39+
{
40+
$request = ProductSelectionByIdGetRequest::ofId($id);
41+
return $request;
42+
}
43+
44+
/**
45+
* @link https://docs.commercetools.com/api/projects/product-selections#by-id
46+
* @param string $idProducts
47+
* @return ProductSelectionByIdProductsGetRequest
48+
*/
49+
public function getByIdProducts($idProducts)
50+
{
51+
$request = ProductSelectionByIdProductsGetRequest::ofIdProducts($idProducts);
52+
return $request;
53+
}
54+
55+
/**
56+
*
57+
* @param string $key
58+
* @return ProductSelectionByKeyGetRequest
59+
*/
60+
public function getByKey($key)
61+
{
62+
$request = ProductSelectionByKeyGetRequest::ofKey($key);
63+
return $request;
64+
}
65+
66+
/**
67+
* @link https://docs.commercetools.com/api/projects/product-selections#by-key
68+
* @param string $keyProducts
69+
* @return ProductSelectionByKeyProductsGetRequest
70+
*/
71+
public function getByKeyProducts($keyProducts)
72+
{
73+
$request = ProductSelectionByKeyProductsGetRequest::ofKeyProducts($keyProducts);
74+
return $request;
75+
}
76+
77+
/**
78+
* @link https://docs.commercetools.com/api/projects/product-selections#create-product-selection
79+
* @param ProductSelectionDraft $productSelection
80+
* @return ProductSelectionCreateRequest
81+
*/
82+
public function create(ProductSelectionDraft $productSelection)
83+
{
84+
$request = ProductSelectionCreateRequest::ofDraft($productSelection);
85+
return $request;
86+
}
87+
88+
/**
89+
* @link https://docs.commercetools.com/api/projects/product-selections#delete-product-selection-by-key
90+
* @param ProductSelection $productSelection
91+
* @return ProductSelectionDeleteByKeyRequest
92+
*/
93+
public function deleteByKey(ProductSelection $productSelection)
94+
{
95+
$request = ProductSelectionDeleteByKeyRequest::ofKeyAndVersion($productSelection->getKey(), $productSelection->getVersion());
96+
return $request;
97+
}
98+
99+
/**
100+
* @link https://docs.commercetools.com/api/projects/product-selections#delete-product-selection-by-id
101+
* @param ProductSelection $productSelection
102+
* @return ProductSelectionDeleteRequest
103+
*/
104+
public function delete(ProductSelection $productSelection)
105+
{
106+
$request = ProductSelectionDeleteRequest::ofIdAndVersion($productSelection->getId(), $productSelection->getVersion());
107+
return $request;
108+
}
109+
110+
/**
111+
* @link https://docs.commercetools.com/api/projects/product-selections#query-product-selections
112+
*
113+
* @return ProductSelectionQueryRequest
114+
*/
115+
public function query()
116+
{
117+
$request = ProductSelectionQueryRequest::of();
118+
return $request;
119+
}
120+
121+
/**
122+
*
123+
* @param ProductSelection $productSelection
124+
* @return ProductSelectionUpdateByKeyRequest
125+
*/
126+
public function updateByKey(ProductSelection $productSelection)
127+
{
128+
$request = ProductSelectionUpdateByKeyRequest::ofKeyAndVersion($productSelection->getKey(), $productSelection->getVersion());
129+
return $request;
130+
}
131+
132+
/**
133+
*
134+
* @param ProductSelection $productSelection
135+
* @return ProductSelectionUpdateRequest
136+
*/
137+
public function update(ProductSelection $productSelection)
138+
{
139+
$request = ProductSelectionUpdateRequest::ofIdAndVersion($productSelection->getId(), $productSelection->getVersion());
140+
return $request;
141+
}
142+
143+
/**
144+
* @return ProductSelectionRequestBuilder
145+
*/
146+
public function of()
147+
{
148+
return new self();
149+
}
150+
}

src/Core/Builder/Request/RequestBuilder.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,14 @@ public function productProjections()
159159
return new ProductProjectionRequestBuilder();
160160
}
161161

162+
/**
163+
* @return ProductSelectionRequestBuilder
164+
*/
165+
public function productSelections()
166+
{
167+
return new ProductSelectionRequestBuilder();
168+
}
169+
162170
/**
163171
* @return ProductTypeRequestBuilder
164172
*/

src/Core/Builder/Update/ActionBuilder.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,14 @@ public function productDiscounts()
124124
return new ProductDiscountsActionBuilder();
125125
}
126126

127+
/**
128+
* @return ProductSelectionsActionBuilder
129+
*/
130+
public function productSelections()
131+
{
132+
return new ProductSelectionsActionBuilder();
133+
}
134+
127135
/**
128136
* @return ProductTypesActionBuilder
129137
*/

src/Core/Builder/Update/OrdersActionBuilder.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
use Commercetools\Core\Request\Orders\Command\OrderSetDeliveryAddressAction;
3232
use Commercetools\Core\Request\Orders\Command\OrderSetDeliveryAddressCustomFieldAction;
3333
use Commercetools\Core\Request\Orders\Command\OrderSetDeliveryAddressCustomTypeAction;
34+
use Commercetools\Core\Request\Orders\Command\OrderSetDeliveryCustomFieldAction;
35+
use Commercetools\Core\Request\Orders\Command\OrderSetDeliveryCustomTypeAction;
3436
use Commercetools\Core\Request\Orders\Command\OrderSetDeliveryItemsAction;
3537
use Commercetools\Core\Request\Orders\Command\OrderSetItemShippingAddressCustomFieldAction;
3638
use Commercetools\Core\Request\Orders\Command\OrderSetItemShippingAddressCustomTypeAction;
@@ -360,6 +362,28 @@ public function setDeliveryAddressCustomType($action = null)
360362
return $this;
361363
}
362364

365+
/**
366+
*
367+
* @param OrderSetDeliveryCustomFieldAction|callable $action
368+
* @return $this
369+
*/
370+
public function setDeliveryCustomField($action = null)
371+
{
372+
$this->addAction($this->resolveAction(OrderSetDeliveryCustomFieldAction::class, $action));
373+
return $this;
374+
}
375+
376+
/**
377+
*
378+
* @param OrderSetDeliveryCustomTypeAction|callable $action
379+
* @return $this
380+
*/
381+
public function setDeliveryCustomType($action = null)
382+
{
383+
$this->addAction($this->resolveAction(OrderSetDeliveryCustomTypeAction::class, $action));
384+
return $this;
385+
}
386+
363387
/**
364388
* @link https://docs.commercetools.com/http-api-projects-orders.html#set-delivery-items
365389
* @param OrderSetDeliveryItemsAction|callable $action
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
<?php
2+
3+
namespace Commercetools\Core\Builder\Update;
4+
5+
use Commercetools\Core\Error\InvalidArgumentException;
6+
use Commercetools\Core\Request\AbstractAction;
7+
use Commercetools\Core\Request\ProductSelections\Command\ProductSelectionAddProductAction;
8+
use Commercetools\Core\Request\ProductSelections\Command\ProductSelectionChangeNameAction;
9+
use Commercetools\Core\Request\ProductSelections\Command\ProductSelectionRemoveProductAction;
10+
use Commercetools\Core\Request\ProductSelections\Command\ProductSelectionSetKeyAction;
11+
12+
class ProductSelectionsActionBuilder
13+
{
14+
private $actions = [];
15+
16+
/**
17+
*
18+
* @param ProductSelectionAddProductAction|callable $action
19+
* @return $this
20+
*/
21+
public function addProduct($action = null)
22+
{
23+
$this->addAction($this->resolveAction(ProductSelectionAddProductAction::class, $action));
24+
return $this;
25+
}
26+
27+
/**
28+
*
29+
* @param ProductSelectionChangeNameAction|callable $action
30+
* @return $this
31+
*/
32+
public function changeName($action = null)
33+
{
34+
$this->addAction($this->resolveAction(ProductSelectionChangeNameAction::class, $action));
35+
return $this;
36+
}
37+
38+
/**
39+
*
40+
* @param ProductSelectionRemoveProductAction|callable $action
41+
* @return $this
42+
*/
43+
public function removeProduct($action = null)
44+
{
45+
$this->addAction($this->resolveAction(ProductSelectionRemoveProductAction::class, $action));
46+
return $this;
47+
}
48+
49+
/**
50+
*
51+
* @param ProductSelectionSetKeyAction|callable $action
52+
* @return $this
53+
*/
54+
public function setKey($action = null)
55+
{
56+
$this->addAction($this->resolveAction(ProductSelectionSetKeyAction::class, $action));
57+
return $this;
58+
}
59+
60+
/**
61+
* @return ProductSelectionsActionBuilder
62+
*/
63+
public static function of()
64+
{
65+
return new self();
66+
}
67+
68+
/**
69+
* @param $class
70+
* @param $action
71+
* @return AbstractAction
72+
* @throws InvalidArgumentException
73+
*/
74+
private function resolveAction($class, $action = null)
75+
{
76+
if (is_null($action) || is_callable($action)) {
77+
$callback = $action;
78+
$emptyAction = $class::of();
79+
$action = $this->callback($emptyAction, $callback);
80+
}
81+
if ($action instanceof $class) {
82+
return $action;
83+
}
84+
throw new InvalidArgumentException(
85+
sprintf('Expected method to be called with or callable to return %s', $class)
86+
);
87+
}
88+
89+
/**
90+
* @param $action
91+
* @param callable $callback
92+
* @return AbstractAction
93+
*/
94+
private function callback($action, callable $callback = null)
95+
{
96+
if (!is_null($callback)) {
97+
$action = $callback($action);
98+
}
99+
return $action;
100+
}
101+
102+
/**
103+
* @param AbstractAction $action
104+
* @return $this;
105+
*/
106+
public function addAction(AbstractAction $action)
107+
{
108+
$this->actions[] = $action;
109+
return $this;
110+
}
111+
112+
/**
113+
* @return array
114+
*/
115+
public function getActions()
116+
{
117+
return $this->actions;
118+
}
119+
120+
121+
/**
122+
* @param array $actions
123+
* @return $this
124+
*/
125+
public function setActions(array $actions)
126+
{
127+
$this->actions = $actions;
128+
return $this;
129+
}
130+
}

0 commit comments

Comments
 (0)