@fleetbase/storefront-engine 0.2.5 → 0.2.7
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 +132 -132
- 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,11 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\Storefront\Http\Controllers\v1;
|
|
4
4
|
|
|
5
|
-
use Fleetbase\Http\Controllers\Controller;
|
|
6
|
-
use Fleetbase\Storefront\Http\Requests\CreateCustomerRequest;
|
|
7
|
-
use Fleetbase\Storefront\Http\Requests\VerifyCreateCustomerRequest;
|
|
8
|
-
use Fleetbase\Storefront\Http\Resources\Customer;
|
|
9
|
-
use Fleetbase\Storefront\Support\Storefront;
|
|
10
5
|
use Fleetbase\FleetOps\Http\Requests\UpdateContactRequest;
|
|
11
6
|
use Fleetbase\FleetOps\Http\Resources\v1\DeletedResource;
|
|
12
7
|
use Fleetbase\FleetOps\Http\Resources\v1\Order as OrderResource;
|
|
@@ -15,9 +10,14 @@ use Fleetbase\FleetOps\Models\Contact;
|
|
|
15
10
|
use Fleetbase\FleetOps\Models\Order;
|
|
16
11
|
use Fleetbase\FleetOps\Models\Place;
|
|
17
12
|
use Fleetbase\FleetOps\Support\Utils;
|
|
13
|
+
use Fleetbase\Http\Controllers\Controller;
|
|
18
14
|
use Fleetbase\Models\User;
|
|
19
15
|
use Fleetbase\Models\UserDevice;
|
|
20
16
|
use Fleetbase\Models\VerificationCode;
|
|
17
|
+
use Fleetbase\Storefront\Http\Requests\CreateCustomerRequest;
|
|
18
|
+
use Fleetbase\Storefront\Http\Requests\VerifyCreateCustomerRequest;
|
|
19
|
+
use Fleetbase\Storefront\Http\Resources\Customer;
|
|
20
|
+
use Fleetbase\Storefront\Support\Storefront;
|
|
21
21
|
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
|
22
22
|
use Illuminate\Http\Request;
|
|
23
23
|
use Illuminate\Support\Facades\Hash;
|
|
@@ -28,7 +28,6 @@ class CustomerController extends Controller
|
|
|
28
28
|
/**
|
|
29
29
|
* Query for Storefront Customer orders.
|
|
30
30
|
*
|
|
31
|
-
* @param \Illuminate\Http\Request $request
|
|
32
31
|
* @return \Fleetbase\Http\Resources\Storefront\Customer
|
|
33
32
|
*/
|
|
34
33
|
public function registerDevice(Request $request)
|
|
@@ -41,27 +40,26 @@ class CustomerController extends Controller
|
|
|
41
40
|
|
|
42
41
|
$device = UserDevice::firstOrCreate(
|
|
43
42
|
[
|
|
44
|
-
'token'
|
|
43
|
+
'token' => $request->input('token'),
|
|
45
44
|
'platform' => $request->or(['platform', 'os']),
|
|
46
45
|
],
|
|
47
46
|
[
|
|
48
47
|
'user_uuid' => $customer->user_uuid,
|
|
49
|
-
'platform'
|
|
50
|
-
'token'
|
|
51
|
-
'status'
|
|
48
|
+
'platform' => $request->or(['platform', 'os']),
|
|
49
|
+
'token' => $request->input('token'),
|
|
50
|
+
'status' => 'active',
|
|
52
51
|
]
|
|
53
52
|
);
|
|
54
53
|
|
|
55
54
|
return response()->json([
|
|
56
55
|
'status' => 'OK',
|
|
57
|
-
'device' => $device->public_id
|
|
56
|
+
'device' => $device->public_id,
|
|
58
57
|
]);
|
|
59
58
|
}
|
|
60
59
|
|
|
61
60
|
/**
|
|
62
61
|
* Query for Storefront Customer orders.
|
|
63
62
|
*
|
|
64
|
-
* @param \Illuminate\Http\Request $request
|
|
65
63
|
* @return \Fleetbase\Http\Resources\Storefront\Customer
|
|
66
64
|
*/
|
|
67
65
|
public function orders(Request $request)
|
|
@@ -72,7 +70,7 @@ class CustomerController extends Controller
|
|
|
72
70
|
return response()->error('Not authorized to view customers orders');
|
|
73
71
|
}
|
|
74
72
|
|
|
75
|
-
$results = Order::queryWithRequest($request, function (&$query) use ($customer
|
|
73
|
+
$results = Order::queryWithRequest($request, function (&$query) use ($customer) {
|
|
76
74
|
$query->where('customer_uuid', $customer->uuid)->whereNull('deleted_at')->withoutGlobalScopes();
|
|
77
75
|
|
|
78
76
|
// dont query any master orders if its a network
|
|
@@ -90,7 +88,6 @@ class CustomerController extends Controller
|
|
|
90
88
|
/**
|
|
91
89
|
* Query for Storefront Customer places.
|
|
92
90
|
*
|
|
93
|
-
* @param \Illuminate\Http\Request $request
|
|
94
91
|
* @return \Fleetbase\Http\Resources\Storefront\Customer
|
|
95
92
|
*/
|
|
96
93
|
public function places(Request $request)
|
|
@@ -111,16 +108,15 @@ class CustomerController extends Controller
|
|
|
111
108
|
/**
|
|
112
109
|
* Setups a verification request to create a new storefront customer.
|
|
113
110
|
*
|
|
114
|
-
* @param \Fleetbase\Storefront\Http\Requests\VerifyCreateCustomerRequest $request
|
|
115
111
|
* @return \Fleetbase\Http\Resources\Contact
|
|
116
112
|
*/
|
|
117
113
|
public function requestCustomerCreationCode(VerifyCreateCustomerRequest $request)
|
|
118
114
|
{
|
|
119
|
-
$mode
|
|
115
|
+
$mode = $request->input('mode', 'email');
|
|
120
116
|
$identity = $request->input('identity');
|
|
121
|
-
$isEmail
|
|
122
|
-
$isPhone
|
|
123
|
-
$about
|
|
117
|
+
$isEmail = Utils::isEmail($identity);
|
|
118
|
+
$isPhone = $mode === 'sms' && !$isEmail;
|
|
119
|
+
$about = Storefront::about(['company_uuid']);
|
|
124
120
|
|
|
125
121
|
// validate identity
|
|
126
122
|
if ($mode === 'email' && !$isEmail) {
|
|
@@ -137,7 +133,7 @@ class CustomerController extends Controller
|
|
|
137
133
|
|
|
138
134
|
// create a customer instance
|
|
139
135
|
$customer = new Contact($attributes);
|
|
140
|
-
$meta
|
|
136
|
+
$meta = ['identity' => $identity];
|
|
141
137
|
|
|
142
138
|
if ($isEmail) {
|
|
143
139
|
VerificationCode::generateEmailVerificationFor($customer, 'storefront_create_customer', function ($verification) use ($about) {
|
|
@@ -155,17 +151,16 @@ class CustomerController extends Controller
|
|
|
155
151
|
/**
|
|
156
152
|
* Creates a new Storefront Customer resource.
|
|
157
153
|
*
|
|
158
|
-
* @param \Fleetbase\Storefront\Http\Requests\CreateCustomerRequest $request
|
|
159
154
|
* @return \Fleetbase\Http\Resources\Contact
|
|
160
155
|
*/
|
|
161
156
|
public function create(CreateCustomerRequest $request)
|
|
162
157
|
{
|
|
163
158
|
// get the verification token
|
|
164
|
-
$code
|
|
165
|
-
$about
|
|
166
|
-
$input
|
|
159
|
+
$code = $request->input('code');
|
|
160
|
+
$about = Storefront::about(['company_uuid']);
|
|
161
|
+
$input = $request->only(['name', 'type', 'title', 'email', 'phone', 'meta']);
|
|
167
162
|
$identity = $request->input('identity');
|
|
168
|
-
$user
|
|
163
|
+
$user = null;
|
|
169
164
|
|
|
170
165
|
if (!Utils::isEmail($identity)) {
|
|
171
166
|
$identity = static::phone($identity);
|
|
@@ -181,7 +176,7 @@ class CustomerController extends Controller
|
|
|
181
176
|
// check for existing user to attach contact to
|
|
182
177
|
if (Utils::isEmail($identity)) {
|
|
183
178
|
$user = User::where('email', $identity)->whereNull('deleted_at')->withoutGlobalScopes()->first();
|
|
184
|
-
}
|
|
179
|
+
} elseif (Str::startsWith($identity, '+')) {
|
|
185
180
|
$user = User::where('phone', $identity)->whereNull('deleted_at')->withoutGlobalScopes()->first();
|
|
186
181
|
}
|
|
187
182
|
|
|
@@ -189,22 +184,22 @@ class CustomerController extends Controller
|
|
|
189
184
|
// create the user
|
|
190
185
|
$user = User::create(array_merge(
|
|
191
186
|
[
|
|
192
|
-
'type'
|
|
187
|
+
'type' => 'customer',
|
|
193
188
|
'company_uuid' => session('company'),
|
|
194
|
-
'phone'
|
|
189
|
+
'phone' => static::phone($request->input('phone')),
|
|
195
190
|
],
|
|
196
191
|
$request->only(['name', 'type', 'email', 'phone', 'meta'])
|
|
197
192
|
));
|
|
198
193
|
}
|
|
199
194
|
|
|
200
195
|
// always customer type
|
|
201
|
-
$input['type']
|
|
196
|
+
$input['type'] = 'customer';
|
|
202
197
|
$input['company_uuid'] = session('company');
|
|
203
|
-
$input['phone']
|
|
204
|
-
$input['user_uuid']
|
|
205
|
-
$input['meta']
|
|
198
|
+
$input['phone'] = static::phone($request->input('phone'));
|
|
199
|
+
$input['user_uuid'] = $user->uuid;
|
|
200
|
+
$input['meta'] = [
|
|
206
201
|
'storefront_id' => $about->public_id,
|
|
207
|
-
'origin'
|
|
202
|
+
'origin' => 'storefront',
|
|
208
203
|
];
|
|
209
204
|
|
|
210
205
|
// create the customer/contact
|
|
@@ -226,8 +221,9 @@ class CustomerController extends Controller
|
|
|
226
221
|
/**
|
|
227
222
|
* Updates a Storefront Customer resource.
|
|
228
223
|
*
|
|
229
|
-
* @param
|
|
230
|
-
* @param
|
|
224
|
+
* @param string $id
|
|
225
|
+
* @param \Fleetbase\Http\Requests\UpdateContactRequest $request
|
|
226
|
+
*
|
|
231
227
|
* @return \Fleetbase\Http\Resources\Contact
|
|
232
228
|
*/
|
|
233
229
|
public function update($id, UpdateContactRequest $request)
|
|
@@ -259,7 +255,6 @@ class CustomerController extends Controller
|
|
|
259
255
|
/**
|
|
260
256
|
* Query for Storefront Customer resources.
|
|
261
257
|
*
|
|
262
|
-
* @param \Illuminate\Http\Request $request
|
|
263
258
|
* @return \Fleetbase\Http\Resources\Storefront\Customer
|
|
264
259
|
*/
|
|
265
260
|
public function query(Request $request)
|
|
@@ -274,7 +269,6 @@ class CustomerController extends Controller
|
|
|
274
269
|
/**
|
|
275
270
|
* Finds a single Storefront Product resources.
|
|
276
271
|
*
|
|
277
|
-
* @param \Illuminate\Http\Request $request
|
|
278
272
|
* @return \Fleetbase\Http\Resources\Storefront\Customer
|
|
279
273
|
*/
|
|
280
274
|
public function find($id)
|
|
@@ -297,7 +291,6 @@ class CustomerController extends Controller
|
|
|
297
291
|
/**
|
|
298
292
|
* Deletes a Storefront Product resources.
|
|
299
293
|
*
|
|
300
|
-
* @param \Illuminate\Http\Request $request
|
|
301
294
|
* @return \Fleetbase\Http\Resources\v1\DeletedResource
|
|
302
295
|
*/
|
|
303
296
|
public function delete($id)
|
|
@@ -323,14 +316,13 @@ class CustomerController extends Controller
|
|
|
323
316
|
/**
|
|
324
317
|
* Authenticates customer using login credentials and returns with auth token.
|
|
325
318
|
*
|
|
326
|
-
* @param \Illuminate\Http\Request $request
|
|
327
319
|
* @return \Fleetbase\Http\Resources\Storefront\Customer
|
|
328
320
|
*/
|
|
329
321
|
public function login(Request $request)
|
|
330
322
|
{
|
|
331
323
|
$identity = $request->input('identity');
|
|
332
324
|
$password = $request->input('password');
|
|
333
|
-
$attrs
|
|
325
|
+
$attrs = $request->input(['name', 'phone', 'email']);
|
|
334
326
|
|
|
335
327
|
$user = User::where('email', $identity)->orWhere('phone', static::phone($identity))->first();
|
|
336
328
|
|
|
@@ -338,23 +330,23 @@ class CustomerController extends Controller
|
|
|
338
330
|
return response()->error('Authentication failed using password provided.', 401);
|
|
339
331
|
}
|
|
340
332
|
|
|
341
|
-
// get the storefront or network logging in for
|
|
333
|
+
// get the storefront or network logging in for
|
|
342
334
|
$about = Storefront::about(['company_uuid']);
|
|
343
335
|
|
|
344
336
|
// get contact record
|
|
345
337
|
$contact = Contact::firstOrCreate(
|
|
346
338
|
[
|
|
347
|
-
'user_uuid'
|
|
339
|
+
'user_uuid' => $user->uuid,
|
|
348
340
|
'company_uuid' => $about->company_uuid,
|
|
349
|
-
'type'
|
|
341
|
+
'type' => 'customer',
|
|
350
342
|
],
|
|
351
343
|
[
|
|
352
|
-
'user_uuid'
|
|
344
|
+
'user_uuid' => $user->uuid,
|
|
353
345
|
'company_uuid' => $about->company_uuid,
|
|
354
|
-
'name'
|
|
355
|
-
'phone'
|
|
356
|
-
'email'
|
|
357
|
-
'type'
|
|
346
|
+
'name' => $attrs['name'] ?? $user->name,
|
|
347
|
+
'phone' => $attrs['phone'] ?? $user->phone,
|
|
348
|
+
'email' => $attrs['email'] ?? $user->email,
|
|
349
|
+
'type' => 'customer',
|
|
358
350
|
]
|
|
359
351
|
);
|
|
360
352
|
|
|
@@ -371,9 +363,8 @@ class CustomerController extends Controller
|
|
|
371
363
|
}
|
|
372
364
|
|
|
373
365
|
/**
|
|
374
|
-
* Attempts authentication with phone number via SMS verification
|
|
366
|
+
* Attempts authentication with phone number via SMS verification.
|
|
375
367
|
*
|
|
376
|
-
* @param \Illuminate\Http\Request $request
|
|
377
368
|
* @return \Illuminate\Http\Response
|
|
378
369
|
*/
|
|
379
370
|
public function loginWithPhone()
|
|
@@ -387,7 +378,7 @@ class CustomerController extends Controller
|
|
|
387
378
|
return response()->error('No customer with this phone # found.');
|
|
388
379
|
}
|
|
389
380
|
|
|
390
|
-
// get the storefront or network logging in for
|
|
381
|
+
// get the storefront or network logging in for
|
|
391
382
|
$about = Storefront::about();
|
|
392
383
|
|
|
393
384
|
// generate verification token
|
|
@@ -401,15 +392,14 @@ class CustomerController extends Controller
|
|
|
401
392
|
/**
|
|
402
393
|
* Verifys SMS code and sends auth token with customer resource.
|
|
403
394
|
*
|
|
404
|
-
* @param \Illuminate\Http\Request $request
|
|
405
395
|
* @return \Fleetbase\Http\Resources\Storefront\Customer
|
|
406
396
|
*/
|
|
407
397
|
public function verifyCode(Request $request)
|
|
408
398
|
{
|
|
409
399
|
$identity = Utils::isEmail($request->identity) ? $request->identity : static::phone($request->identity);
|
|
410
|
-
$code
|
|
411
|
-
$for
|
|
412
|
-
$attrs
|
|
400
|
+
$code = $request->input('code');
|
|
401
|
+
$for = $request->input('for', 'storefront_login');
|
|
402
|
+
$attrs = $request->input(['name', 'phone', 'email']);
|
|
413
403
|
|
|
414
404
|
if ($for === 'storefront_create_customer') {
|
|
415
405
|
return $this->create($request);
|
|
@@ -429,23 +419,23 @@ class CustomerController extends Controller
|
|
|
429
419
|
return response()->error('Invalid verification code!');
|
|
430
420
|
}
|
|
431
421
|
|
|
432
|
-
// get the storefront or network logging in for
|
|
422
|
+
// get the storefront or network logging in for
|
|
433
423
|
$about = Storefront::about(['company_uuid']);
|
|
434
424
|
|
|
435
425
|
// get contact record
|
|
436
426
|
$contact = Contact::firstOrCreate(
|
|
437
427
|
[
|
|
438
|
-
'user_uuid'
|
|
428
|
+
'user_uuid' => $user->uuid,
|
|
439
429
|
'company_uuid' => $about->company_uuid,
|
|
440
|
-
'type'
|
|
430
|
+
'type' => 'customer',
|
|
441
431
|
],
|
|
442
432
|
[
|
|
443
|
-
'user_uuid'
|
|
433
|
+
'user_uuid' => $user->uuid,
|
|
444
434
|
'company_uuid' => $about->company_uuid,
|
|
445
|
-
'name'
|
|
446
|
-
'phone'
|
|
447
|
-
'email'
|
|
448
|
-
'type'
|
|
435
|
+
'name' => $attrs['name'] ?? $user->name,
|
|
436
|
+
'phone' => $attrs['phone'] ?? $user->phone,
|
|
437
|
+
'email' => $attrs['email'] ?? $user->email,
|
|
438
|
+
'type' => 'customer',
|
|
449
439
|
]
|
|
450
440
|
);
|
|
451
441
|
|
|
@@ -463,11 +453,8 @@ class CustomerController extends Controller
|
|
|
463
453
|
|
|
464
454
|
/**
|
|
465
455
|
* Patches phone number with international code.
|
|
466
|
-
*
|
|
467
|
-
* @param string|null $phone
|
|
468
|
-
* @return string
|
|
469
456
|
*/
|
|
470
|
-
public static function phone(
|
|
457
|
+
public static function phone(string $phone = null): string
|
|
471
458
|
{
|
|
472
459
|
if ($phone === null) {
|
|
473
460
|
$phone = request()->input('phone');
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\Storefront\Http\Controllers\v1;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\FleetOps\Support\Utils;
|
|
5
6
|
use Fleetbase\Http\Controllers\Controller;
|
|
7
|
+
use Fleetbase\Models\Category;
|
|
6
8
|
use Fleetbase\Storefront\Http\Resources\Store as StorefrontStore;
|
|
7
9
|
use Fleetbase\Storefront\Http\Resources\StoreLocation as StorefrontStoreLocation;
|
|
8
10
|
use Fleetbase\Storefront\Models\Store;
|
|
9
11
|
use Fleetbase\Storefront\Models\StoreLocation;
|
|
10
|
-
use Fleetbase\Models\Category;
|
|
11
|
-
use Fleetbase\FleetOps\Support\Utils;
|
|
12
12
|
use Grimzy\LaravelMysqlSpatial\Types\Point;
|
|
13
13
|
use Illuminate\Http\Request;
|
|
14
14
|
|
|
@@ -17,7 +17,6 @@ class NetworkController extends Controller
|
|
|
17
17
|
/**
|
|
18
18
|
* Returns all stores within the network.
|
|
19
19
|
*
|
|
20
|
-
* @param \Illuminate\Http\Request $request
|
|
21
20
|
* @return \Illuminate\Http\Response
|
|
22
21
|
*/
|
|
23
22
|
public function stores(Request $request)
|
|
@@ -26,15 +25,15 @@ class NetworkController extends Controller
|
|
|
26
25
|
return response()->error('Stores cannot have stores!');
|
|
27
26
|
}
|
|
28
27
|
|
|
29
|
-
$sort
|
|
30
|
-
$limit
|
|
31
|
-
$offset
|
|
32
|
-
$ids
|
|
33
|
-
$tagged
|
|
34
|
-
$query
|
|
35
|
-
$location
|
|
28
|
+
$sort = $request->input('sort', false);
|
|
29
|
+
$limit = $request->input('limit', false);
|
|
30
|
+
$offset = $request->input('offset', false);
|
|
31
|
+
$ids = $request->input('ids', []);
|
|
32
|
+
$tagged = $request->input('tagged', []);
|
|
33
|
+
$query = $request->input('query', false);
|
|
34
|
+
$location = $request->input('location');
|
|
36
35
|
$maxDistance = $request->input('maximum_distance', null);
|
|
37
|
-
$exclude
|
|
36
|
+
$exclude = $request->input('exclude', []);
|
|
38
37
|
|
|
39
38
|
if (is_string($tagged)) {
|
|
40
39
|
$tagged = explode(',', $tagged);
|
|
@@ -103,12 +102,16 @@ class NetworkController extends Controller
|
|
|
103
102
|
switch ($sort) {
|
|
104
103
|
case 'highest_rated':
|
|
105
104
|
$query->withAvg('reviews', 'rating')->orderByDesc('reviews_avg_rating');
|
|
105
|
+
// no break
|
|
106
106
|
case 'lowest_rated':
|
|
107
107
|
$query->withAvg('reviews', 'rating')->orderBy('reviews_avg_rating');
|
|
108
|
+
// no break
|
|
108
109
|
case 'newest':
|
|
109
110
|
$query->orderByDesc('created_at');
|
|
111
|
+
// no break
|
|
110
112
|
case 'oldest':
|
|
111
113
|
$query->orderBy('created_at');
|
|
114
|
+
// no break
|
|
112
115
|
case 'popular':
|
|
113
116
|
$query->withCount('checkouts')->orderByDesc('checkouts_count');
|
|
114
117
|
}
|
|
@@ -135,6 +138,7 @@ class NetworkController extends Controller
|
|
|
135
138
|
return $distanceA - $distanceB;
|
|
136
139
|
})->map(function ($location) use ($coordinates) {
|
|
137
140
|
$location->distance = Utils::vincentyGreatCircleDistance($coordinates, $location->place->location);
|
|
141
|
+
|
|
138
142
|
return $location;
|
|
139
143
|
})->first()->distance;
|
|
140
144
|
|
|
@@ -145,6 +149,7 @@ class NetworkController extends Controller
|
|
|
145
149
|
return $distanceA - $distanceB;
|
|
146
150
|
})->map(function ($location) use ($coordinates) {
|
|
147
151
|
$location->distance = Utils::vincentyGreatCircleDistance($coordinates, $location->place->location);
|
|
152
|
+
|
|
148
153
|
return $location;
|
|
149
154
|
})->first()->distance;
|
|
150
155
|
|
|
@@ -163,20 +168,19 @@ class NetworkController extends Controller
|
|
|
163
168
|
/**
|
|
164
169
|
* Returns all store locations within the network.
|
|
165
170
|
*
|
|
166
|
-
* @param \Illuminate\Http\Request $request
|
|
167
171
|
* @return \Illuminate\Http\Response
|
|
168
172
|
*/
|
|
169
173
|
public function storeLocations(Request $request)
|
|
170
174
|
{
|
|
171
|
-
$limit
|
|
172
|
-
$ids
|
|
173
|
-
$exclude
|
|
174
|
-
$offset
|
|
175
|
-
$location
|
|
176
|
-
$tagged
|
|
177
|
-
$searchQuery
|
|
175
|
+
$limit = $request->input('limit', 30);
|
|
176
|
+
$ids = $request->input('ids', []);
|
|
177
|
+
$exclude = $request->input('exclude', []);
|
|
178
|
+
$offset = $request->input('offset');
|
|
179
|
+
$location = $request->input('location');
|
|
180
|
+
$tagged = $request->input('tagged', []);
|
|
181
|
+
$searchQuery = $request->input('query', false);
|
|
178
182
|
$shouldIncludeStore = $request->input('with_store', false);
|
|
179
|
-
$coordinates
|
|
183
|
+
$coordinates = Utils::getPointFromCoordinates($location);
|
|
180
184
|
|
|
181
185
|
if (is_string($tagged)) {
|
|
182
186
|
$tagged = explode(',', $tagged);
|
|
@@ -190,7 +194,7 @@ class NetworkController extends Controller
|
|
|
190
194
|
$ids = explode(',', $ids);
|
|
191
195
|
}
|
|
192
196
|
|
|
193
|
-
$databaseName
|
|
197
|
+
$databaseName = config('database.connections.mysql.database');
|
|
194
198
|
$placesTableName = $databaseName . '.places';
|
|
195
199
|
|
|
196
200
|
$query = StoreLocation::select(['store_locations.*', $placesTableName . '.location', $placesTableName . '.uuid'])
|
|
@@ -249,9 +253,8 @@ class NetworkController extends Controller
|
|
|
249
253
|
}
|
|
250
254
|
|
|
251
255
|
/**
|
|
252
|
-
* Returns all tags from stores/categories throughout the network
|
|
256
|
+
* Returns all tags from stores/categories throughout the network.
|
|
253
257
|
*
|
|
254
|
-
* @param \Illuminate\Http\Request $request
|
|
255
258
|
* @return \Illuminate\Http\Response
|
|
256
259
|
*/
|
|
257
260
|
public function tags(Request $request)
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
namespace Fleetbase\Storefront\Http\Controllers\v1;
|
|
4
4
|
|
|
5
5
|
use Fleetbase\Http\Controllers\Controller;
|
|
6
|
-
use Fleetbase\Storefront\Http\Resources\Product as StorefrontProduct;
|
|
7
6
|
use Fleetbase\Http\Resources\v1\DeletedResource;
|
|
8
7
|
use Fleetbase\Models\Category;
|
|
8
|
+
use Fleetbase\Storefront\Http\Resources\Product as StorefrontProduct;
|
|
9
9
|
use Fleetbase\Storefront\Models\Product;
|
|
10
10
|
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
|
11
11
|
use Illuminate\Http\Request;
|
|
@@ -15,7 +15,6 @@ class ProductController extends Controller
|
|
|
15
15
|
/**
|
|
16
16
|
* Query for Storefront Product resources.
|
|
17
17
|
*
|
|
18
|
-
* @param \Illuminate\Http\Request $request
|
|
19
18
|
* @return \Fleetbase\Http\Resources\DriverCollection
|
|
20
19
|
*/
|
|
21
20
|
public function query(Request $request)
|
|
@@ -54,7 +53,6 @@ class ProductController extends Controller
|
|
|
54
53
|
/**
|
|
55
54
|
* Finds a single Storefront Product resources.
|
|
56
55
|
*
|
|
57
|
-
* @param \Illuminate\Http\Request $request
|
|
58
56
|
* @return \Fleetbase\Http\Resources\EntityCollection
|
|
59
57
|
*/
|
|
60
58
|
public function find($id)
|
|
@@ -73,7 +71,6 @@ class ProductController extends Controller
|
|
|
73
71
|
/**
|
|
74
72
|
* Deletes a Storefront Product resources.
|
|
75
73
|
*
|
|
76
|
-
* @param \Illuminate\Http\Request $request
|
|
77
74
|
* @return \Fleetbase\Http\Resources\v1\DeletedResource
|
|
78
75
|
*/
|
|
79
76
|
public function delete($id)
|