Skip to content

Commit 3ea5e9a

Browse files
Taras KubivIgor Liubarskyi
authored andcommitted
Merged in APITOCART-16685-demo-module-add-new-store-form (pull request #43)
APITOCART-16685-demo-module-add-new-store-form [DEVELOP]
2 parents 99b81da + 5e19159 commit 3ea5e9a

File tree

13 files changed

+208
-114
lines changed

13 files changed

+208
-114
lines changed

src/app/Http/Controllers/OrdersController.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,9 @@ public function store(OrderRequest $request)
276276
$quantity = $request->get('product_quantity')[ array_search($cpi, $request->get('product_id')) ];
277277

278278
// check if quantity right
279-
if ( $product['quantity']< $quantity) continue;
279+
if ($product['quantity'] < $quantity && $product['is_stock_managed'] === true) {
280+
continue;
281+
}
280282

281283
$order['order_item'][] = [
282284
'order_item_id' => $product['id'],

src/app/Http/Controllers/ProductsController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public function productList($store_id=null,Request $request)
5757
// collect product variants
5858
if ( isset($item['type']) && $item['type'] === 'configurable' ){
5959
$pv = $this->api2cart->getProductVariants($store_id, $item['id'] );
60-
$newItem['children'] = $pv['children'];
60+
$newItem['children'] = $pv['children'] ?? [];
6161
}
6262

6363
$products->push( $newItem );

src/app/Http/Controllers/StoresController.php

Lines changed: 54 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
class StoresController extends Controller
1212
{
13+
const METHOD_DB = '_method_db_';
14+
1315
private $api2cart;
1416

1517

@@ -70,10 +72,31 @@ public function storeList(Request $request)
7072
public function fields(Request $request, $id=null)
7173
{
7274
$store = collect($this->api2cart->getCartsList())->where('cart_id',$id)->first();
75+
$store['db'] = false;
76+
77+
if (isset($store['params']['required'])) {
78+
foreach ($store['params']['required'] as $paramsSetKey => $params) {
79+
foreach ($params as $paramKey => $param) {
80+
if (in_array($param['name'], ['store_url',])) {
81+
unset($store['params']['required'][$paramsSetKey][$paramKey]);
82+
}
83+
}
84+
}
85+
}
7386

74-
// Log::debug( print_r($store,1) );
87+
if (isset($store['params']['additional'])) {
88+
foreach ($store['params']['additional'] as $key => $addParam) {
89+
if (strpos($addParam['name'], 'ftp_') === 0 ||
90+
in_array($addParam['name'], ['cart_id', 'store_key', 'verify', 'db_tables_prefix'])
91+
) {
92+
unset($store['params']['additional'][$key]);
93+
}
94+
}
95+
}
7596

76-
// return '';
97+
if (isset($store['cart_method']) && $store['cart_method'] === self::METHOD_DB) {
98+
$store['db'] = true;
99+
}
77100

78101
return view('stores.store_fields', compact('store'));
79102

@@ -84,12 +107,6 @@ public function create(Request $request)
84107
{
85108
// get supported carts
86109
$stores = collect($this->api2cart->getCartsList());
87-
// ->whereIn('cart_id',['Amazon']);
88-
89-
90-
// Log::debug( print_r($stores,1) );
91-
92-
93110

94111
if ( $request->ajax() ){
95112
return response()->json( ['data' => view('stores.form', compact('stores'))->render(), 'item' => $stores ] );
@@ -100,14 +117,38 @@ public function create(Request $request)
100117

101118
public function store(StoreRequest $request)
102119
{
103-
// Log::debug( $request->all() );
104-
//load required store info
105-
$store = collect($this->api2cart->getCartsList())->where('cart_id',$request->get('cart_id'))->first();
106-
107120
$requestData = $request->except(['_token']);
108121
$requestData['field']['cart_id'] = $request->get('cart_id');
109122

110-
$fields = (isset($requestData['custom'])) ? array_merge( $requestData['field'], $requestData['custom'] ) : $requestData['field'];
123+
if (isset($requestData['field']['multicred'])) {
124+
$credFields = [];
125+
$filledSet = null;
126+
127+
foreach ($requestData['field']['multicred'] as $key => $fields) {
128+
if ($filledSet !== null) {
129+
continue;
130+
}
131+
132+
$filterFields = array_filter($fields);
133+
134+
if (count($fields) === count($filterFields)) {
135+
$filledSet = $key;
136+
137+
foreach ($fields as $fieldName => $fieldValue) {
138+
if ($fieldValue !== null) {
139+
$credFields[$fieldName] = $fieldValue;
140+
}
141+
}
142+
}
143+
}
144+
145+
unset($requestData['field']['multicred']);
146+
$credFields = array_merge($credFields, $requestData['field']);
147+
148+
$fields = (isset($requestData['custom'])) ? array_merge($credFields, $requestData['custom']) : $credFields;
149+
} else {
150+
$fields = (isset($requestData['custom'])) ? array_merge($requestData['field'], $requestData['custom']) : $requestData['field'];
151+
}
111152

112153
$result = $this->api2cart->addCart( $fields );
113154

src/app/Http/Requests/StoreRequest.php

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,53 @@ public function authorize()
2525
*/
2626
public function rules()
2727
{
28-
// Log::debug( print_r( request()->all(),1) );
29-
30-
return [
28+
$rules = [
3129
'cart_id' => ['required'],
32-
'field.*' => ['required']
30+
'field.*' => ['required'],
31+
'field.store_url' => [
32+
'required',
33+
'regex:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/'
34+
]
3335
];
36+
37+
$fields = request()->all();
38+
39+
if (isset($fields['field']['store_key'])) {
40+
$rules['field.store_key'] = [
41+
'required',
42+
'regex:/^[0-9a-z]{32}$/'
43+
];
44+
}
45+
46+
if (isset($fields['field']['multicred'])) {
47+
$filledSet = null;
48+
49+
foreach ($fields['field']['multicred'] as $key => $field) {
50+
foreach ($field as $fieldValue) {
51+
if ($fieldValue !== null) {
52+
$filledSet = $key;
53+
54+
break 2;
55+
}
56+
}
57+
}
58+
59+
foreach ($fields['field']['multicred'] as $key => $fields) {
60+
if ($filledSet !== null && $filledSet !== $key) {
61+
continue;
62+
}
63+
64+
foreach ($fields as $fieldName => $fieldValue) {
65+
$rules['field.multicred.' . $key . '.' . $fieldName] = ['required'];
66+
67+
if ($filledSet === null) {
68+
break;
69+
}
70+
}
71+
}
72+
}
73+
74+
return $rules;
3475
}
3576

3677
public function messages()

src/app/Services/Api2Cart.php

Lines changed: 16 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
use Api2Cart\Client as ApiClient;
1818
use Api2Cart\Client\Model\Cart;
19+
use Api2Cart\Client\Model\AccountCartAdd;
1920

2021

2122
class Api2Cart
@@ -240,69 +241,7 @@ public function addCart($fields)
240241
$this->setApiKey();
241242

242243
try{
243-
244-
245-
246-
$result = $this->account->accountCartAdd(
247-
(isset($fields['cart_id'])) ? $fields['cart_id'] : null,
248-
(isset($fields['store_url'])) ? $fields['store_url'] : null,
249-
(isset($fields['bridge_url'])) ? $fields['bridge_url'] : null,
250-
(isset($fields['store_root'])) ? $fields['store_root'] : null,
251-
(isset($fields['store_key'])) ? $fields['store_key'] : null,
252-
(isset($fields['validate_version'])) ? $fields['validate_version'] : null,
253-
(isset($fields['verify'])) ? 'false' : 'true',
254-
(isset($fields['db_tables_prefix'])) ? $fields['db_tables_prefix'] : null,
255-
(isset($fields['ftp_host'])) ? $fields['ftp_host'] : null,
256-
(isset($fields['ftp_user'])) ? $fields['ftp_user'] : null,
257-
(isset($fields['ftp_password'])) ? $fields['ftp_password'] : null,
258-
(isset($fields['ftp_port']) && intval($fields['ftp_port'])) ? $fields['ftp_port'] : null,
259-
(isset($fields['ftp_store_dir'])) ? $fields['ftp_store_dir'] : null,
260-
(isset($fields['_3dcartapi_api_key'])) ? $fields['_3dcartapi_api_key'] : null,
261-
(isset($fields['amazon_access_token'])) ? $fields['amazon_access_token'] : null,
262-
(isset($fields['amazon_seller_id'])) ? $fields['amazon_seller_id'] : null,
263-
(isset($fields['amazon_marketplaces_ids'])) ? $fields['amazon_marketplaces_ids'] : null,
264-
(isset($fields['amazon_secret_key'])) ? $fields['amazon_secret_key'] : null,
265-
(isset($fields['amazon_access_key_id'])) ? $fields['amazon_access_key_id'] : null,
266-
(isset($fields['aspdotnetstorefront_api_user'])) ? $fields['aspdotnetstorefront_api_user'] : null,
267-
(isset($fields['aspdotnetstorefront_api_pass'])) ? $fields['aspdotnetstorefront_api_pass'] : null,
268-
(isset($fields['bigcommerceapi_admin_account'])) ? $fields['bigcommerceapi_admin_account'] : null,
269-
(isset($fields['bigcommerceapi_api_path'])) ? $fields['bigcommerceapi_api_path'] : null,
270-
(isset($fields['bigcommerceapi_api_key'])) ? $fields['bigcommerceapi_api_key'] : null,
271-
(isset($fields['bigcommerceapi_client_id'])) ? $fields['bigcommerceapi_client_id'] : null,
272-
(isset($fields['bigcommerceapi_access_token'])) ? $fields['bigcommerceapi_access_token'] : null,
273-
(isset($fields['bigcommerceapi_context'])) ? $fields['bigcommerceapi_context'] : null,
274-
(isset($fields['demandware_client_id'])) ? $fields['demandware_client_id'] : null,
275-
(isset($fields['demandware_api_password'])) ? $fields['demandware_api_password'] : null,
276-
(isset($fields['demandware_user_name'])) ? $fields['demandware_user_name'] : null,
277-
(isset($fields['demandware_user_password'])) ? $fields['demandware_user_password'] : null,
278-
(isset($fields['demandware_env_type'])) ? $fields['demandware_env_type'] : null,
279-
(isset($fields['ebay_client_id'])) ? $fields['ebay_client_id'] : null,
280-
(isset($fields['ebay_client_secret'])) ? $fields['ebay_client_secret'] : null,
281-
(isset($fields['ebay_runame'])) ? $fields['ebay_runame'] : null,
282-
(isset($fields['ebay_access_token'])) ? $fields['ebay_access_token'] : null,
283-
(isset($fields['ebay_refresh_token'])) ? $fields['ebay_refresh_token'] : null,
284-
(isset($fields['ebay_environment'])) ? $fields['ebay_environment'] : null,
285-
(isset($fields['ebay_site_id'])) ? $fields['ebay_site_id'] : null,
286-
(isset($fields['walmart_client_id'])) ? $fields['walmart_client_id'] : null,
287-
(isset($fields['walmart_client_secret'])) ? $fields['walmart_client_secret'] : null,
288-
(isset($fields['ecwid_acess_token'])) ? $fields['ecwid_acess_token'] : null,
289-
(isset($fields['ecwid_store_id'])) ? $fields['ecwid_store_id'] : null,
290-
(isset($fields['etsy_keystring'])) ? $fields['etsy_keystring'] : null,
291-
(isset($fields['etsy_shared_secret'])) ? $fields['etsy_shared_secret'] : null,
292-
(isset($fields['etsy_access_token'])) ? $fields['etsy_access_token'] : null,
293-
(isset($fields['etsy_token_secret'])) ? $fields['etsy_token_secret'] : null,
294-
(isset($fields['neto_api_key'])) ? $fields['neto_api_key'] : null,
295-
(isset($fields['neto_api_username'])) ? $fields['neto_api_username'] : null,
296-
(isset($fields['shopify_api_key'])) ? $fields['shopify_api_key'] : null,
297-
(isset($fields['shopify_api_password'])) ? $fields['shopify_api_password'] : null,
298-
(isset($fields['shopify_shared_secret'])) ? $fields['shopify_shared_secret'] : null,
299-
(isset($fields['shopify_access_token'])) ? $fields['shopify_access_token'] : null,
300-
(isset($fields['volusion_login'])) ? $fields['volusion_login'] : null,
301-
(isset($fields['volusion_password'])) ? $fields['volusion_password'] : null,
302-
(isset($fields['hybris_client_id'])) ? $fields['hybris_client_id'] : null,
303-
(isset($fields['hybris_client_secret'])) ? $fields['hybris_client_secret'] : null,
304-
(isset($fields['squarespace_api_key'])) ? $fields['squarespace_api_key'] : null
305-
);
244+
$result = $this->account->accountCartAdd(new AccountCartAdd($fields));
306245

307246
// Log::debug( print_r($result,1) );
308247

@@ -645,6 +584,7 @@ public function getOrderList( $store_id=null , $sort_by=null, $sort_direct=null,
645584
null,
646585
null,
647586
null,
587+
null,
648588
$limit,
649589
null,
650590
$sort_by,
@@ -669,9 +609,6 @@ public function getOrderList( $store_id=null , $sort_by=null, $sort_direct=null,
669609
null
670610
);
671611

672-
673-
//if ( $store_id == '4730d110180d4b67449f00b44608cb9d' ) Log::debug(print_r($result,1));
674-
675612
$this->logApiCall( 'order.list.json', $result->getReturnCode(), $this->order->getConfig(), null, null, null, $result->getReturnMessage(), [ 'sort_by' => $sort_by, 'sort_direct' => $sort_direct, 'limit' => $limit, 'created_from' => $created_from] );
676613

677614
if ( $result->getReturnCode() == 0 ){
@@ -698,7 +635,6 @@ public function getOrderListPage( $store_id=null, $page_cursor=null )
698635

699636
try{
700637

701-
702638
$this->order->getConfig()->setApiKey('store_key', $store_id);
703639

704640
$result = $this->order->orderList(
@@ -708,6 +644,7 @@ public function getOrderListPage( $store_id=null, $page_cursor=null )
708644
null,
709645
null,
710646
null,
647+
null,
711648
$page_cursor,
712649
null,
713650
null,
@@ -858,7 +795,6 @@ public function getProductList($store_id=null, $ids=null, $sort_by=null, $sort_d
858795
null,
859796
null,
860797
null,
861-
null,
862798
$sort_by,
863799
$sort_direct
864800
);
@@ -1076,7 +1012,18 @@ public function getProductVariants($store_id=null, $product_id=null)
10761012
try{
10771013

10781014
$this->order->getConfig()->setApiKey('store_key', $store_id);
1079-
$result = $this->product->productChildItemList( $product_id );
1015+
$result = $this->product->productChildItemList(
1016+
null,
1017+
0,
1018+
100,
1019+
'force_all',
1020+
null,
1021+
null,
1022+
null,
1023+
null,
1024+
null,
1025+
$product_id
1026+
);
10801027

10811028
$this->logApiCall( 'product.child_item.list.json', $result->getReturnCode(), $this->product->getConfig(), null, null, null, $result->getReturnMessage() ,['product_id'=>$product_id] );
10821029

0 commit comments

Comments
 (0)