@fleetbase/fleetops-engine 0.3.5 → 0.3.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/README.md +4 -4
- package/addon/components/admin/navigator-app.hbs +8 -0
- package/addon/components/admin/navigator-app.js +27 -0
- package/addon/components/driver-form-panel.js +13 -19
- package/addon/components/leaflet-draw-control.js +2 -3
- package/addon/components/live-map.js +7 -4
- package/addon/components/modals/driver-assign-order.hbs +2 -2
- package/addon/components/modals/order-import.hbs +5 -5
- package/addon/components/modals/order-new-activity.hbs +1 -1
- package/addon/components/order-config/entities-editor.js +3 -5
- package/addon/components/route-list.hbs +2 -2
- package/addon/components/vendor-form-panel.js +1 -1
- package/addon/controllers/application.js +2 -2
- package/addon/controllers/base-controller.js +31 -0
- package/addon/controllers/management/contacts/index/details.js +2 -2
- package/addon/controllers/management/contacts/index/edit.js +2 -2
- package/addon/controllers/management/contacts/index/new.js +2 -2
- package/addon/controllers/management/contacts/index.js +2 -2
- package/addon/controllers/management/drivers/index/details.js +2 -2
- package/addon/controllers/management/drivers/index/edit.js +2 -2
- package/addon/controllers/management/drivers/index/new.js +2 -2
- package/addon/controllers/management/drivers/index.js +11 -24
- package/addon/controllers/management/fleets/index/details.js +2 -2
- package/addon/controllers/management/fleets/index/edit.js +2 -2
- package/addon/controllers/management/fleets/index/new.js +2 -2
- package/addon/controllers/management/fleets/index.js +9 -9
- package/addon/controllers/management/fuel-reports/index/details.js +2 -2
- package/addon/controllers/management/fuel-reports/index/edit.js +2 -2
- package/addon/controllers/management/fuel-reports/index/new.js +2 -2
- package/addon/controllers/management/fuel-reports/index.js +2 -2
- package/addon/controllers/management/issues/index/details.js +2 -2
- package/addon/controllers/management/issues/index/edit.js +2 -2
- package/addon/controllers/management/issues/index/new.js +2 -2
- package/addon/controllers/management/issues/index.js +2 -9
- package/addon/controllers/management/places/index/details.js +2 -2
- package/addon/controllers/management/places/index/edit.js +2 -2
- package/addon/controllers/management/places/index/new.js +2 -2
- package/addon/controllers/management/places/index.js +2 -2
- package/addon/controllers/management/vehicles/index/details.js +2 -2
- package/addon/controllers/management/vehicles/index/edit.js +2 -2
- package/addon/controllers/management/vehicles/index/new.js +2 -2
- package/addon/controllers/management/vehicles/index.js +11 -12
- package/addon/controllers/management/vendors/index/details.js +2 -2
- package/addon/controllers/management/vendors/index/edit.js +2 -2
- package/addon/controllers/management/vendors/index/new.js +2 -2
- package/addon/controllers/management/vendors/index.js +2 -8
- package/addon/controllers/management.js +2 -2
- package/addon/controllers/operations/orders/index/config/types.js +2 -2
- package/addon/controllers/operations/orders/index/config.js +2 -2
- package/addon/controllers/operations/orders/index/new.js +64 -44
- package/addon/controllers/operations/orders/index/view.js +11 -4
- package/addon/controllers/operations/orders/index.js +2 -2
- package/addon/controllers/operations/scheduler/index.js +2 -2
- package/addon/controllers/operations/service-rates/index/edit.js +12 -18
- package/addon/controllers/operations/service-rates/index/new.js +16 -22
- package/addon/controllers/operations/service-rates/index.js +2 -2
- package/addon/engine.js +6 -0
- package/addon/helpers/waypoint-label.js +6 -1
- package/addon/routes/application.js +4 -15
- package/addon/routes/management/contacts/index.js +9 -5
- package/addon/routes/management/drivers/index.js +7 -3
- package/addon/routes/management/fleets/index.js +9 -5
- package/addon/routes/management/fuel-reports/index.js +9 -5
- package/addon/routes/management/issues/index.js +9 -5
- package/addon/routes/management/places/index.js +9 -5
- package/addon/routes/management/vehicles/index/details.js +2 -2
- package/addon/routes/management/vehicles/index.js +9 -0
- package/addon/routes/management/vendors/index.js +9 -6
- package/addon/routes/operations/orders/index/view.js +6 -2
- package/addon/routes/operations/orders/index.js +7 -1
- package/addon/routes/operations/orders.js +0 -1
- package/addon/routes/operations/service-rates/index.js +9 -27
- package/addon/routes/operations/service-rates.js +1 -8
- package/addon/styles/fleetops-engine.css +14 -7
- package/addon/templates/operations/orders/index/new.hbs +7 -7
- package/addon/templates/operations/orders/index/view.hbs +17 -16
- package/addon/utils/waypoint-label.js +3 -0
- package/app/controllers/{operations/zones/index.js → base-controller.js} +1 -1
- package/app/utils/waypoint-label.js +1 -0
- package/composer.json +2 -2
- package/config/environment.js +11 -1
- package/extension.json +1 -1
- package/index.js +1 -0
- package/package.json +47 -41
- package/server/config/fleetops.php +4 -1
- package/server/migrations/2023_11_28_074244_add_supplier_uuid_column_to_entities_table.php +33 -0
- package/server/migrations/2023_12_14_100209_add_meta_column_on_driver_table.php +30 -0
- package/server/src/Http/Controllers/Api/v1/DriverController.php +14 -10
- package/server/src/Http/Controllers/Api/v1/OrderController.php +118 -42
- package/server/src/Http/Controllers/Api/v1/PayloadController.php +41 -43
- package/server/src/Http/Controllers/Api/v1/TrackingStatusController.php +43 -2
- package/server/src/Http/Controllers/Internal/v1/DriverController.php +148 -0
- package/server/src/Http/Controllers/Internal/v1/MorphController.php +48 -16
- package/server/src/Http/Controllers/Internal/v1/NavigatorController.php +79 -0
- package/server/src/Http/Controllers/Internal/v1/OrderController.php +3 -2
- package/server/src/Http/Controllers/Internal/v1/PlaceController.php +2 -2
- package/server/src/Http/Requests/CreateDriverRequest.php +2 -0
- package/server/src/Http/Requests/CreateOrderRequest.php +18 -4
- package/server/src/Http/Requests/CreatePayloadRequest.php +23 -7
- package/server/src/Http/Requests/CreatePlaceRequest.php +9 -5
- package/server/src/Http/Requests/CreateTrackingStatusRequest.php +69 -12
- package/server/src/Http/Requests/CreateVehicleRequest.php +5 -3
- package/server/src/Http/Resources/v1/Entity.php +3 -0
- package/server/src/Http/Resources/v1/Order.php +3 -2
- package/server/src/Models/Driver.php +5 -2
- package/server/src/Models/Entity.php +1 -1
- package/server/src/Models/Order.php +2 -2
- package/server/src/Models/Payload.php +27 -9
- package/server/src/Models/Place.php +28 -5
- package/server/src/Models/TrackingStatus.php +9 -3
- package/server/src/Models/VehicleDevice.php +28 -0
- package/server/src/Models/Vendor.php +16 -0
- package/server/src/Observers/DriverObserver.php +1 -1
- package/server/src/routes.php +62 -0
- package/tsconfig.declarations.json +10 -0
- package/addon/components/file-icon.js +0 -1
- package/addon/controllers/operations/zones/index.js +0 -475
- package/addon/routes/operations/dispatch.js +0 -3
- package/addon/routes/operations/zones/index.js +0 -25
- package/addon/routes/operations/zones.js +0 -7
- package/addon/templates/operations/dispatch.hbs +0 -1
- package/addon/templates/operations/zones/index.hbs +0 -72
- package/addon/templates/operations/zones.hbs +0 -1
- package/app/components/file-icon.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default } from '@fleetbase/fleetops-engine/controllers/
|
|
1
|
+
export { default } from '@fleetbase/fleetops-engine/controllers/base-controller';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from '@fleetbase/fleetops-engine/utils/waypoint-label';
|
package/composer.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fleetbase/fleetops-api",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.7",
|
|
4
4
|
"description": "Fleet & Transport Management Extension for Fleetbase",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"fleetbase-extension",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
],
|
|
23
23
|
"require": {
|
|
24
24
|
"php": "^7.4|^8.0",
|
|
25
|
-
"fleetbase/core-api": "^1.3.
|
|
25
|
+
"fleetbase/core-api": "^1.3.4",
|
|
26
26
|
"barryvdh/laravel-dompdf": "^2.0",
|
|
27
27
|
"brick/geo": "0.7.2",
|
|
28
28
|
"cknow/laravel-money": "^7.1",
|
package/config/environment.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/* eslint-env node */
|
|
2
2
|
'use strict';
|
|
3
|
-
const { name } = require('../package');
|
|
3
|
+
const { name, fleetbase } = require('../package');
|
|
4
4
|
|
|
5
5
|
module.exports = function (environment) {
|
|
6
6
|
let ENV = {
|
|
7
7
|
modulePrefix: name,
|
|
8
8
|
environment,
|
|
9
|
+
mountedEngineRoutePrefix: getMountedEngineRoutePrefix(),
|
|
9
10
|
|
|
10
11
|
defaultValues: {
|
|
11
12
|
driverImage: getenv('DEFAULT_DRIVER_IMAGE', 'https://s3.ap-southeast-1.amazonaws.com/flb-assets/static/no-avatar.png'),
|
|
@@ -20,6 +21,15 @@ module.exports = function (environment) {
|
|
|
20
21
|
return ENV;
|
|
21
22
|
};
|
|
22
23
|
|
|
24
|
+
function getMountedEngineRoutePrefix() {
|
|
25
|
+
let mountedEngineRoutePrefix = 'fleet-ops';
|
|
26
|
+
if (fleetbase && typeof fleetbase.route === 'string') {
|
|
27
|
+
mountedEngineRoutePrefix = fleetbase.route;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return `console.${mountedEngineRoutePrefix}.`;
|
|
31
|
+
}
|
|
32
|
+
|
|
23
33
|
function getenv(variable, defaultValue = null) {
|
|
24
34
|
return process.env[variable] !== undefined ? process.env[variable] : defaultValue;
|
|
25
35
|
}
|
package/extension.json
CHANGED
package/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fleetbase/fleetops-engine",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.7",
|
|
4
4
|
"description": "Fleet & Transport Management Extension for Fleetbase",
|
|
5
5
|
"fleetbase": {
|
|
6
6
|
"route": "fleet-ops",
|
|
@@ -25,23 +25,26 @@
|
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
27
27
|
"build": "ember build --environment=production",
|
|
28
|
-
"lint": "
|
|
29
|
-
"lint:
|
|
28
|
+
"lint": "concurrently \"npm:lint:*(!fix)\" --names \"lint:\"",
|
|
29
|
+
"lint:css": "stylelint \"**/*.css\"",
|
|
30
|
+
"lint:css:fix": "concurrently \"npm:lint:css -- --fix\"",
|
|
31
|
+
"lint:fix": "concurrently \"npm:lint:*:fix\" --names \"fix:\"",
|
|
30
32
|
"lint:hbs": "ember-template-lint .",
|
|
31
33
|
"lint:hbs:fix": "ember-template-lint . --fix",
|
|
32
34
|
"lint:js": "eslint . --cache",
|
|
33
35
|
"lint:js:fix": "eslint . --fix",
|
|
34
36
|
"start": "ember serve",
|
|
35
|
-
"test": "npm
|
|
37
|
+
"test": "concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\"",
|
|
36
38
|
"test:ember": "ember test",
|
|
37
39
|
"test:ember-compatibility": "ember try:each",
|
|
38
40
|
"publish:npm": "npm config set registry https://registry.npmjs.org/ && npm publish",
|
|
39
41
|
"publish:github": "npm config set '@fleetbase:registry' https://npm.pkg.github.com/ && npm publish"
|
|
40
42
|
},
|
|
41
43
|
"dependencies": {
|
|
42
|
-
"@
|
|
43
|
-
"@fleetbase/ember-
|
|
44
|
-
"@fleetbase/
|
|
44
|
+
"@babel/core": "^7.23.2",
|
|
45
|
+
"@fleetbase/ember-core": "^0.1.9",
|
|
46
|
+
"@fleetbase/ember-ui": "^0.2.8",
|
|
47
|
+
"@fleetbase/fleetops-data": "^0.1.6",
|
|
45
48
|
"@fleetbase/leaflet-routing-machine": "^3.2.16",
|
|
46
49
|
"@fortawesome/ember-fontawesome": "^0.4.1",
|
|
47
50
|
"@fortawesome/fontawesome-svg-core": "^6.4.0",
|
|
@@ -50,14 +53,14 @@
|
|
|
50
53
|
"@zestia/ember-dragula": "^12.0.0",
|
|
51
54
|
"broccoli-funnel": "^3.0.8",
|
|
52
55
|
"broccoli-merge-trees": "^4.2.0",
|
|
53
|
-
"ember-cli-babel": "^
|
|
54
|
-
"ember-cli-
|
|
55
|
-
"ember-
|
|
56
|
-
"ember-intl": "^6.0.0-beta.6",
|
|
56
|
+
"ember-cli-babel": "^8.2.0",
|
|
57
|
+
"ember-cli-htmlbars": "^6.3.0",
|
|
58
|
+
"ember-intl": "6.3.2",
|
|
57
59
|
"ember-leaflet": "^5.1.1",
|
|
58
60
|
"ember-radio-button": "^3.0.0-beta.1",
|
|
59
61
|
"ember-tag-input": "^3.1.0",
|
|
60
62
|
"ember-wormhole": "^0.6.0",
|
|
63
|
+
"ember-drag-sort": "^3.0.1",
|
|
61
64
|
"leaflet": "^1.9.4",
|
|
62
65
|
"leaflet-contextmenu": "^1.4.0",
|
|
63
66
|
"leaflet-draw": "^1.0.4",
|
|
@@ -65,56 +68,59 @@
|
|
|
65
68
|
"leaflet-rotatedmarker": "^0.2.0"
|
|
66
69
|
},
|
|
67
70
|
"devDependencies": {
|
|
71
|
+
"@babel/eslint-parser": "^7.22.15",
|
|
72
|
+
"@babel/plugin-proposal-decorators": "^7.23.2",
|
|
68
73
|
"@ember/optional-features": "^2.0.0",
|
|
69
|
-
"@ember/test-helpers": "^2.
|
|
70
|
-
"@embroider/test-setup": "^
|
|
74
|
+
"@ember/test-helpers": "^3.2.0",
|
|
75
|
+
"@embroider/test-setup": "^3.0.2",
|
|
71
76
|
"@glimmer/component": "^1.1.2",
|
|
72
77
|
"@glimmer/tracking": "^1.1.2",
|
|
73
|
-
"babel-eslint": "^10.1.0",
|
|
74
78
|
"broccoli-asset-rev": "^3.0.0",
|
|
79
|
+
"concurrently": "^8.2.2",
|
|
75
80
|
"dragula": "^3.7.3",
|
|
76
|
-
"ember-auto-import": "^2.
|
|
77
|
-
"ember-cli": "~4.
|
|
78
|
-
"ember-cli-
|
|
81
|
+
"ember-auto-import": "^2.6.3",
|
|
82
|
+
"ember-cli": "~5.4.1",
|
|
83
|
+
"ember-cli-clean-css": "^3.0.0",
|
|
84
|
+
"ember-cli-dependency-checker": "^3.3.2",
|
|
79
85
|
"ember-cli-inject-live-reload": "^2.1.0",
|
|
80
86
|
"ember-cli-sri": "^2.1.1",
|
|
81
87
|
"ember-cli-terser": "^4.0.2",
|
|
82
88
|
"ember-composable-helpers": "^5.0.0",
|
|
83
|
-
"ember-concurrency": "^
|
|
89
|
+
"ember-concurrency": "^3.1.1",
|
|
84
90
|
"ember-concurrency-decorators": "^2.0.3",
|
|
85
|
-
"ember-data": "
|
|
86
|
-
"ember-
|
|
87
|
-
"ember-drag-sort": "^3.0.1",
|
|
88
|
-
"ember-engines": "^0.8.23",
|
|
91
|
+
"ember-data": "^4.12.5",
|
|
92
|
+
"ember-engines": "^0.9.0",
|
|
89
93
|
"ember-load-initializers": "^2.1.2",
|
|
90
|
-
"ember-math-helpers": "^
|
|
91
|
-
"ember-page-title": "^
|
|
92
|
-
"ember-qunit": "^
|
|
93
|
-
"ember-resolver": "^
|
|
94
|
+
"ember-math-helpers": "^4.0.0",
|
|
95
|
+
"ember-page-title": "^8.0.0",
|
|
96
|
+
"ember-qunit": "^8.0.1",
|
|
97
|
+
"ember-resolver": "^11.0.1",
|
|
94
98
|
"ember-responsive": "^5.0.0",
|
|
95
|
-
"ember-source": "~4.
|
|
99
|
+
"ember-source": "~5.4.0",
|
|
96
100
|
"ember-source-channel-url": "^3.0.0",
|
|
97
|
-
"ember-template-lint": "^
|
|
98
|
-
"ember-try": "^
|
|
99
|
-
"eslint": "^
|
|
100
|
-
"eslint-config-prettier": "^
|
|
101
|
-
"eslint-plugin-ember": "^11.
|
|
102
|
-
"eslint-plugin-
|
|
103
|
-
"eslint-plugin-prettier": "^
|
|
104
|
-
"eslint-plugin-qunit": "^
|
|
101
|
+
"ember-template-lint": "^5.11.2",
|
|
102
|
+
"ember-try": "^3.0.0",
|
|
103
|
+
"eslint": "^8.52.0",
|
|
104
|
+
"eslint-config-prettier": "^9.0.0",
|
|
105
|
+
"eslint-plugin-ember": "^11.11.1",
|
|
106
|
+
"eslint-plugin-n": "^16.2.0",
|
|
107
|
+
"eslint-plugin-prettier": "^5.0.1",
|
|
108
|
+
"eslint-plugin-qunit": "^8.0.1",
|
|
105
109
|
"loader.js": "^4.7.0",
|
|
106
|
-
"
|
|
107
|
-
"
|
|
108
|
-
"qunit": "^2.19.1",
|
|
110
|
+
"prettier": "^3.0.3",
|
|
111
|
+
"qunit": "^2.20.0",
|
|
109
112
|
"qunit-dom": "^2.0.0",
|
|
110
113
|
"resolve": "^1.22.2",
|
|
111
|
-
"
|
|
114
|
+
"stylelint": "^15.11.0",
|
|
115
|
+
"stylelint-config-standard": "^34.0.0",
|
|
116
|
+
"stylelint-prettier": "^4.0.2",
|
|
117
|
+
"webpack": "^5.89.0"
|
|
112
118
|
},
|
|
113
119
|
"peerDependencies": {
|
|
114
|
-
"ember-engines": "^0.
|
|
120
|
+
"ember-engines": "^0.9.0"
|
|
115
121
|
},
|
|
116
122
|
"engines": {
|
|
117
|
-
"node": "
|
|
123
|
+
"node": ">= 18"
|
|
118
124
|
},
|
|
119
125
|
"ember": {
|
|
120
126
|
"edition": "octane"
|
|
@@ -12,7 +12,10 @@ return [
|
|
|
12
12
|
'prefix' => null,
|
|
13
13
|
'internal_prefix' => 'int'
|
|
14
14
|
]
|
|
15
|
-
],
|
|
15
|
+
],
|
|
16
|
+
'navigator' => [
|
|
17
|
+
'bypass_verification_code' => env('NAVIGATOR_BYPASS_VERIFICATION_CODE', '999000')
|
|
18
|
+
],
|
|
16
19
|
'connection' => [
|
|
17
20
|
'db' => env('DB_CONNECTION', 'mysql')
|
|
18
21
|
]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
use Illuminate\Database\Migrations\Migration;
|
|
4
|
+
use Illuminate\Database\Schema\Blueprint;
|
|
5
|
+
use Illuminate\Support\Facades\Schema;
|
|
6
|
+
|
|
7
|
+
class AddSupplierUuidColumnToEntitiesTable extends Migration
|
|
8
|
+
{
|
|
9
|
+
/**
|
|
10
|
+
* Run the migrations.
|
|
11
|
+
*
|
|
12
|
+
* @return void
|
|
13
|
+
*/
|
|
14
|
+
public function up()
|
|
15
|
+
{
|
|
16
|
+
Schema::table('entities', function (Blueprint $table) {
|
|
17
|
+
$table->foreignUuid('supplier_uuid')->nullable()->after('driver_assigned_uuid')->references('uuid')->on('vendors');
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Reverse the migrations.
|
|
23
|
+
*
|
|
24
|
+
* @return void
|
|
25
|
+
*/
|
|
26
|
+
public function down()
|
|
27
|
+
{
|
|
28
|
+
Schema::table('entities', function (Blueprint $table) {
|
|
29
|
+
$table->dropForeign(['supplier_uuid']);
|
|
30
|
+
$table->dropColumn(['supplier_uuid']);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
use Illuminate\Database\Migrations\Migration;
|
|
4
|
+
use Illuminate\Database\Schema\Blueprint;
|
|
5
|
+
use Illuminate\Support\Facades\Schema;
|
|
6
|
+
|
|
7
|
+
class AddMetaColumnOnDriverTable extends Migration
|
|
8
|
+
{
|
|
9
|
+
/**
|
|
10
|
+
* Run the migrations.
|
|
11
|
+
*
|
|
12
|
+
* @return void
|
|
13
|
+
*/
|
|
14
|
+
public function up()
|
|
15
|
+
{
|
|
16
|
+
Schema::table('drivers', function (Blueprint $table) {
|
|
17
|
+
$table->json('meta')->nullable()->after('slug');
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Reverse the migrations.
|
|
23
|
+
*
|
|
24
|
+
* @return void
|
|
25
|
+
*/
|
|
26
|
+
public function down()
|
|
27
|
+
{
|
|
28
|
+
//
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -353,10 +353,10 @@ class DriverController extends Controller
|
|
|
353
353
|
return response()->error('Authentication failed using password provided.', 401);
|
|
354
354
|
}
|
|
355
355
|
|
|
356
|
-
//
|
|
356
|
+
// Get the company session for the user
|
|
357
357
|
$company = Flow::getCompanySessionForUser($user);
|
|
358
358
|
|
|
359
|
-
//
|
|
359
|
+
// Get driver record
|
|
360
360
|
$driver = Driver::firstOrCreate(
|
|
361
361
|
[
|
|
362
362
|
'user_uuid' => $user->uuid,
|
|
@@ -365,9 +365,10 @@ class DriverController extends Controller
|
|
|
365
365
|
[
|
|
366
366
|
'user_uuid' => $user->uuid,
|
|
367
367
|
'company_uuid' => $company->uuid,
|
|
368
|
-
'name' => $attrs
|
|
369
|
-
'phone' => $attrs
|
|
370
|
-
'email' => $attrs
|
|
368
|
+
'name' => data_get($attrs, 'name', $user->name),
|
|
369
|
+
'phone' => data_get($attrs, 'phone', $user->phone),
|
|
370
|
+
'email' => data_get($attrs, 'email', $user->email),
|
|
371
|
+
'location' => new Point(0, 0),
|
|
371
372
|
]
|
|
372
373
|
);
|
|
373
374
|
|
|
@@ -431,7 +432,10 @@ class DriverController extends Controller
|
|
|
431
432
|
}
|
|
432
433
|
|
|
433
434
|
// check if user exists
|
|
434
|
-
$user = User::where('
|
|
435
|
+
$user = User::where('type', 'driver')->where(function ($query) use ($identity) {
|
|
436
|
+
$query->where('phone', $identity);
|
|
437
|
+
$query->orWhere('phone', $identity);
|
|
438
|
+
})->first();
|
|
435
439
|
|
|
436
440
|
if (!$user) {
|
|
437
441
|
return response()->error('Unable to verify code.');
|
|
@@ -440,7 +444,7 @@ class DriverController extends Controller
|
|
|
440
444
|
// find and verify code
|
|
441
445
|
$verificationCode = VerificationCode::where(['subject_uuid' => $user->uuid, 'code' => $code, 'for' => $for])->exists();
|
|
442
446
|
|
|
443
|
-
if (!$verificationCode && $code !== '
|
|
447
|
+
if (!$verificationCode && $code !== config('fleetops.navigator.bypass_verification_code')) {
|
|
444
448
|
return response()->error('Invalid verification code!');
|
|
445
449
|
}
|
|
446
450
|
|
|
@@ -456,9 +460,9 @@ class DriverController extends Controller
|
|
|
456
460
|
[
|
|
457
461
|
'user_uuid' => $user->uuid,
|
|
458
462
|
'company_uuid' => $company->uuid,
|
|
459
|
-
'name' => $attrs
|
|
460
|
-
'phone' => $attrs
|
|
461
|
-
'email' => $attrs
|
|
463
|
+
'name' => data_get($attrs, 'name', $user->name),
|
|
464
|
+
'phone' => data_get($attrs, 'phone', $user->phone),
|
|
465
|
+
'email' => data_get($attrs, 'email', $user->email),
|
|
462
466
|
'location' => new Point(0, 0),
|
|
463
467
|
]
|
|
464
468
|
);
|
|
@@ -33,7 +33,7 @@ class OrderController extends Controller
|
|
|
33
33
|
/**
|
|
34
34
|
* Creates a new Fleetbase Order resource.
|
|
35
35
|
*
|
|
36
|
-
* @param \Fleetbase\Http\Requests\CreateOrderRequest $request
|
|
36
|
+
* @param \Illuminate\Http\Request|\Fleetbase\Http\Requests\CreateOrderRequest $request
|
|
37
37
|
*
|
|
38
38
|
* @return \Fleetbase\Http\Resources\Order
|
|
39
39
|
*/
|
|
@@ -61,18 +61,36 @@ class OrderController extends Controller
|
|
|
61
61
|
|
|
62
62
|
// create payload
|
|
63
63
|
if ($request->has('payload') && $request->isArray('payload')) {
|
|
64
|
-
$payloadInput = $request->input('payload');
|
|
65
64
|
$payload = new Payload();
|
|
65
|
+
$payloadInput = $request->input('payload');
|
|
66
|
+
$entities = data_get($payloadInput, 'entities', []);
|
|
67
|
+
$waypoints = data_get($payloadInput, 'waypoints', []);
|
|
68
|
+
$pickup = data_get($payloadInput, 'pickup');
|
|
69
|
+
$dropoff = data_get($payloadInput, 'dropoff');
|
|
70
|
+
$return = data_get($payloadInput, 'return');
|
|
71
|
+
|
|
72
|
+
// if no pickup and dropoff extract from waypoints
|
|
73
|
+
if (empty($pickup) && empty($dropoff) && count($waypoints)) {
|
|
74
|
+
$pickup = array_shift($waypoints);
|
|
75
|
+
$dropoff = array_pop($waypoints);
|
|
76
|
+
}
|
|
66
77
|
|
|
67
|
-
$payload->setPickup($
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
78
|
+
$payload->setPickup($pickup, [
|
|
79
|
+
'callback' => function ($pickup, $payload) {
|
|
80
|
+
$payload->setCurrentWaypoint($pickup);
|
|
81
|
+
},
|
|
82
|
+
]);
|
|
83
|
+
$payload->setDropoff($dropoff);
|
|
84
|
+
if ($return) {
|
|
85
|
+
$payload->setReturn($return);
|
|
71
86
|
}
|
|
72
|
-
|
|
73
|
-
$payload->setEntities($payloadInput['entities'] ?? []);
|
|
87
|
+
|
|
74
88
|
$payload->save();
|
|
75
89
|
|
|
90
|
+
// set waypoints and entities after payload is saved
|
|
91
|
+
$payload->setWaypoints($waypoints);
|
|
92
|
+
$payload->setEntities($entities);
|
|
93
|
+
|
|
76
94
|
$input['payload_uuid'] = $payload->uuid;
|
|
77
95
|
} elseif ($request->isString('payload')) {
|
|
78
96
|
$input['payload_uuid'] = Utils::getUuid('payloads', [
|
|
@@ -84,19 +102,40 @@ class OrderController extends Controller
|
|
|
84
102
|
|
|
85
103
|
// create a payload if missing payload[] but has pickup/dropoff/etc
|
|
86
104
|
if ($request->missing('payload')) {
|
|
87
|
-
$payloadInput = $request->only(['pickup', 'dropoff', 'return', 'waypoints', 'entities']);
|
|
88
105
|
$payload = new Payload();
|
|
106
|
+
$payloadInput = $request->only(['pickup', 'dropoff', 'return', 'waypoints', 'entities']);
|
|
107
|
+
$entities = data_get($payloadInput, 'entities', []);
|
|
108
|
+
$waypoints = data_get($payloadInput, 'waypoints', []);
|
|
109
|
+
$pickup = data_get($payloadInput, 'pickup');
|
|
110
|
+
$dropoff = data_get($payloadInput, 'dropoff');
|
|
111
|
+
$return = data_get($payloadInput, 'return');
|
|
112
|
+
|
|
113
|
+
// if no pickup and dropoff extract from waypoints
|
|
114
|
+
if (empty($pickup) && empty($dropoff) && count($waypoints)) {
|
|
115
|
+
$pickup = array_shift($waypoints);
|
|
116
|
+
$dropoff = array_pop($waypoints);
|
|
117
|
+
}
|
|
89
118
|
|
|
90
|
-
$payload->setPickup($
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
119
|
+
$payload->setPickup($pickup, [
|
|
120
|
+
'callback' => function ($pickup, $payload) {
|
|
121
|
+
$payload->setCurrentWaypoint($pickup);
|
|
122
|
+
},
|
|
123
|
+
]);
|
|
124
|
+
$payload->setDropoff($dropoff);
|
|
125
|
+
if ($return) {
|
|
126
|
+
$payload->setReturn($return);
|
|
94
127
|
}
|
|
95
|
-
|
|
96
|
-
$payload->setEntities($payloadInput['entities'] ?? []);
|
|
128
|
+
|
|
97
129
|
$payload->save();
|
|
98
130
|
|
|
131
|
+
// set waypoints and entities after payload is saved
|
|
132
|
+
$payload->setWaypoints($waypoints);
|
|
133
|
+
$payload->setEntities($entities);
|
|
134
|
+
|
|
99
135
|
$input['payload_uuid'] = $payload->uuid;
|
|
136
|
+
|
|
137
|
+
// set the first / current waypoint
|
|
138
|
+
$payload->setCurrentWaypoint($payload->pickup);
|
|
100
139
|
}
|
|
101
140
|
|
|
102
141
|
// driver assignment
|
|
@@ -218,18 +257,43 @@ class OrderController extends Controller
|
|
|
218
257
|
|
|
219
258
|
// update payload if new input or change payload by id
|
|
220
259
|
if ($request->isArray('payload')) {
|
|
260
|
+
$payload = data_get($order, 'payload', new Payload());
|
|
221
261
|
$payloadInput = $request->input('payload');
|
|
222
|
-
$
|
|
262
|
+
$entities = data_get($payloadInput, 'entities', []);
|
|
263
|
+
$waypoints = data_get($payloadInput, 'waypoints', []);
|
|
264
|
+
$pickup = data_get($payloadInput, 'pickup');
|
|
265
|
+
$dropoff = data_get($payloadInput, 'dropoff');
|
|
266
|
+
$return = data_get($payloadInput, 'return');
|
|
267
|
+
|
|
268
|
+
// if no pickup and dropoff extract from waypoints
|
|
269
|
+
if (empty($pickup) && empty($dropoff) && count($waypoints)) {
|
|
270
|
+
$pickup = array_shift($waypoints);
|
|
271
|
+
$dropoff = array_pop($waypoints);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
if ($pickup) {
|
|
275
|
+
$payload->setPickup($pickup);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
if ($dropoff) {
|
|
279
|
+
$payload->setDropoff($dropoff);
|
|
280
|
+
}
|
|
223
281
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
if ($request->has('payload.return')) {
|
|
227
|
-
$payload->setReturn($payloadInput['return']);
|
|
282
|
+
if ($return) {
|
|
283
|
+
$payload->setReturn($return);
|
|
228
284
|
}
|
|
229
|
-
|
|
230
|
-
$payload->setEntities($payloadInput['entities'] ?? []);
|
|
285
|
+
|
|
231
286
|
$payload->save();
|
|
232
287
|
|
|
288
|
+
// set waypoints and entities after payload is saved
|
|
289
|
+
if ($waypoints) {
|
|
290
|
+
$payload->setWaypoints($waypoints);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
if ($entities) {
|
|
294
|
+
$payload->setEntities($entities);
|
|
295
|
+
}
|
|
296
|
+
|
|
233
297
|
$input['payload_uuid'] = $payload->uuid;
|
|
234
298
|
} elseif ($request->has('payload')) {
|
|
235
299
|
$input['payload_uuid'] = Utils::getUuid('payloads', [
|
|
@@ -239,34 +303,46 @@ class OrderController extends Controller
|
|
|
239
303
|
unset($input['payload']);
|
|
240
304
|
}
|
|
241
305
|
|
|
242
|
-
//
|
|
243
|
-
if ($request->
|
|
244
|
-
|
|
245
|
-
|
|
306
|
+
// create a payload if missing payload[] but has pickup/dropoff/etc
|
|
307
|
+
if ($request->missing('payload')) {
|
|
308
|
+
$payload = data_get($order, 'payload', new Payload());
|
|
309
|
+
$payloadInput = $request->only(['pickup', 'dropoff', 'return', 'waypoints', 'entities']);
|
|
310
|
+
$entities = data_get($payloadInput, 'entities', []);
|
|
311
|
+
$waypoints = data_get($payloadInput, 'waypoints', []);
|
|
312
|
+
$pickup = data_get($payloadInput, 'pickup');
|
|
313
|
+
$dropoff = data_get($payloadInput, 'dropoff');
|
|
314
|
+
$return = data_get($payloadInput, 'return');
|
|
315
|
+
|
|
316
|
+
// if no pickup and dropoff extract from waypoints
|
|
317
|
+
if (empty($pickup) && empty($dropoff) && count($waypoints)) {
|
|
318
|
+
$pickup = array_shift($waypoints);
|
|
319
|
+
$dropoff = array_pop($waypoints);
|
|
246
320
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
$order->payload->setDropoff($request->input('dropoff'));
|
|
321
|
+
|
|
322
|
+
if ($pickup) {
|
|
323
|
+
$payload->setPickup($pickup);
|
|
251
324
|
}
|
|
252
|
-
}
|
|
253
325
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
$order->payload->setReturn($request->input('return'));
|
|
326
|
+
if ($dropoff) {
|
|
327
|
+
$payload->setDropoff($dropoff);
|
|
257
328
|
}
|
|
258
|
-
}
|
|
259
329
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
$order->payload->setWaypoints($request->input('waypoints'));
|
|
330
|
+
if ($return) {
|
|
331
|
+
$payload->setReturn($return);
|
|
263
332
|
}
|
|
264
|
-
}
|
|
265
333
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
334
|
+
$payload->save();
|
|
335
|
+
|
|
336
|
+
// set waypoints and entities after payload is saved
|
|
337
|
+
if ($waypoints) {
|
|
338
|
+
$payload->setWaypoints($waypoints);
|
|
269
339
|
}
|
|
340
|
+
|
|
341
|
+
if ($entities) {
|
|
342
|
+
$payload->setEntities($entities);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
$input['payload_uuid'] = $payload->uuid;
|
|
270
346
|
}
|
|
271
347
|
|
|
272
348
|
// driver assignment
|