@fleetbase/fleetops-engine 0.6.15 → 0.6.16

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.
@@ -435,7 +435,7 @@ export default class OrderConfigManagerActivityFlowComponent extends Component {
435
435
  * Initializes the activity flow by either loading from configuration or creating a default flow.
436
436
  */
437
437
  initializeActivityFlow() {
438
- const hasFlow = Object.keys(this.config.flow).length > 0;
438
+ const hasFlow = this.config && Object.keys(this.config.flow).length > 0;
439
439
  if (hasFlow) {
440
440
  this.deserializeFlow(this.config.flow);
441
441
  this.initializeContext();
@@ -29,9 +29,13 @@ export default class OrderConfigManagerDetailsComponent extends Component {
29
29
  * @param {Object} owner - The owner of the component.
30
30
  * @param {Object} args - The arguments passed to the component, including the configuration.
31
31
  */
32
- constructor(owner, { config }) {
32
+ constructor(owner, { config, configManagerContext }) {
33
33
  super(...arguments);
34
34
  this.config = config;
35
+
36
+ configManagerContext.on('onConfigChanged', (newConfig) => {
37
+ this.changeConfig(newConfig);
38
+ });
35
39
  }
36
40
 
37
41
  /**
@@ -87,11 +91,23 @@ export default class OrderConfigManagerDetailsComponent extends Component {
87
91
  @task *deleteConfig() {
88
92
  try {
89
93
  yield this.config.destroyRecord();
94
+ this.notifications.success(`Order config ${this.config.name} was deleted.`);
95
+
90
96
  if (typeof this.args.onConfigDeleted === 'function') {
91
- this.args.onConfigDeleted(this.config);
97
+ this.args.onConfigDeleted();
92
98
  }
93
99
  } catch (error) {
94
100
  this.notifications.serverError(error);
95
101
  }
96
102
  }
103
+
104
+ /**
105
+ * Handle change of config.
106
+ *
107
+ * @param {OrderConfigModel} newConfig
108
+ * @memberof OrderConfigManagerDetailsComponent
109
+ */
110
+ changeConfig(newConfig) {
111
+ this.config = newConfig;
112
+ }
97
113
  }
@@ -20,6 +20,7 @@
20
20
  this.tab.component
21
21
  configManagerContext=this.configManagerContext
22
22
  config=this.currentConfig
23
+ allConfigs=this.configs
23
24
  context=this.context
24
25
  contextModel=this.contextModel
25
26
  tabOptions=this.tab
@@ -31,5 +32,7 @@
31
32
  )
32
33
  onTabChanged=this.onTabChanged
33
34
  onClickCreateOrderConfig=this.createNewOrderConfig
35
+ childTaskRunning=this.childTaskRunning
36
+ configManagerContext=this.configManagerContext
34
37
  )
35
38
  }}
@@ -31,6 +31,7 @@ export default class OrderConfigManagerComponent extends Component {
31
31
  @tracked context;
32
32
  @tracked contextModel;
33
33
  @tracked ready = false;
34
+ @tracked childTaskRunning = false;
34
35
 
35
36
  /**
36
37
  * Returns the array of tabs available for the panel.
@@ -62,11 +63,36 @@ export default class OrderConfigManagerComponent extends Component {
62
63
 
63
64
  this.context = context;
64
65
  this.contextModel = contextModel;
65
- this.configManagerContext = configManagerContext.create();
66
+ this.configManagerContext = this.#createManagerContext();
66
67
  this.tab = findActiveTab(this.tabs, tab);
67
68
  this.loadOrderConfigs.perform();
68
69
  }
69
70
 
71
+ /**
72
+ * Creates a contextual object for the order config manager.
73
+ */
74
+ #createManagerContext() {
75
+ const component = this;
76
+ const ctxmc = configManagerContext.create();
77
+ ctxmc.loadOrderConfigs = component.loadOrderConfigs;
78
+ ctxmc.createNewOrderConfig = component.createNewOrderConfig;
79
+ ctxmc.selectConfig = component.selectConfig;
80
+ ctxmc.unready = function () {
81
+ component.ready = false;
82
+ };
83
+ ctxmc.ready = function () {
84
+ component.ready = true;
85
+ };
86
+ ctxmc.childTaskStarted = function () {
87
+ component.childTaskRunning = true;
88
+ };
89
+ ctxmc.childTaskEnded = function () {
90
+ component.childTaskRunning = false;
91
+ };
92
+
93
+ return ctxmc;
94
+ }
95
+
70
96
  /**
71
97
  * Loads all available order configs asynchronously.
72
98
  *
@@ -81,20 +107,8 @@ export default class OrderConfigManagerComponent extends Component {
81
107
  this.configs = yield this.store.findAll('order-config').then(Array.from);
82
108
 
83
109
  let currentConfig;
84
- let initialOrderConfig = this.args.orderConfig;
85
110
  if (isArray(this.configs) && this.configs.length > 0) {
86
- if (initialOrderConfig) {
87
- currentConfig = this.configs.find((config) => {
88
- if (isModel(initialOrderConfig)) {
89
- return config.id === initialOrderConfig.id;
90
- }
91
-
92
- if (typeof initialOrderConfig === 'string') {
93
- return config.id === initialOrderConfig;
94
- }
95
- });
96
- }
97
-
111
+ currentConfig = this.configs.find((_) => _.key === 'transport');
98
112
  if (!currentConfig) {
99
113
  currentConfig = this.configs[0];
100
114
  }
@@ -208,7 +222,6 @@ export default class OrderConfigManagerComponent extends Component {
208
222
  * in 'contextComponentCallback'.
209
223
  */
210
224
  @action onConfigDeleting() {
211
- this.selectConfig(null);
212
225
  this.configManagerContext.trigger('onConfigDeleting');
213
226
  contextComponentCallback(this, 'onConfigDeleting', ...arguments);
214
227
  }
@@ -82,10 +82,11 @@
82
82
  <div class="flex flex-col items-center justify-center h-40">
83
83
  <h4 class="text-lg text-gray-400 mb-4">{{t "fleet-ops.component.order-config-manager.select-order-config-to-start"}}</h4>
84
84
  <Button
85
- @type="link"
85
+ @type="primary"
86
86
  @text={{t "fleet-ops.component.order-config-manager.new-order-config"}}
87
87
  @onClick={{Context.onClickCreateOrderConfig}}
88
88
  @permission="fleet-ops create order-config"
89
+ @icon="plus"
89
90
  class="text-blue-400"
90
91
  />
91
92
  </div>
package/composer.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetbase/fleetops-api",
3
- "version": "0.6.15",
3
+ "version": "0.6.16",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "keywords": [
6
6
  "fleetbase-extension",
package/extension.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "Fleet-Ops",
3
- "version": "0.6.15",
3
+ "version": "0.6.16",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "repository": "https://github.com/fleetbase/fleetops",
6
6
  "license": "AGPL-3.0-or-later",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fleetbase/fleetops-engine",
3
- "version": "0.6.15",
3
+ "version": "0.6.16",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "fleetbase": {
6
6
  "route": "fleet-ops"
@@ -61,7 +61,7 @@ class OrderConfigController extends FleetOpsController
61
61
  }
62
62
 
63
63
  // `core_service` order configs cannot be deleted
64
- if ($orderConfig->core_service) {
64
+ if ($orderConfig->core_service === 1) {
65
65
  return response()->error('Core service order config\'s cannot be deleted.');
66
66
  }
67
67
 
@@ -72,5 +72,7 @@ class OrderConfigController extends FleetOpsController
72
72
 
73
73
  return new $this->resource($orderConfig);
74
74
  }
75
+
76
+ return response()->error('Unable to delete order config.');
75
77
  }
76
78
  }
@@ -23,7 +23,7 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
23
23
  */
24
24
  $router->group(['prefix' => 'v1', 'middleware' => ['fleetbase.api', Fleetbase\FleetOps\Http\Middleware\TransformLocationMiddleware::class], 'namespace' => 'Api\v1'], function ($router) {
25
25
  // drivers routes
26
- $router->group(['prefix' => 'drivers', 'middleware' => [Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]], function () use ($router) {
26
+ $router->group(['prefix' => 'drivers', 'middleware' => []], function () use ($router) {
27
27
  $router->post('register-device', 'DriverController@registerDevice');
28
28
  $router->post('login-with-sms', 'DriverController@loginWithPhone');
29
29
  $router->post('verify-code', 'DriverController@verifyCode');
@@ -74,7 +74,7 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
74
74
  $router->delete('{id}', 'FuelReportController@delete');
75
75
  });
76
76
  // orders routes
77
- $router->group(['prefix' => 'orders', 'middleware' => [Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]], function () use ($router) {
77
+ $router->group(['prefix' => 'orders', 'middleware' => []], function () use ($router) {
78
78
  $router->post('/', 'OrderController@create');
79
79
  $router->get('/', 'OrderController@query');
80
80
  $router->get('{id}', 'OrderController@find');
@@ -251,8 +251,8 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
251
251
  $router->fleetbaseRoutes(
252
252
  'contacts',
253
253
  function ($router, $controller) {
254
- $router->match(['get', 'post'], 'export', $controller('export'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
255
- $router->post('import', $controller('import'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
254
+ $router->match(['get', 'post'], 'export', $controller('export'));
255
+ $router->post('import', $controller('import'));
256
256
  $router->get('facilitators/{id}', $controller('getAsFacilitator'));
257
257
  $router->get('customers/{id}', $controller('getAsCustomer'));
258
258
  $router->delete('bulk-delete', $controller('bulkDelete'));
@@ -261,11 +261,11 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
261
261
  $router->fleetbaseRoutes(
262
262
  'drivers',
263
263
  function ($router, $controller) {
264
- $router->get('statuses', $controller('statuses'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
265
- $router->get('avatars', $controller('avatars'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
266
- $router->match(['get', 'post'], 'export', $controller('export'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
264
+ $router->get('statuses', $controller('statuses'));
265
+ $router->get('avatars', $controller('avatars'));
266
+ $router->match(['get', 'post'], 'export', $controller('export'));
267
267
  $router->delete('bulk-delete', $controller('bulkDelete'));
268
- $router->post('import', $controller('import'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
268
+ $router->post('import', $controller('import'));
269
269
  }
270
270
  );
271
271
  $router->fleetbaseRoutes('entities');
@@ -276,31 +276,31 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
276
276
  $router->post('remove-driver', $controller('removeDriver'));
277
277
  $router->post('assign-vehicle', $controller('assignVehicle'));
278
278
  $router->post('remove-vehicle', $controller('removeVehicle'));
279
- $router->match(['get', 'post'], 'export', $controller('export'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
280
- $router->post('import', $controller('import'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
279
+ $router->match(['get', 'post'], 'export', $controller('export'));
280
+ $router->post('import', $controller('import'));
281
281
  $router->delete('bulk-delete', $controller('bulkDelete'));
282
282
  }
283
283
  );
284
284
  $router->fleetbaseRoutes(
285
285
  'fuel-reports',
286
286
  function ($router, $controller) {
287
- $router->match(['get', 'post'], 'export', $controller('export'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
288
- $router->post('import', $controller('import'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
287
+ $router->match(['get', 'post'], 'export', $controller('export'));
288
+ $router->post('import', $controller('import'));
289
289
  $router->delete('bulk-delete', $controller('bulkDelete'));
290
290
  }
291
291
  );
292
292
  $router->fleetbaseRoutes(
293
293
  'issues',
294
294
  function ($router, $controller) {
295
- $router->match(['get', 'post'], 'export', $controller('export'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
296
- $router->post('import', $controller('import'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
295
+ $router->match(['get', 'post'], 'export', $controller('export'));
296
+ $router->post('import', $controller('import'));
297
297
  $router->delete('bulk-delete', $controller('bulkDelete'));
298
298
  }
299
299
  );
300
300
  $router->fleetbaseRoutes(
301
301
  'integrated-vendors',
302
302
  function ($router, $controller) {
303
- $router->get('supported', $controller('getSupported'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
303
+ $router->get('supported', $controller('getSupported'));
304
304
  $router->delete('bulk-delete', $controller('bulkDelete'));
305
305
  }
306
306
  );
@@ -309,12 +309,12 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
309
309
  function ($router, $controller) {
310
310
  $router->get('default-config', $controller('getDefaultOrderConfig'));
311
311
  $router->get('search', $controller('search'));
312
- $router->get('statuses', $controller('statuses'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
312
+ $router->get('statuses', $controller('statuses'));
313
313
  $router->get('types', $controller('types'));
314
314
  $router->get('label/{id}', $controller('label'));
315
- $router->get('next-activity/{id}', $controller('nextActivity'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
316
- $router->get('{id}/tracker', 'OrderController@trackerInfo')->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
317
- $router->get('{id}/eta', 'OrderController@waypointEtas')->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
315
+ $router->get('next-activity/{id}', $controller('nextActivity'));
316
+ $router->get('{id}/tracker', 'OrderController@trackerInfo');
317
+ $router->get('{id}/eta', 'OrderController@waypointEtas');
318
318
  $router->post('process-imports', $controller('importFromFiles'));
319
319
  $router->patch('route/{id}', $controller('editOrderRoute'));
320
320
  $router->patch('update-activity/{id}', $controller('updateActivity'));
@@ -326,7 +326,7 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
326
326
  $router->patch('dispatch', $controller('dispatchOrder'));
327
327
  $router->patch('start', $controller('start'));
328
328
  $router->delete('bulk-delete', $controller('bulkDelete'));
329
- $router->match(['get', 'post'], 'export', $controller('export'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
329
+ $router->match(['get', 'post'], 'export', $controller('export'));
330
330
  }
331
331
  );
332
332
  $router->fleetbaseRoutes('order-configs');
@@ -334,12 +334,12 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
334
334
  $router->fleetbaseRoutes(
335
335
  'places',
336
336
  function ($router, $controller) {
337
- $router->get('search', $controller('search'))->middleware(['cache.headers:private;max_age=3600', Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
338
- $router->get('lookup', $controller('geocode'))->middleware(['cache.headers:private;max_age=3600', Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
337
+ $router->get('search', $controller('search'))->middleware(['cache.headers:private;max_age=3600']);
338
+ $router->get('lookup', $controller('geocode'))->middleware(['cache.headers:private;max_age=3600']);
339
339
  $router->get('avatars', $controller('avatars'));
340
340
  $router->match(['get', 'post'], 'export', $controller('export'));
341
341
  $router->delete('bulk-delete', $controller('bulkDelete'));
342
- $router->post('import', $controller('import'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
342
+ $router->post('import', $controller('import'));
343
343
  }
344
344
  );
345
345
  $router->fleetbaseRoutes('proofs');
@@ -348,7 +348,7 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
348
348
  $router->fleetbaseRoutes(
349
349
  'service-areas',
350
350
  function ($router, $controller) {
351
- $router->match(['get', 'post'], 'export', $controller('export'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
351
+ $router->match(['get', 'post'], 'export', $controller('export'));
352
352
  $router->delete('bulk-delete', $controller('bulkDelete'));
353
353
  }
354
354
  );
@@ -366,8 +366,8 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
366
366
  function ($router, $controller) {
367
367
  $router->delete('bulk-delete', $controller('bulkDelete'));
368
368
  $router->get('for-route', $controller('getServicesForRoute'));
369
- $router->match(['get', 'post'], 'export', $controller('export'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
370
- $router->get('for-route', $controller('getServicesForRoute'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
369
+ $router->match(['get', 'post'], 'export', $controller('export'));
370
+ $router->get('for-route', $controller('getServicesForRoute'));
371
371
  }
372
372
  );
373
373
  $router->fleetbaseRoutes('tracking-numbers');
@@ -375,10 +375,10 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
375
375
  $router->fleetbaseRoutes(
376
376
  'vehicles',
377
377
  function ($router, $controller) {
378
- $router->get('statuses', $controller('statuses'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
379
- $router->get('avatars', $controller('avatars'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
380
- $router->match(['get', 'post'], 'export', $controller('export'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
381
- $router->post('import', $controller('import'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
378
+ $router->get('statuses', $controller('statuses'));
379
+ $router->get('avatars', $controller('avatars'));
380
+ $router->match(['get', 'post'], 'export', $controller('export'));
381
+ $router->post('import', $controller('import'));
382
382
  $router->delete('bulk-delete', $controller('bulkDelete'));
383
383
  }
384
384
  );
@@ -386,14 +386,14 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
386
386
  $router->fleetbaseRoutes(
387
387
  'vendors',
388
388
  function ($router, $controller) {
389
- $router->get('statuses', $controller('statuses'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
390
- $router->match(['get', 'post'], 'export', $controller('export'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
389
+ $router->get('statuses', $controller('statuses'));
390
+ $router->match(['get', 'post'], 'export', $controller('export'));
391
391
  $router->get('facilitators/{id}', $controller('getAsFacilitator'));
392
392
  $router->get('customers/{id}', $controller('getAsCustomer'));
393
393
  $router->post('{id}/assign-driver', $controller('assignDriver'));
394
394
  $router->post('{id}/remove-driver', $controller('removeDriver'));
395
395
  $router->delete('bulk-delete', $controller('bulkDelete'));
396
- $router->post('import', $controller('import'))->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
396
+ $router->post('import', $controller('import'));
397
397
  }
398
398
  );
399
399
  $router->group(
@@ -417,7 +417,7 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
417
417
  }
418
418
  );
419
419
  $router->group(
420
- ['prefix' => 'geocoder', ['middleware' => [Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]]],
420
+ ['prefix' => 'geocoder', ['middleware' => []]],
421
421
  function ($router) {
422
422
  $router->get('reverse', 'GeocoderController@reverse');
423
423
  $router->get('query', 'GeocoderController@geocode');
@@ -427,12 +427,12 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
427
427
  ['prefix' => 'fleet-ops'],
428
428
  function ($router) {
429
429
  $router->group(
430
- ['prefix' => 'payments', ['middleware' => [Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]]],
430
+ ['prefix' => 'payments', ['middleware' => []]],
431
431
  function () use ($router) {
432
- $router->post('stripe-account', 'PaymentController@getStripeAccount')->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
433
- $router->post('stripe-account-session', 'PaymentController@getStripeAccountSession')->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
434
- $router->get('has-stripe-connect-account', 'PaymentController@hasStripeConnectAccount')->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
435
- $router->get('payments-received', 'PaymentController@getCompanyReceivedPayments')->middleware([Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]);
432
+ $router->post('stripe-account', 'PaymentController@getStripeAccount');
433
+ $router->post('stripe-account-session', 'PaymentController@getStripeAccountSession');
434
+ $router->get('has-stripe-connect-account', 'PaymentController@hasStripeConnectAccount');
435
+ $router->get('payments-received', 'PaymentController@getCompanyReceivedPayments');
436
436
  }
437
437
  );
438
438
 
@@ -455,7 +455,7 @@ Route::prefix(config('fleetops.api.routing.prefix', null))->namespace('Fleetbase
455
455
  }
456
456
  );
457
457
  $router->group(
458
- ['prefix' => 'settings', 'middleware' => [Spatie\ResponseCache\Middlewares\DoNotCacheResponse::class]],
458
+ ['prefix' => 'settings', 'middleware' => []],
459
459
  function ($router) {
460
460
  $router->get('customer-payments-config', 'SettingController@getCustomerPortalPaymentConfig');
461
461
  $router->post('customer-payments-config', 'SettingController@saveCustomerPortalPaymentConfig');