@fleetbase/storefront-engine 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/addon/controllers/products/index/category/new.js +5 -9
- package/addon/models/product-addon-category.js +10 -1
- package/addon/models/product-variant.js +0 -2
- package/addon/models/product.js +35 -2
- package/addon/serializers/product.js +16 -0
- package/addon/templates/products/index/category/new.hbs +2 -2
- package/composer.json +3 -3
- package/extension.json +1 -1
- package/package.json +1 -1
- package/server/src/Auth/Schemas/Storefront.php +31 -39
- package/server/src/Console/Commands/NotifyStorefrontOrderNearby.php +9 -11
- package/server/src/Expansions/ContactFilterExpansion.php +1 -1
- package/server/src/Expansions/EntityExpansion.php +12 -12
- package/server/src/Expansions/OrderFilterExpansion.php +1 -1
- package/server/src/Expansions/VendorFilterExpansion.php +1 -1
- package/server/src/Http/Controllers/ActionController.php +9 -11
- package/server/src/Http/Controllers/AddonCategoryController.php +1 -1
- package/server/src/Http/Controllers/CustomerController.php +1 -1
- package/server/src/Http/Controllers/GatewayController.php +1 -1
- package/server/src/Http/Controllers/MetricsController.php +17 -17
- package/server/src/Http/Controllers/NetworkController.php +16 -26
- package/server/src/Http/Controllers/NotificationChannelController.php +1 -1
- package/server/src/Http/Controllers/OrderController.php +18 -22
- package/server/src/Http/Controllers/ProductAddonCategoryController.php +1 -2
- package/server/src/Http/Controllers/ProductAddonController.php +1 -2
- package/server/src/Http/Controllers/ProductController.php +89 -44
- package/server/src/Http/Controllers/ProductHourController.php +1 -1
- package/server/src/Http/Controllers/ProductVariantController.php +1 -1
- package/server/src/Http/Controllers/ProductVariantOptionController.php +1 -1
- package/server/src/Http/Controllers/ReviewController.php +1 -1
- package/server/src/Http/Controllers/StoreController.php +1 -2
- package/server/src/Http/Controllers/StoreHourController.php +1 -1
- package/server/src/Http/Controllers/StoreLocationController.php +1 -1
- package/server/src/Http/Controllers/StorefrontController.php +0 -2
- package/server/src/Http/Controllers/VoteController.php +1 -1
- package/server/src/Http/Controllers/v1/CartController.php +16 -26
- package/server/src/Http/Controllers/v1/CategoryController.php +3 -4
- package/server/src/Http/Controllers/v1/CheckoutController.php +283 -286
- package/server/src/Http/Controllers/v1/CustomerController.php +54 -67
- package/server/src/Http/Controllers/v1/GatewayControllerController.php +0 -2
- package/server/src/Http/Controllers/v1/NetworkController.php +26 -23
- package/server/src/Http/Controllers/v1/PaymentMethodController.php +0 -2
- package/server/src/Http/Controllers/v1/ProductController.php +1 -4
- package/server/src/Http/Controllers/v1/ReviewController.php +31 -35
- package/server/src/Http/Controllers/v1/ServiceQuoteController.php +57 -53
- package/server/src/Http/Controllers/v1/StoreController.php +8 -16
- package/server/src/Http/Filter/AddonCategoryFilter.php +1 -1
- package/server/src/Http/Filter/OrderFilter.php +2 -2
- package/server/src/Http/Middleware/SetStorefrontSession.php +9 -20
- package/server/src/Http/Requests/AddStoreToNetworkCategory.php +3 -3
- package/server/src/Http/Requests/CreateCustomerRequest.php +5 -7
- package/server/src/Http/Requests/CreateReviewRequest.php +4 -5
- package/server/src/Http/Requests/GetServiceQuoteFromCart.php +2 -2
- package/server/src/Http/Requests/InitializeCheckoutRequest.php +5 -5
- package/server/src/Http/Requests/NetworkActionRequest.php +2 -2
- package/server/src/Http/Requests/VerifyCreateCustomerRequest.php +2 -2
- package/server/src/Http/Resources/Cart.php +19 -18
- package/server/src/Http/Resources/Category.php +12 -11
- package/server/src/Http/Resources/Customer.php +15 -14
- package/server/src/Http/Resources/Gateway.php +12 -11
- package/server/src/Http/Resources/Media.php +9 -8
- package/server/src/Http/Resources/Network.php +32 -31
- package/server/src/Http/Resources/Product.php +88 -85
- package/server/src/Http/Resources/Review.php +14 -13
- package/server/src/Http/Resources/ReviewCustomer.php +12 -11
- package/server/src/Http/Resources/Store.php +38 -36
- package/server/src/Http/Resources/StoreHour.php +9 -8
- package/server/src/Http/Resources/StoreLocation.php +9 -8
- package/server/src/Imports/ProductsImport.php +0 -2
- package/server/src/Jobs/DownloadProductImageUrl.php +7 -4
- package/server/src/Listeners/HandleOrderCompleted.php +2 -1
- package/server/src/Listeners/HandleOrderDispatched.php +2 -1
- package/server/src/Listeners/HandleOrderDriverAssigned.php +2 -1
- package/server/src/Listeners/HandleOrderStarted.php +4 -3
- package/server/src/Mail/StorefrontNetworkInvite.php +7 -6
- package/server/src/Models/AddonCategory.php +2 -4
- package/server/src/Models/Cart.php +117 -124
- package/server/src/Models/Checkout.php +14 -12
- package/server/src/Models/Customer.php +9 -9
- package/server/src/Models/Gateway.php +22 -22
- package/server/src/Models/Network.php +41 -52
- package/server/src/Models/NetworkStore.php +6 -5
- package/server/src/Models/NotificationChannel.php +11 -9
- package/server/src/Models/PaymentMethod.php +9 -7
- package/server/src/Models/Product.php +152 -30
- package/server/src/Models/ProductAddon.php +14 -11
- package/server/src/Models/ProductAddonCategory.php +9 -8
- package/server/src/Models/ProductHour.php +6 -5
- package/server/src/Models/ProductStoreLocation.php +7 -5
- package/server/src/Models/ProductVariant.php +15 -11
- package/server/src/Models/ProductVariantOption.php +12 -9
- package/server/src/Models/Review.php +9 -7
- package/server/src/Models/Store.php +68 -84
- package/server/src/Models/StoreHour.php +6 -5
- package/server/src/Models/StoreLocation.php +12 -8
- package/server/src/Models/StorefrontModel.php +1 -1
- package/server/src/Models/Vote.php +8 -6
- package/server/src/Notifications/StorefrontOrderCanceled.php +15 -19
- package/server/src/Notifications/StorefrontOrderCompleted.php +15 -19
- package/server/src/Notifications/StorefrontOrderCreated.php +31 -36
- package/server/src/Notifications/StorefrontOrderDriverAssigned.php +15 -20
- package/server/src/Notifications/StorefrontOrderEnroute.php +14 -19
- package/server/src/Notifications/StorefrontOrderNearby.php +16 -21
- package/server/src/Notifications/StorefrontOrderPreparing.php +15 -18
- package/server/src/Notifications/StorefrontOrderReadyForPickup.php +15 -18
- package/server/src/Observers/NetworkObserver.php +2 -3
- package/server/src/Observers/ProductObserver.php +17 -33
- package/server/src/Providers/EventServiceProvider.php +15 -4
- package/server/src/Providers/StorefrontServiceProvider.php +8 -10
- package/server/src/Support/Metrics.php +12 -12
- package/server/src/Support/OrderConfig.php +3 -2
- package/server/src/Support/QPay.php +22 -20
- package/server/src/Support/Storefront.php +18 -17
- package/server/src/routes.php +1 -1
|
@@ -2,21 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\Storefront\Http\Controllers;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\FleetOps\Support\Utils;
|
|
6
|
+
use Fleetbase\Models\Category;
|
|
7
|
+
use Fleetbase\Models\Invite;
|
|
5
8
|
use Fleetbase\Storefront\Http\Requests\AddStoreToNetworkCategory;
|
|
6
9
|
use Fleetbase\Storefront\Http\Requests\NetworkActionRequest;
|
|
7
10
|
use Fleetbase\Storefront\Mail\StorefrontNetworkInvite;
|
|
8
11
|
use Fleetbase\Storefront\Models\Network;
|
|
9
12
|
use Fleetbase\Storefront\Models\NetworkStore;
|
|
10
|
-
use Fleetbase\Models\Category;
|
|
11
|
-
use Fleetbase\Models\Invite;
|
|
12
|
-
use Fleetbase\FleetOps\Support\Utils;
|
|
13
13
|
use Illuminate\Support\Facades\Mail;
|
|
14
14
|
use Illuminate\Support\Str;
|
|
15
15
|
|
|
16
16
|
class NetworkController extends StorefrontController
|
|
17
17
|
{
|
|
18
18
|
/**
|
|
19
|
-
* The resource to query
|
|
19
|
+
* The resource to query.
|
|
20
20
|
*
|
|
21
21
|
* @var string
|
|
22
22
|
*/
|
|
@@ -25,12 +25,11 @@ class NetworkController extends StorefrontController
|
|
|
25
25
|
/**
|
|
26
26
|
* Find network by public_id or invitation code.
|
|
27
27
|
*
|
|
28
|
-
* @param string $id
|
|
29
28
|
* @return \Illuminate\Http\Response
|
|
30
29
|
*/
|
|
31
30
|
public function findNetwork(string $id)
|
|
32
31
|
{
|
|
33
|
-
$id
|
|
32
|
+
$id = trim($id);
|
|
34
33
|
$isPublicId = Str::startsWith($id, ['storefront_network_', 'network_']);
|
|
35
34
|
|
|
36
35
|
if ($isPublicId) {
|
|
@@ -49,24 +48,22 @@ class NetworkController extends StorefrontController
|
|
|
49
48
|
/**
|
|
50
49
|
* Add stores to a network.
|
|
51
50
|
*
|
|
52
|
-
* @param string $id
|
|
53
|
-
* @param \Fleetbase\Storefront\Http\Requests\NetworkActionRequest $request
|
|
54
51
|
* @return \Illuminate\Http\Response
|
|
55
52
|
*/
|
|
56
53
|
public function sendInvites(string $id, NetworkActionRequest $request)
|
|
57
54
|
{
|
|
58
|
-
$network
|
|
55
|
+
$network = Network::find($id);
|
|
59
56
|
$recipients = $request->input('recipients', []);
|
|
60
57
|
|
|
61
58
|
// create invitation
|
|
62
59
|
$invitation = Invite::create([
|
|
63
|
-
'company_uuid'
|
|
60
|
+
'company_uuid' => session('company'),
|
|
64
61
|
'created_by_uuid' => session('user'),
|
|
65
|
-
'subject_uuid'
|
|
66
|
-
'subject_type'
|
|
67
|
-
'protocol'
|
|
68
|
-
'recipients'
|
|
69
|
-
'reason'
|
|
62
|
+
'subject_uuid' => $network->uuid,
|
|
63
|
+
'subject_type' => Utils::getMutationType($network),
|
|
64
|
+
'protocol' => 'email',
|
|
65
|
+
'recipients' => $recipients,
|
|
66
|
+
'reason' => 'join_storefront_network',
|
|
70
67
|
]);
|
|
71
68
|
|
|
72
69
|
// make sure subject is set
|
|
@@ -82,15 +79,13 @@ class NetworkController extends StorefrontController
|
|
|
82
79
|
/**
|
|
83
80
|
* Add stores to a network.
|
|
84
81
|
*
|
|
85
|
-
* @param string $id
|
|
86
|
-
* @param \Fleetbase\Storefront\Http\Requests\NetworkActionRequest $request
|
|
87
82
|
* @return \Illuminate\Http\Response
|
|
88
83
|
*/
|
|
89
84
|
public function addStores(string $id, NetworkActionRequest $request)
|
|
90
85
|
{
|
|
91
86
|
$network = Network::find($id);
|
|
92
|
-
$stores
|
|
93
|
-
$remove
|
|
87
|
+
$stores = collect($request->input('stores', []));
|
|
88
|
+
$remove = collect($request->input('remove', []));
|
|
94
89
|
|
|
95
90
|
// firstOrCreate each
|
|
96
91
|
foreach ($stores as $storeId) {
|
|
@@ -111,8 +106,6 @@ class NetworkController extends StorefrontController
|
|
|
111
106
|
/**
|
|
112
107
|
* Remove stores from a network.
|
|
113
108
|
*
|
|
114
|
-
* @param string $id
|
|
115
|
-
* @param \Fleetbase\Storefront\Http\Requests\NetworkActionRequest $request
|
|
116
109
|
* @return \Illuminate\Http\Response
|
|
117
110
|
*/
|
|
118
111
|
public function removeStores(string $id, NetworkActionRequest $request)
|
|
@@ -130,14 +123,12 @@ class NetworkController extends StorefrontController
|
|
|
130
123
|
/**
|
|
131
124
|
* Remove stores to a network.
|
|
132
125
|
*
|
|
133
|
-
* @param string $id
|
|
134
|
-
* @param \Fleetbase\Storefront\Http\Requests\AddStoreToNetworkCategory $request
|
|
135
126
|
* @return \Illuminate\Http\Response
|
|
136
127
|
*/
|
|
137
128
|
public function addStoreToCategory(string $id, AddStoreToNetworkCategory $request)
|
|
138
129
|
{
|
|
139
130
|
$category = $request->input('category');
|
|
140
|
-
$store
|
|
131
|
+
$store = $request->input('store');
|
|
141
132
|
|
|
142
133
|
// get network store instance
|
|
143
134
|
$networkStore = NetworkStore::where(['network_uuid' => $id, 'store_uuid' => $store])->first();
|
|
@@ -148,11 +139,10 @@ class NetworkController extends StorefrontController
|
|
|
148
139
|
|
|
149
140
|
return response()->json(['status' => 'ok']);
|
|
150
141
|
}
|
|
142
|
+
|
|
151
143
|
/**
|
|
152
144
|
* Remove stores to a network.
|
|
153
145
|
*
|
|
154
|
-
* @param string $id
|
|
155
|
-
* @param \Fleetbase\Storefront\Http\Requests\NetworkActionRequest $request
|
|
156
146
|
* @return \Illuminate\Http\Response
|
|
157
147
|
*/
|
|
158
148
|
public function deleteCategory(string $id, NetworkActionRequest $request)
|
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\Storefront\Http\Controllers;
|
|
4
4
|
|
|
5
|
-
use Fleetbase\FleetOps\Models\Order;
|
|
6
5
|
use Fleetbase\FleetOps\Http\Controllers\Internal\v1\OrderController as FleetbaseOrderController;
|
|
6
|
+
use Fleetbase\FleetOps\Models\Order;
|
|
7
7
|
use Fleetbase\Storefront\Notifications\StorefrontOrderPreparing;
|
|
8
8
|
use Illuminate\Http\Request;
|
|
9
9
|
|
|
10
10
|
class OrderController extends FleetbaseOrderController
|
|
11
11
|
{
|
|
12
12
|
/**
|
|
13
|
-
* The resource to query
|
|
13
|
+
* The resource to query.
|
|
14
14
|
*
|
|
15
15
|
* @var string
|
|
16
16
|
*/
|
|
17
17
|
public $resource = 'order';
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
|
-
* The filter to use
|
|
20
|
+
* The filter to use.
|
|
21
21
|
*
|
|
22
22
|
* @var \Fleetbase\Http\Filter\Filter
|
|
23
23
|
*/
|
|
@@ -26,7 +26,6 @@ class OrderController extends FleetbaseOrderController
|
|
|
26
26
|
/**
|
|
27
27
|
* Accept an order by incrementing status to preparing.
|
|
28
28
|
*
|
|
29
|
-
* @param \Illuminate\Http\Request $request
|
|
30
29
|
* @return \Illuminate\Http\Response
|
|
31
30
|
*/
|
|
32
31
|
public function acceptOrder(Request $request)
|
|
@@ -35,7 +34,7 @@ class OrderController extends FleetbaseOrderController
|
|
|
35
34
|
|
|
36
35
|
if (!$order) {
|
|
37
36
|
return response()->json([
|
|
38
|
-
'error' => 'No order to accept!'
|
|
37
|
+
'error' => 'No order to accept!',
|
|
39
38
|
], 400);
|
|
40
39
|
}
|
|
41
40
|
|
|
@@ -45,27 +44,26 @@ class OrderController extends FleetbaseOrderController
|
|
|
45
44
|
|
|
46
45
|
return response()->json([
|
|
47
46
|
'status' => 'ok',
|
|
48
|
-
'order'
|
|
49
|
-
'status' => $order->status
|
|
47
|
+
'order' => $order->public_id,
|
|
48
|
+
'status' => $order->status,
|
|
50
49
|
]);
|
|
51
50
|
}
|
|
52
51
|
|
|
53
52
|
/**
|
|
54
53
|
* Accept an order by incrementing status to preparing.
|
|
55
54
|
*
|
|
56
|
-
* @param \Illuminate\Http\Request $request
|
|
57
55
|
* @return \Illuminate\Http\Response
|
|
58
56
|
*/
|
|
59
57
|
public function markOrderAsReady(Request $request)
|
|
60
58
|
{
|
|
61
|
-
$adhoc
|
|
59
|
+
$adhoc = $request->boolean('adhoc');
|
|
62
60
|
$driver = $request->input('driver');
|
|
63
61
|
/** @var \Fleetbase\Models\Order $order */
|
|
64
62
|
$order = Order::where('uuid', $request->order)->whereNull('deleted_at')->with(['customer'])->first();
|
|
65
63
|
|
|
66
64
|
if (!$order) {
|
|
67
65
|
return response()->json([
|
|
68
|
-
'error' => 'No order to update!'
|
|
66
|
+
'error' => 'No order to update!',
|
|
69
67
|
], 400);
|
|
70
68
|
}
|
|
71
69
|
|
|
@@ -74,8 +72,8 @@ class OrderController extends FleetbaseOrderController
|
|
|
74
72
|
|
|
75
73
|
return response()->json([
|
|
76
74
|
'status' => 'ok',
|
|
77
|
-
'order'
|
|
78
|
-
'status' => $order->status
|
|
75
|
+
'order' => $order->public_id,
|
|
76
|
+
'status' => $order->status,
|
|
79
77
|
]);
|
|
80
78
|
}
|
|
81
79
|
|
|
@@ -94,15 +92,14 @@ class OrderController extends FleetbaseOrderController
|
|
|
94
92
|
|
|
95
93
|
return response()->json([
|
|
96
94
|
'status' => 'ok',
|
|
97
|
-
'order'
|
|
98
|
-
'status' => $order->status
|
|
95
|
+
'order' => $order->public_id,
|
|
96
|
+
'status' => $order->status,
|
|
99
97
|
]);
|
|
100
98
|
}
|
|
101
99
|
|
|
102
100
|
/**
|
|
103
101
|
* Accept an order by incrementing status to preparing.
|
|
104
102
|
*
|
|
105
|
-
* @param \Illuminate\Http\Request $request
|
|
106
103
|
* @return \Illuminate\Http\Response
|
|
107
104
|
*/
|
|
108
105
|
public function markOrderAsCompleted(Request $request)
|
|
@@ -112,7 +109,7 @@ class OrderController extends FleetbaseOrderController
|
|
|
112
109
|
|
|
113
110
|
if (!$order) {
|
|
114
111
|
return response()->json([
|
|
115
|
-
'error' => 'No order to update!'
|
|
112
|
+
'error' => 'No order to update!',
|
|
116
113
|
], 400);
|
|
117
114
|
}
|
|
118
115
|
|
|
@@ -121,15 +118,14 @@ class OrderController extends FleetbaseOrderController
|
|
|
121
118
|
|
|
122
119
|
return response()->json([
|
|
123
120
|
'status' => 'ok',
|
|
124
|
-
'order'
|
|
125
|
-
'status' => $order->status
|
|
121
|
+
'order' => $order->public_id,
|
|
122
|
+
'status' => $order->status,
|
|
126
123
|
]);
|
|
127
124
|
}
|
|
128
125
|
|
|
129
126
|
/**
|
|
130
127
|
* Reject order and notify customer order is rejected/canceled.
|
|
131
128
|
*
|
|
132
|
-
* @param \Illuminate\Http\Request $request
|
|
133
129
|
* @return \Illuminate\Http\Response
|
|
134
130
|
*/
|
|
135
131
|
public function rejectOrder(Request $request)
|
|
@@ -138,7 +134,7 @@ class OrderController extends FleetbaseOrderController
|
|
|
138
134
|
|
|
139
135
|
if (!$order) {
|
|
140
136
|
return response()->json([
|
|
141
|
-
'error' => 'No order to cancel!'
|
|
137
|
+
'error' => 'No order to cancel!',
|
|
142
138
|
], 400);
|
|
143
139
|
}
|
|
144
140
|
|
|
@@ -147,8 +143,8 @@ class OrderController extends FleetbaseOrderController
|
|
|
147
143
|
|
|
148
144
|
return response()->json([
|
|
149
145
|
'status' => 'ok',
|
|
150
|
-
'order'
|
|
151
|
-
'status' => $order->status
|
|
146
|
+
'order' => $order->public_id,
|
|
147
|
+
'status' => $order->status,
|
|
152
148
|
]);
|
|
153
149
|
}
|
|
154
150
|
}
|
|
@@ -2,42 +2,87 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\Storefront\Http\Controllers;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\FleetOps\Support\Utils;
|
|
6
|
+
use Fleetbase\Models\Category;
|
|
7
|
+
use Fleetbase\Models\File;
|
|
5
8
|
use Fleetbase\Storefront\Imports\ProductsImport;
|
|
6
9
|
use Fleetbase\Storefront\Jobs\DownloadProductImageUrl;
|
|
7
10
|
use Fleetbase\Storefront\Models\Product;
|
|
8
11
|
use Fleetbase\Storefront\Models\Store;
|
|
9
|
-
use Fleetbase\
|
|
10
|
-
use Fleetbase\Models\File;
|
|
11
|
-
use Fleetbase\FleetOps\Support\Utils;
|
|
12
|
-
use Maatwebsite\Excel\Facades\Excel;
|
|
12
|
+
use Fleetbase\Support\Http;
|
|
13
13
|
use Illuminate\Http\Request;
|
|
14
14
|
use Illuminate\Support\Arr;
|
|
15
15
|
use Illuminate\Support\Str;
|
|
16
|
+
use Maatwebsite\Excel\Facades\Excel;
|
|
16
17
|
|
|
17
18
|
class ProductController extends StorefrontController
|
|
18
19
|
{
|
|
19
20
|
/**
|
|
20
|
-
* The resource to query
|
|
21
|
+
* The resource to query.
|
|
21
22
|
*
|
|
22
23
|
* @var string
|
|
23
24
|
*/
|
|
24
25
|
public $resource = 'product';
|
|
25
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Update a Product record.
|
|
29
|
+
* This update method was overwritten because the ProductObserver
|
|
30
|
+
* isn't firing on the `updated` callback.
|
|
31
|
+
*
|
|
32
|
+
* @return \Fleetbase\Storefront\Http\Resources\Product
|
|
33
|
+
*/
|
|
34
|
+
public function updateRecord(Request $request, string $id)
|
|
35
|
+
{
|
|
36
|
+
try {
|
|
37
|
+
$this->validateRequest($request);
|
|
38
|
+
$record = $this->model->updateRecordFromRequest($request, $id, function (&$request, Product &$product) {
|
|
39
|
+
$addonCategories = $request->array('product.addon_categories');
|
|
40
|
+
$variants = $request->array('product.variants');
|
|
41
|
+
$files = $request->array('product.files');
|
|
42
|
+
|
|
43
|
+
// save addon categories
|
|
44
|
+
$product->setAddonCategories($addonCategories);
|
|
45
|
+
|
|
46
|
+
// save product variants
|
|
47
|
+
$product->setProductVariants($variants);
|
|
48
|
+
|
|
49
|
+
// set keys on files
|
|
50
|
+
foreach ($files as $file) {
|
|
51
|
+
$fileRecord = File::where('uuid', $file['uuid'])->first();
|
|
52
|
+
$fileRecord->setKey($product);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
if (Http::isInternalRequest($request)) {
|
|
57
|
+
$this->resource::wrap($this->resourceSingularlName);
|
|
58
|
+
|
|
59
|
+
return new $this->resource($record);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return new $this->resource($record);
|
|
63
|
+
} catch (\Exception $e) {
|
|
64
|
+
return response()->error($e->getMessage());
|
|
65
|
+
} catch (\Illuminate\Database\QueryException $e) {
|
|
66
|
+
return response()->error($e->getMessage());
|
|
67
|
+
} catch (\Fleetbase\Exceptions\FleetbaseRequestValidationException $e) {
|
|
68
|
+
return response()->error($e->getErrors());
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
26
72
|
/**
|
|
27
73
|
* List all activity options for current order.
|
|
28
74
|
*
|
|
29
|
-
* @param \Illuminate\Http\Request $request
|
|
30
75
|
* @return \Illuminate\Http\Response
|
|
31
76
|
*/
|
|
32
77
|
public function processImports(Request $request)
|
|
33
78
|
{
|
|
34
|
-
$disk
|
|
35
|
-
$store
|
|
36
|
-
$category
|
|
37
|
-
$files
|
|
38
|
-
$files
|
|
79
|
+
$disk = $request->input('disk', config('filesystems.default'));
|
|
80
|
+
$store = $request->input('store');
|
|
81
|
+
$category = $request->input('category');
|
|
82
|
+
$files = $request->input('files');
|
|
83
|
+
$files = File::whereIn('uuid', $files)->get();
|
|
39
84
|
$validFileTypes = ['csv', 'tsv', 'xls', 'xlsx'];
|
|
40
|
-
$imports
|
|
85
|
+
$imports = collect();
|
|
41
86
|
|
|
42
87
|
if ($category) {
|
|
43
88
|
$category = Category::find($category);
|
|
@@ -59,7 +104,7 @@ class ProductController extends StorefrontController
|
|
|
59
104
|
return response()->error('Invalid file, unable to proccess.');
|
|
60
105
|
}
|
|
61
106
|
|
|
62
|
-
$data
|
|
107
|
+
$data = Arr::first($data);
|
|
63
108
|
$imports = $imports->merge($data);
|
|
64
109
|
}
|
|
65
110
|
|
|
@@ -72,42 +117,42 @@ class ProductController extends StorefrontController
|
|
|
72
117
|
}
|
|
73
118
|
|
|
74
119
|
// $importId = (string) Str::uuid();
|
|
75
|
-
$name
|
|
76
|
-
$description
|
|
77
|
-
$tags
|
|
78
|
-
$sku
|
|
79
|
-
$price
|
|
80
|
-
$salePrice
|
|
81
|
-
$isService
|
|
82
|
-
$isBookable
|
|
83
|
-
$isOnSale
|
|
84
|
-
$isAvailable
|
|
120
|
+
$name = Utils::or($row, ['name', 'product_name', 'entry_name', 'entity_name', 'entity', 'item_name', 'item', 'service', 'service_name']);
|
|
121
|
+
$description = Utils::or($row, ['description', 'product_description', 'details', 'info', 'about', 'item_description']);
|
|
122
|
+
$tags = Utils::or($row, ['tags']);
|
|
123
|
+
$sku = Utils::or($row, ['sku', 'internal_id', 'stock_number']);
|
|
124
|
+
$price = Utils::or($row, ['price', 'cost', 'value']);
|
|
125
|
+
$salePrice = Utils::or($row, ['sale_price', 'sale_cost', 'sale_value']);
|
|
126
|
+
$isService = Utils::or($row, ['is_service'], false);
|
|
127
|
+
$isBookable = Utils::or($row, ['is_bookable', 'bookable'], false);
|
|
128
|
+
$isOnSale = Utils::or($row, ['on_sale', 'is_on_sale'], false);
|
|
129
|
+
$isAvailable = Utils::or($row, ['available', 'is_available'], true);
|
|
85
130
|
$isRecommended = Utils::or($row, ['recommended', 'is_recommended'], false);
|
|
86
|
-
$canPickup
|
|
87
|
-
$youtubeUrls
|
|
88
|
-
$images
|
|
131
|
+
$canPickup = Utils::or($row, ['can_pickup', 'is_pickup', 'is_pickup_only'], false);
|
|
132
|
+
$youtubeUrls = Utils::or($row, ['youtube', 'youtube_urls', 'youtube_videos']);
|
|
133
|
+
$images = Utils::or($row, ['photos', 'images', 'image', 'photo', 'primary_image', 'product_image', 'thumbnail', 'photo1', 'image1']);
|
|
89
134
|
|
|
90
135
|
$products[] = $product = Product::create(
|
|
91
136
|
[
|
|
92
|
-
'company_uuid'
|
|
137
|
+
'company_uuid' => $request->session()->get('company'),
|
|
93
138
|
'created_by_uuid' => $request->session()->get('user'),
|
|
94
|
-
'store_uuid'
|
|
95
|
-
'name'
|
|
96
|
-
'description'
|
|
97
|
-
'sku'
|
|
98
|
-
'tags'
|
|
99
|
-
'youtube_urls'
|
|
100
|
-
'price'
|
|
101
|
-
'sale_price'
|
|
102
|
-
'currency'
|
|
103
|
-
'is_service'
|
|
104
|
-
'is_bookable'
|
|
105
|
-
'is_on_sale'
|
|
106
|
-
'is_available'
|
|
107
|
-
'is_recommended'
|
|
108
|
-
'can_pickup'
|
|
109
|
-
'category_uuid'
|
|
110
|
-
'status'
|
|
139
|
+
'store_uuid' => $store->uuid,
|
|
140
|
+
'name' => Utils::unicodeDecode($name),
|
|
141
|
+
'description' => Utils::unicodeDecode($description),
|
|
142
|
+
'sku' => $sku,
|
|
143
|
+
'tags' => explode(',', $tags),
|
|
144
|
+
'youtube_urls' => explode(',', $youtubeUrls),
|
|
145
|
+
'price' => $price,
|
|
146
|
+
'sale_price' => $salePrice,
|
|
147
|
+
'currency' => $store->currency,
|
|
148
|
+
'is_service' => $isService,
|
|
149
|
+
'is_bookable' => $isBookable,
|
|
150
|
+
'is_on_sale' => $isOnSale,
|
|
151
|
+
'is_available' => $isAvailable,
|
|
152
|
+
'is_recommended' => $isRecommended,
|
|
153
|
+
'can_pickup' => $canPickup,
|
|
154
|
+
'category_uuid' => $category ? $category->uuid : null,
|
|
155
|
+
'status' => 'published',
|
|
111
156
|
]
|
|
112
157
|
);
|
|
113
158
|
|
|
@@ -8,13 +8,12 @@ use Illuminate\Http\Request;
|
|
|
8
8
|
class StoreController extends StorefrontController
|
|
9
9
|
{
|
|
10
10
|
/**
|
|
11
|
-
* The resource to query
|
|
11
|
+
* The resource to query.
|
|
12
12
|
*
|
|
13
13
|
* @var string
|
|
14
14
|
*/
|
|
15
15
|
public $resource = 'store';
|
|
16
16
|
|
|
17
|
-
|
|
18
17
|
public function allStores(Request $request)
|
|
19
18
|
{
|
|
20
19
|
$stores = Store::select(['uuid', 'name', 'description', 'created_at'])
|