@fleetbase/fleetops-engine 0.4.4 → 0.4.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.
Files changed (103) hide show
  1. package/README.md +1 -1
  2. package/addon/components/contact-form-panel.hbs +1 -0
  3. package/addon/components/driver-panel.hbs +1 -0
  4. package/addon/components/edit-order-route-panel.hbs +1 -0
  5. package/addon/components/fleet-form-panel.hbs +1 -0
  6. package/addon/components/fleet-panel.hbs +1 -0
  7. package/addon/components/fuel-report-form-panel.hbs +1 -0
  8. package/addon/components/fuel-report-panel.hbs +1 -0
  9. package/addon/components/issue-form-panel.hbs +1 -0
  10. package/addon/components/issue-panel.hbs +1 -0
  11. package/addon/components/place-form-panel.hbs +1 -0
  12. package/addon/components/place-panel.hbs +1 -0
  13. package/addon/components/vehicle-form-panel.hbs +1 -0
  14. package/addon/components/vehicle-panel.hbs +1 -0
  15. package/addon/components/vendor-form-panel.hbs +1 -0
  16. package/addon/components/vendor-panel.hbs +1 -0
  17. package/addon/components/widget/fleet-ops-key-metrics.hbs +19 -0
  18. package/addon/components/widget/fleet-ops-key-metrics.js +92 -0
  19. package/addon/controllers/management/contacts/index.js +3 -3
  20. package/addon/controllers/operations/orders/index.js +1 -1
  21. package/addon/engine.js +18 -12
  22. package/addon/styles/fleetops-engine.css +2 -2
  23. package/app/components/widget/{issues.js → fleet-ops-key-metrics.js} +1 -1
  24. package/composer.json +6 -6
  25. package/extension.json +1 -1
  26. package/package.json +3 -4
  27. package/server/src/Casts/MultiPolygon.php +3 -3
  28. package/server/src/Casts/Point.php +8 -4
  29. package/server/src/Casts/Polygon.php +3 -3
  30. package/server/src/Console/Commands/DispatchAdhocOrders.php +1 -1
  31. package/server/src/Events/DriverSimulatedLocationChanged.php +1 -1
  32. package/server/src/Flow/Activity.php +12 -0
  33. package/server/src/Flow/Config.php +7 -0
  34. package/server/src/Flow/Logic.php +7 -0
  35. package/server/src/Http/Controllers/Api/v1/DriverController.php +2 -1
  36. package/server/src/Http/Controllers/Api/v1/OrderController.php +3 -3
  37. package/server/src/Http/Controllers/Api/v1/PlaceController.php +1 -1
  38. package/server/src/Http/Controllers/Api/v1/ServiceAreaController.php +1 -1
  39. package/server/src/Http/Controllers/Api/v1/TrackingStatusController.php +1 -1
  40. package/server/src/Http/Controllers/Api/v1/ZoneController.php +1 -1
  41. package/server/src/Http/Controllers/Internal/v1/DriverController.php +1 -1
  42. package/server/src/Http/Controllers/Internal/v1/GeocoderController.php +2 -2
  43. package/server/src/Http/Controllers/Internal/v1/MetricsController.php +6 -50
  44. package/server/src/Http/Controllers/Internal/v1/OrderController.php +2 -2
  45. package/server/src/Http/Controllers/Internal/v1/PlaceController.php +1 -1
  46. package/server/src/Http/Filter/PlaceFilter.php +1 -1
  47. package/server/src/Http/Resources/v1/Driver.php +1 -1
  48. package/server/src/Http/Resources/v1/FuelReport.php +1 -1
  49. package/server/src/Http/Resources/v1/Issue.php +1 -1
  50. package/server/src/Http/Resources/v1/Payload.php +1 -0
  51. package/server/src/Http/Resources/v1/Place.php +1 -1
  52. package/server/src/Http/Resources/v1/TrackingStatus.php +1 -1
  53. package/server/src/Http/Resources/v1/Vehicle.php +1 -1
  54. package/server/src/Http/Resources/v1/VehicleWithoutDriver.php +1 -1
  55. package/server/src/Http/Resources/v1/Waypoint.php +2 -4
  56. package/server/src/Integrations/Lalamove/LalamoveDeliveryStop.php +2 -2
  57. package/server/src/Jobs/SimulateWaypointReached.php +2 -2
  58. package/server/src/Models/Contact.php +6 -18
  59. package/server/src/Models/Driver.php +7 -19
  60. package/server/src/Models/Fleet.php +6 -25
  61. package/server/src/Models/FuelReport.php +1 -1
  62. package/server/src/Models/Issue.php +1 -1
  63. package/server/src/Models/Order.php +15 -19
  64. package/server/src/Models/Payload.php +7 -7
  65. package/server/src/Models/Place.php +14 -14
  66. package/server/src/Models/Position.php +1 -1
  67. package/server/src/Models/ServiceArea.php +14 -14
  68. package/server/src/Models/TrackingNumber.php +1 -1
  69. package/server/src/Models/TrackingStatus.php +1 -1
  70. package/server/src/Models/Vehicle.php +7 -19
  71. package/server/src/Models/VehicleDeviceEvent.php +1 -1
  72. package/server/src/Models/Vendor.php +8 -25
  73. package/server/src/Models/Waypoint.php +6 -6
  74. package/server/src/Models/Zone.php +8 -8
  75. package/server/src/Observers/DriverObserver.php +1 -1
  76. package/server/src/Observers/TrackingNumberObserver.php +1 -1
  77. package/server/src/Rules/ResolvablePoint.php +1 -1
  78. package/server/src/Support/Encoding/Polyline.php +1 -1
  79. package/server/src/Support/OSRM.php +1 -1
  80. package/server/src/Support/Utils.php +60 -60
  81. package/server/src/Traits/HasTrackingNumber.php +3 -3
  82. package/server/src/routes.php +1 -4
  83. package/translations/en-us.yaml +1 -0
  84. package/addon/components/widget/fleet-ops-quickstart.hbs +0 -40
  85. package/addon/components/widget/fleet-ops-quickstart.js +0 -59
  86. package/addon/components/widget/issues.hbs +0 -1
  87. package/addon/components/widget/key-metrics.hbs +0 -121
  88. package/addon/components/widget/key-metrics.js +0 -46
  89. package/addon/components/widget/live-order-map.hbs +0 -59
  90. package/addon/components/widget/live-order-map.js +0 -11
  91. package/addon/components/widget/recent-orders.hbs +0 -35
  92. package/addon/components/widget/recent-orders.js +0 -24
  93. package/addon/components/widget/transaction-earnings.hbs +0 -1
  94. package/addon/components/widget/transactions.hbs +0 -36
  95. package/addon/components/widget/transactions.js +0 -29
  96. package/addon/components/widget/weekly-orders.hbs +0 -1
  97. package/addon/components/widget/weekly-orders.js +0 -3
  98. package/app/components/widget/key-metrics.js +0 -1
  99. package/app/components/widget/live-order-map.js +0 -1
  100. package/app/components/widget/recent-orders.js +0 -1
  101. package/app/components/widget/transaction-earnings.js +0 -1
  102. package/app/components/widget/transactions.js +0 -1
  103. package/app/components/widget/weekly-orders.js +0 -1
package/README.md CHANGED
@@ -13,7 +13,7 @@ This monorepo contains both the frontend and backend components of the FleetOps
13
13
 
14
14
  ### Requirements
15
15
 
16
- * PHP 7.3.0 or above
16
+ * PHP 8.0 or above
17
17
  * Ember.js v4.8 or above
18
18
  * Ember CLI v4.8 or above
19
19
  * Node.js v18 or above
@@ -103,5 +103,6 @@
103
103
  </div>
104
104
  </InputGroup>
105
105
  </div>
106
+ <Spacer @height="300px" />
106
107
  </Overlay::Body>
107
108
  </Overlay>
@@ -79,5 +79,6 @@
79
79
  <div class="tab-content tab-{{this.tab.slug}}">
80
80
  {{component this.tab.component driver=this.driver tabOptions=this.tab options=this.tab.componentParams}}
81
81
  </div>
82
+ <Spacer @height="300px" />
82
83
  </Overlay::Body>
83
84
  </Overlay>
@@ -178,5 +178,6 @@
178
178
  </div>
179
179
  {{/if}}
180
180
  </div>
181
+ <Spacer @height="300px" />
181
182
  </Overlay::Body>
182
183
  </Overlay>
@@ -99,5 +99,6 @@
99
99
  </div>
100
100
  </div>
101
101
  {{yield}}
102
+ <Spacer @height="300px" />
102
103
  </Overlay::Body>
103
104
  </Overlay>
@@ -20,5 +20,6 @@
20
20
  <div class="tab-content tab-{{this.tab.slug}}">
21
21
  {{component this.tab.component fleet=this.fleet tabOptions=this.tab options=this.tab.componentParams}}
22
22
  </div>
23
+ <Spacer @height="300px" />
23
24
  </Overlay::Body>
24
25
  </Overlay>
@@ -116,5 +116,6 @@
116
116
  <CoordinatesInput @value={{this.fuelReport.location}} @onChange={{fn (mut this.fuelReport.location)}} />
117
117
  </InputGroup>
118
118
  </div>
119
+ <Spacer @height="300px" />
119
120
  </Overlay::Body>
120
121
  </Overlay>
@@ -29,5 +29,6 @@
29
29
  <div class="tab-content tab-{{this.tab.slug}}">
30
30
  {{component this.tab.component fuelReport=this.fuelReport tabOptions=this.tab options=this.tab.componentParams}}
31
31
  </div>
32
+ <Spacer @height="300px" />
32
33
  </Overlay::Body>
33
34
  </Overlay>
@@ -172,5 +172,6 @@
172
172
  <CoordinatesInput @value={{this.issue.location}} @onChange={{fn (mut this.issue.location)}} />
173
173
  </InputGroup>
174
174
  </div>
175
+ <Spacer @height="300px" />
175
176
  </Overlay::Body>
176
177
  </Overlay>
@@ -29,5 +29,6 @@
29
29
  <div class="tab-content tab-{{this.tab.slug}}">
30
30
  {{component this.tab.component issue=this.issue tabOptions=this.tab options=this.tab.componentParams}}
31
31
  </div>
32
+ <Spacer @height="300px" />
32
33
  </Overlay::Body>
33
34
  </Overlay>
@@ -56,5 +56,6 @@
56
56
  <PhoneInput @value={{this.place.phone}} @autocomplete="nope" @onInput={{this.phone}} class="form-input w-full" />
57
57
  </InputGroup>
58
58
  </div>
59
+ <Spacer @height="300px" />
59
60
  </Overlay::Body>
60
61
  </Overlay>
@@ -29,5 +29,6 @@
29
29
  <div class="tab-content tab-{{this.tab.slug}}">
30
30
  {{component this.tab.component place=this.place tabOptions=this.tab options=this.tab.componentParams}}
31
31
  </div>
32
+ <Spacer @height="300px" />
32
33
  </Overlay::Body>
33
34
  </Overlay>
@@ -180,5 +180,6 @@
180
180
  </div>
181
181
  </ContentPanel>
182
182
  </div>
183
+ <Spacer @height="300px" />
183
184
  </Overlay::Body>
184
185
  </Overlay>
@@ -74,5 +74,6 @@
74
74
  <div class="tab-content tab-{{this.tab.slug}}">
75
75
  {{component this.tab.component vehicle=this.vehicle tabOptions=this.tab options=this.tab.componentParams}}
76
76
  </div>
77
+ <Spacer @height="300px" />
77
78
  </Overlay::Body>
78
79
  </Overlay>
@@ -87,5 +87,6 @@
87
87
  @onVendorChanged={{this.onVendorChanged}}
88
88
  />
89
89
  {{/if}}
90
+ <Spacer @height="300px" />
90
91
  </Overlay::Body>
91
92
  </Overlay>
@@ -71,5 +71,6 @@
71
71
  <div class="tab-content tab-{{this.tab.slug}}">
72
72
  {{component this.tab.component vendor=this.vendor tabOptions=this.tab params=this.tab.componentParams}}
73
73
  </div>
74
+ <Spacer @height="300px" />
74
75
  </Overlay::Body>
75
76
  </Overlay>
@@ -0,0 +1,19 @@
1
+ <div class="fleet-ops-key-metrics" ...attributes>
2
+ <div class="flex flex-col">
3
+ <div class="flex flex-row items-center justify-between px-4 py-2 border dark:border-gray-700 border-gray-200 dark:bg-gray-800 bg-gray-50 rounded-lg shadow-sm">
4
+ <span class="text-base font-bold text-black dark:text-gray-100">{{t "fleet-ops.component.widget.key-metrics.title"}}</span>
5
+ </div>
6
+
7
+ <div class="mt-4">
8
+ {{#if this.getDashboardMetrics.isRunning}}
9
+ <Spinner />
10
+ {{else}}
11
+ <div class="grid grid-cols-2 lg:grid-cols-12 gap-4">
12
+ {{#each-in this.metrics as |title options|}}
13
+ <Dashboard::Count @title={{smart-humanize title}} @options={{options}} />
14
+ {{/each-in}}
15
+ </div>
16
+ {{/if}}
17
+ </div>
18
+ </div>
19
+ </div>
@@ -0,0 +1,92 @@
1
+ import Component from '@glimmer/component';
2
+ import { tracked } from '@glimmer/tracking';
3
+ import { inject as service } from '@ember/service';
4
+ import { task } from 'ember-concurrency-decorators';
5
+
6
+ export default class WidgetFleetOpsKeyMetricsComponent extends Component {
7
+ /**
8
+ * The widget ID to use for registering.
9
+ *
10
+ * @memberof WidgetFleetOpsKeyMetricsComponent
11
+ */
12
+ static widgetId = 'fleet-ops-key-metrics-widget';
13
+
14
+ /**
15
+ * Inject the fetch service.
16
+ *
17
+ * @memberof WidgetKeyMetricsComponent
18
+ */
19
+ @service fetch;
20
+
21
+ /**
22
+ * Property for loading metrics to.
23
+ *
24
+ * @memberof WidgetKeyMetricsComponent
25
+ */
26
+ @tracked metrics = {};
27
+
28
+ /**
29
+ * Creates an instance of WidgetKeyMetricsComponent.
30
+ * @memberof WidgetKeyMetricsComponent
31
+ */
32
+ constructor() {
33
+ super(...arguments);
34
+ this.getDashboardMetrics.perform();
35
+ }
36
+
37
+ /**
38
+ * Task which fetches key metrics.
39
+ *
40
+ * @memberof WidgetKeyMetricsComponent
41
+ */
42
+ @task *getDashboardMetrics() {
43
+ this.metrics = yield this.fetch.get('fleet-ops/metrics').then((response) => {
44
+ return this.createMetricsMapFromResponse(response);
45
+ });
46
+ }
47
+
48
+ /**
49
+ * Creates a map of metrics from the response data. This method organizes the metrics data into a more usable format.
50
+ *
51
+ * @param {Object} metrics - The metrics object fetched from the server.
52
+ * @returns {Object} A map of metrics where each key is a metric name and its value is an object of metric options.
53
+ * @memberof WidgetKeyMetricsComponent
54
+ */
55
+ createMetricsMapFromResponse(metrics = {}) {
56
+ const keys = Object.keys(metrics);
57
+ const map = {};
58
+
59
+ for (let i = 0; i < keys.length; i++) {
60
+ const key = keys[i];
61
+ map[key] = this.createMetricOptionsHash(key, metrics[key]);
62
+ }
63
+
64
+ return map;
65
+ }
66
+
67
+ /**
68
+ * Creates a hash of options for a given metric. Depending on the metric key, it assigns a specific format.
69
+ *
70
+ * @param {string} key - The key representing the specific metric.
71
+ * @param {number} value - The value of the metric.
72
+ * @returns {Object} An object containing the metric value and its format.
73
+ * @memberof WidgetKeyMetricsComponent
74
+ */
75
+ createMetricOptionsHash(key, value) {
76
+ const options = { value };
77
+
78
+ if (key === 'earnings') {
79
+ options.format = 'money';
80
+ }
81
+
82
+ if (key === 'fuel_costs') {
83
+ options.format = 'money';
84
+ }
85
+
86
+ if (key === 'total_distance_traveled') {
87
+ options.format = 'meters';
88
+ }
89
+
90
+ return options;
91
+ }
92
+ }
@@ -327,7 +327,7 @@ export default class ManagementContactsIndexController extends BaseController {
327
327
  * @void
328
328
  */
329
329
  @action viewContact(contact) {
330
- return this.transitionToRoute('management.contact.index.details', contact);
330
+ return this.transitionToRoute('management.contacts.index.details', contact);
331
331
  }
332
332
 
333
333
  /**
@@ -336,7 +336,7 @@ export default class ManagementContactsIndexController extends BaseController {
336
336
  * @void
337
337
  */
338
338
  @action createContact() {
339
- return this.transitionToRoute('management.contact.index.new');
339
+ return this.transitionToRoute('management.contacts.index.new');
340
340
  }
341
341
 
342
342
  /**
@@ -346,7 +346,7 @@ export default class ManagementContactsIndexController extends BaseController {
346
346
  * @void
347
347
  */
348
348
  @action editContact(contact) {
349
- return this.transitionToRoute('management.contact.index.edit', contact);
349
+ return this.transitionToRoute('management.contacts.index.edit', contact);
350
350
  }
351
351
 
352
352
  /**
@@ -949,7 +949,7 @@ export default class OperationsOrdersIndexController extends BaseController {
949
949
  * @memberof OperationsOrdersIndexController
950
950
  */
951
951
  @action fetchActiveOrdersCount() {
952
- this.fetch.get('fleet-ops/metrics/all', { discover: ['orders_in_progress'] }).then((response) => {
952
+ this.fetch.get('fleet-ops/metrics', { discover: ['orders_in_progress'] }).then((response) => {
953
953
  this.activeOrdersCount = response.orders_in_progress;
954
954
  });
955
955
  }
package/addon/engine.js CHANGED
@@ -5,6 +5,7 @@ import config from './config/environment';
5
5
  import services from '@fleetbase/ember-core/exports/services';
6
6
  import AdminVisibilityControlsComponent from './components/admin/visibility-controls';
7
7
  import NavigatorAppConfigComponent from './components/admin/navigator-app';
8
+ import FleetOpsKeyMetricsWidget from './components/widget/fleet-ops-key-metrics';
8
9
 
9
10
  const { modulePrefix } = config;
10
11
  const externalRoutes = ['console', 'extensions'];
@@ -40,20 +41,25 @@ export default class FleetOpsEngine extends Engine {
40
41
  }
41
42
  );
42
43
 
43
- // create primary registry for engine
44
- universe.createRegistry('engine:fleet-ops');
44
+ // widgets for registry
45
+ const KeyMetricsWidgetDefinition = {
46
+ widgetId: 'fleet-ops-key-metrics-widget',
47
+ name: 'Fleet-Ops Metrics',
48
+ description: 'Key metrics from Fleet-Ops.',
49
+ icon: 'truck',
50
+ component: FleetOpsKeyMetricsWidget,
51
+ grid_options: { w: 12, h: 12, minW: 8, minH: 12 },
52
+ options: {
53
+ title: 'Fleet-Ops Metrics',
54
+ },
55
+ };
45
56
 
46
- // register the vehicle panel
47
- universe.createRegistry('component:vehicle-panel');
57
+ // register widgets
58
+ universe.registerDefaultDashboardWidgets([KeyMetricsWidgetDefinition]);
59
+ universe.registerDashboardWidgets([KeyMetricsWidgetDefinition]);
48
60
 
49
- // register the driver panel
50
- universe.createRegistry('component:driver-panel');
51
-
52
- // register vehicle context menu
53
- universe.createRegistry('contextmenu:vehicle');
54
-
55
- // register driver context menu
56
- universe.createRegistry('contextmenu:driver');
61
+ // create all registries necessary
62
+ universe.createRegistries(['engine:fleet-ops', 'component:vehicle-panel', 'component:driver-panel', 'contextmenu:vehicle', 'contextmenu:driver']);
57
63
  };
58
64
  }
59
65
 
@@ -51,12 +51,12 @@ body[data-theme='dark'] .scheduler-left-sidebar {
51
51
  --fleet-summary-nav-item-base-padding: 1.5rem;
52
52
  }
53
53
 
54
- .next-sidebar-panel-container.next-driver-listing > .next-sidebar-panel > .next-content-panel > .next-sidebar-panel-toggle,
54
+ .next-sidebar .next-sidebar-panel-container.next-driver-listing > .next-sidebar-panel > .next-content-panel > .next-sidebar-panel-toggle,
55
55
  .next-sidebar .next-sidebar-panel-container.next-fleet-summary > .next-sidebar-panel > .next-content-panel > .next-sidebar-panel-toggle {
56
56
  padding-left: 2rem;
57
57
  }
58
58
 
59
- .next-sidebar-panel-container.next-driver-listing > .next-sidebar-panel > .next-content-panel > .next-content-panel-body .next-nav-item,
59
+ .next-sidebar .next-sidebar-panel-container.next-driver-listing > .next-sidebar-panel > .next-content-panel > .next-content-panel-body .next-nav-item,
60
60
  .next-sidebar .next-sidebar-panel-container.next-driver-listing > .next-sidebar-panel > .next-content-panel > .next-sidebar-panel-body .next-nav-item.driver-nav-item {
61
61
  padding-left: 3.5rem;
62
62
  }
@@ -1 +1 @@
1
- export { default } from '@fleetbase/fleetops-engine/components/widget/issues';
1
+ export { default } from '@fleetbase/fleetops-engine/components/widget/fleet-ops-key-metrics';
package/composer.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetbase/fleetops-api",
3
- "version": "0.4.4",
3
+ "version": "0.4.6",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "keywords": [
6
6
  "fleetbase-extension",
@@ -21,15 +21,15 @@
21
21
  }
22
22
  ],
23
23
  "require": {
24
- "php": "^7.4|^8.0",
25
- "fleetbase/core-api": "^1.3.13",
24
+ "php": "^8.0",
25
+ "fleetbase/core-api": "^1.4.0",
26
26
  "barryvdh/laravel-dompdf": "^2.0",
27
27
  "brick/geo": "0.7.2",
28
28
  "cknow/laravel-money": "^7.1",
29
29
  "geocoder-php/google-maps-places-provider": "^1.4",
30
30
  "giggsey/libphonenumber-for-php": "^8.13",
31
31
  "league/geotools": "^1.1.0",
32
- "milon/barcode": "^9.0",
32
+ "milon/barcode": "^10.0",
33
33
  "php-http/guzzle7-adapter": "^1.0",
34
34
  "psr/http-factory-implementation": "*",
35
35
  "toin0u/geocoder-laravel": "^4.4",
@@ -37,8 +37,8 @@
37
37
  },
38
38
  "require-dev": {
39
39
  "friendsofphp/php-cs-fixer": "^3.34.1",
40
- "nunomaduro/collision": "^5.11.0|^6.4.0",
41
- "pestphp/pest": "^1.22.6",
40
+ "nunomaduro/collision": "^7.0",
41
+ "pestphp/pest": "^2.33.2",
42
42
  "phpstan/phpstan": "^1.10.38",
43
43
  "symfony/var-dumper": "^5.4.29"
44
44
  },
package/extension.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "Fleet-Ops",
3
- "version": "0.4.4",
3
+ "version": "0.4.6",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "repository": "https://github.com/fleetbase/fleetops",
6
6
  "license": "MIT",
package/package.json CHANGED
@@ -1,10 +1,9 @@
1
1
  {
2
2
  "name": "@fleetbase/fleetops-engine",
3
- "version": "0.4.4",
3
+ "version": "0.4.6",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "fleetbase": {
6
- "route": "fleet-ops",
7
- "dashboard": "int/v1/fleet-ops/dashboard"
6
+ "route": "fleet-ops"
8
7
  },
9
8
  "keywords": [
10
9
  "fleetbase-extension",
@@ -43,7 +42,7 @@
43
42
  },
44
43
  "dependencies": {
45
44
  "@babel/core": "^7.23.2",
46
- "@fleetbase/ember-core": "^0.2.1",
45
+ "@fleetbase/ember-core": "^0.2.4",
47
46
  "@fleetbase/ember-ui": "^0.2.10",
48
47
  "@fleetbase/fleetops-data": "^0.1.8",
49
48
  "@fleetbase/leaflet-routing-machine": "^3.2.16",
@@ -3,9 +3,9 @@
3
3
  namespace Fleetbase\FleetOps\Casts;
4
4
 
5
5
  use Fleetbase\FleetOps\Support\Utils;
6
- use Grimzy\LaravelMysqlSpatial\Eloquent\SpatialExpression;
7
- use Grimzy\LaravelMysqlSpatial\Types\GeometryInterface;
8
- use Grimzy\LaravelMysqlSpatial\Types\MultiPolygon as SpatialMultiPolygon;
6
+ use Fleetbase\LaravelMysqlSpatial\Eloquent\SpatialExpression;
7
+ use Fleetbase\LaravelMysqlSpatial\Types\GeometryInterface;
8
+ use Fleetbase\LaravelMysqlSpatial\Types\MultiPolygon as SpatialMultiPolygon;
9
9
  use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
10
10
 
11
11
  class MultiPolygon implements CastsAttributes
@@ -3,8 +3,8 @@
3
3
  namespace Fleetbase\FleetOps\Casts;
4
4
 
5
5
  use Fleetbase\FleetOps\Support\Utils;
6
- use Grimzy\LaravelMysqlSpatial\Eloquent\SpatialExpression;
7
- use Grimzy\LaravelMysqlSpatial\Types\GeometryInterface;
6
+ use Fleetbase\LaravelMysqlSpatial\Eloquent\SpatialExpression;
7
+ use Fleetbase\LaravelMysqlSpatial\Types\GeometryInterface;
8
8
  use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
9
9
  use Illuminate\Database\Query\Expression;
10
10
 
@@ -109,9 +109,13 @@ class Point implements CastsAttributes
109
109
  *
110
110
  * @return bool
111
111
  */
112
- public static function isRawPoint($data)
112
+ public static function isRawPoint($data): bool
113
113
  {
114
- return preg_match('/[\x00-\x1f]/', $data, $matches) === 1;
114
+ if (is_string($data)) {
115
+ return preg_match('/[\x00-\x1f]/', $data, $matches) === 1;
116
+ }
117
+
118
+ return false;
115
119
  }
116
120
 
117
121
  /**
@@ -3,9 +3,9 @@
3
3
  namespace Fleetbase\FleetOps\Casts;
4
4
 
5
5
  use Fleetbase\FleetOps\Support\Utils;
6
- use Grimzy\LaravelMysqlSpatial\Eloquent\SpatialExpression;
7
- use Grimzy\LaravelMysqlSpatial\Types\GeometryInterface;
8
- use Grimzy\LaravelMysqlSpatial\Types\Polygon as SpatialPolygon;
6
+ use Fleetbase\LaravelMysqlSpatial\Eloquent\SpatialExpression;
7
+ use Fleetbase\LaravelMysqlSpatial\Types\GeometryInterface;
8
+ use Fleetbase\LaravelMysqlSpatial\Types\Polygon as SpatialPolygon;
9
9
  use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
10
10
 
11
11
  class Polygon implements CastsAttributes
@@ -5,7 +5,7 @@ namespace Fleetbase\FleetOps\Console\Commands;
5
5
  use Fleetbase\FleetOps\Models\Driver;
6
6
  use Fleetbase\FleetOps\Models\Order;
7
7
  use Fleetbase\FleetOps\Support\Utils;
8
- use Grimzy\LaravelMysqlSpatial\Types\Point;
8
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
9
9
  use Illuminate\Console\Command;
10
10
  use Illuminate\Support\Carbon;
11
11
 
@@ -3,7 +3,7 @@
3
3
  namespace Fleetbase\FleetOps\Events;
4
4
 
5
5
  use Fleetbase\FleetOps\Models\Driver;
6
- use Grimzy\LaravelMysqlSpatial\Types\Point;
6
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
7
7
  use Illuminate\Broadcasting\Channel;
8
8
  use Illuminate\Broadcasting\InteractsWithSockets;
9
9
  use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
@@ -0,0 +1,12 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Flow;
4
+
5
+ use Fleetbase\Models\Model;
6
+
7
+ class Activity {
8
+ protected string $status;
9
+ protected string $code;
10
+ protected string $details;
11
+ protected Model $owner;
12
+ }
@@ -0,0 +1,7 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Flow;
4
+
5
+ class Config {
6
+
7
+ }
@@ -0,0 +1,7 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Flow;
4
+
5
+ class Logic {
6
+
7
+ }
@@ -17,6 +17,7 @@ use Fleetbase\FleetOps\Support\Utils;
17
17
  use Fleetbase\Http\Controllers\Controller;
18
18
  use Fleetbase\Http\Requests\SwitchOrganizationRequest;
19
19
  use Fleetbase\Http\Resources\Organization;
20
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
20
21
  use Fleetbase\Models\Company;
21
22
  use Fleetbase\Models\CompanyUser;
22
23
  use Fleetbase\Models\User;
@@ -24,7 +25,6 @@ use Fleetbase\Models\UserDevice;
24
25
  use Fleetbase\Models\VerificationCode;
25
26
  use Fleetbase\Support\Auth;
26
27
  use Geocoder\Laravel\Facades\Geocoder;
27
- use Grimzy\LaravelMysqlSpatial\Types\Point;
28
28
  use Illuminate\Http\Request;
29
29
  use Illuminate\Support\Arr;
30
30
  use Illuminate\Support\Carbon;
@@ -425,6 +425,7 @@ class DriverController extends Controller
425
425
  if (app()->bound('sentry')) {
426
426
  app('sentry')->captureException($e);
427
427
  }
428
+
428
429
  return response()->apiError('Unable to send SMS Verification code.');
429
430
  }
430
431
 
@@ -808,7 +808,7 @@ class OrderController extends Controller
808
808
  $driver->current_job_uuid = $order->uuid;
809
809
  $driver->save();
810
810
 
811
- /** @var \Grimzy\LaravelMysqlSpatial\Types\Point */
811
+ /** @var \Fleetbase\LaravelMysqlSpatial\Types\Point */
812
812
  $location = $order->getLastLocation();
813
813
 
814
814
  // set first destination for payload
@@ -890,7 +890,7 @@ class OrderController extends Controller
890
890
  return new OrderResource($order);
891
891
  }
892
892
 
893
- /** @var \Grimzy\LaravelMysqlSpatial\Types\Point */
893
+ /** @var \Fleetbase\LaravelMysqlSpatial\Types\Point */
894
894
  $location = $order->getLastLocation();
895
895
 
896
896
  // if is multi drop order and no current destination set it
@@ -1023,7 +1023,7 @@ class OrderController extends Controller
1023
1023
 
1024
1024
  $order->notifyCompleted();
1025
1025
 
1026
- /** @var \Grimzy\LaravelMysqlSpatial\Types\Point */
1026
+ /** @var \Fleetbase\LaravelMysqlSpatial\Types\Point */
1027
1027
  $location = $order->getLastLocation();
1028
1028
 
1029
1029
  $order->setStatus($activity['code']);
@@ -9,10 +9,10 @@ use Fleetbase\FleetOps\Http\Resources\v1\Place as PlaceResource;
9
9
  use Fleetbase\FleetOps\Models\Place;
10
10
  use Fleetbase\FleetOps\Support\Utils;
11
11
  use Fleetbase\Http\Controllers\Controller;
12
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
12
13
  use Geocoder\Laravel\Facades\Geocoder;
13
14
  use Geocoder\Provider\GoogleMapsPlaces\GoogleMapsPlaces;
14
15
  use Geocoder\Query\GeocodeQuery;
15
- use Grimzy\LaravelMysqlSpatial\Types\Point;
16
16
  use Http\Adapter\Guzzle7\Client;
17
17
  use Illuminate\Http\Request;
18
18
  use Illuminate\Support\Facades\DB;
@@ -9,7 +9,7 @@ use Fleetbase\FleetOps\Http\Resources\v1\ServiceArea as ServiceAreaResource;
9
9
  use Fleetbase\FleetOps\Models\ServiceArea;
10
10
  use Fleetbase\FleetOps\Support\Utils;
11
11
  use Fleetbase\Http\Controllers\Controller;
12
- use Grimzy\LaravelMysqlSpatial\Types\Point;
12
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
13
13
  use Illuminate\Http\Request;
14
14
 
15
15
  class ServiceAreaController extends Controller
@@ -10,7 +10,7 @@ use Fleetbase\FleetOps\Models\Order;
10
10
  use Fleetbase\FleetOps\Models\TrackingStatus;
11
11
  use Fleetbase\FleetOps\Support\Utils;
12
12
  use Fleetbase\Http\Controllers\Controller;
13
- use Grimzy\LaravelMysqlSpatial\Types\Point;
13
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
14
14
  use Illuminate\Http\Request;
15
15
 
16
16
  class TrackingStatusController extends Controller
@@ -9,7 +9,7 @@ use Fleetbase\FleetOps\Http\Resources\v1\Zone as ZoneResource;
9
9
  use Fleetbase\FleetOps\Models\Zone;
10
10
  use Fleetbase\FleetOps\Support\Utils;
11
11
  use Fleetbase\Http\Controllers\Controller;
12
- use Grimzy\LaravelMysqlSpatial\Types\Point;
12
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
13
13
  use Illuminate\Http\Request;
14
14
 
15
15
  class ZoneController extends Controller
@@ -13,13 +13,13 @@ use Fleetbase\FleetOps\Models\Driver;
13
13
  use Fleetbase\FleetOps\Models\Order;
14
14
  use Fleetbase\FleetOps\Support\Utils;
15
15
  use Fleetbase\Http\Requests\ExportRequest;
16
+ use Fleetbase\LaravelMysqlSpatial\Types\Point;
16
17
  use Fleetbase\Models\CompanyUser;
17
18
  use Fleetbase\Models\Invite;
18
19
  use Fleetbase\Models\User;
19
20
  use Fleetbase\Models\VerificationCode;
20
21
  use Fleetbase\Notifications\UserInvited;
21
22
  use Fleetbase\Support\Auth;
22
- use Grimzy\LaravelMysqlSpatial\Types\Point;
23
23
  use Illuminate\Http\Request;
24
24
  use Illuminate\Support\Facades\DB;
25
25
  use Illuminate\Support\Facades\Validator;