@fleetbase/fleetops-engine 0.3.2 → 0.3.4
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/components/admin/visibility-controls.js +1 -0
- package/addon/components/contact-form-panel.hbs +28 -6
- package/addon/components/driver-form-panel.hbs +10 -0
- package/addon/components/driver-form-panel.js +51 -0
- package/addon/components/driver-panel/details.hbs +1 -5
- package/addon/components/driver-panel.hbs +21 -3
- package/addon/components/fleet-form-panel.hbs +60 -6
- package/addon/components/fleet-panel/details.hbs +1 -1
- package/addon/components/fuel-report-form-panel.hbs +84 -8
- package/addon/components/fuel-report-form-panel.js +6 -0
- package/addon/components/fuel-report-panel/details.hbs +4 -0
- package/addon/components/issue-form-panel.hbs +99 -11
- package/addon/components/issue-form-panel.js +5 -13
- package/addon/components/layout/fleet-ops-sidebar.js +10 -1
- package/addon/components/live-map-drawer/driver-listing.hbs +6 -0
- package/addon/components/live-map-drawer/driver-listing.js +240 -0
- package/addon/components/live-map-drawer/place-listing.hbs +6 -0
- package/addon/components/live-map-drawer/place-listing.js +204 -0
- package/addon/components/live-map-drawer/vehicle-listing.hbs +6 -0
- package/addon/components/live-map-drawer/vehicle-listing.js +216 -0
- package/addon/components/live-map-drawer.hbs +17 -0
- package/addon/components/live-map-drawer.js +104 -0
- package/addon/components/live-map.hbs +5 -1
- package/addon/components/live-map.js +107 -15
- package/addon/components/map-container/toolbar.hbs +6 -0
- package/addon/components/modals/driver-assign-vehicle.hbs +2 -11
- package/addon/components/modals/driver-assign-vendor.hbs +1 -9
- package/addon/components/modals/fuel-report-details.hbs +4 -0
- package/addon/components/modals/order-event.hbs +1 -1
- package/addon/components/order/schedule-card.hbs +35 -7
- package/addon/components/order/schedule-card.js +163 -6
- package/addon/components/place-form-panel.hbs +14 -7
- package/addon/components/place-form-panel.js +71 -0
- package/addon/components/place-panel/details.hbs +11 -21
- package/addon/components/vehicle-form-panel.hbs +67 -7
- package/addon/components/vehicle-form-panel.js +37 -0
- package/addon/components/vehicle-panel/details.hbs +9 -5
- package/addon/components/vehicle-panel.hbs +18 -4
- package/addon/components/vendor-form-panel/create-form.hbs +72 -11
- package/addon/components/vendor-form-panel/edit-form.hbs +1 -1
- package/addon/components/vendor-form-panel.hbs +70 -30
- package/addon/components/vendor-form-panel.js +4 -40
- package/addon/components/vendor-panel/details.hbs +2 -2
- package/addon/components/vendor-panel.hbs +16 -2
- package/addon/controllers/management/contacts/index.js +42 -3
- package/addon/controllers/management/fleets/index.js +12 -23
- package/addon/controllers/management/fuel-reports/index/new.js +1 -1
- package/addon/controllers/management/fuel-reports/index.js +73 -20
- package/addon/controllers/management/issues/index/new.js +2 -2
- package/addon/controllers/management/issues/index.js +65 -45
- package/addon/controllers/management/places/index.js +59 -18
- package/addon/controllers/management/vehicles/index.js +67 -8
- package/addon/controllers/management/vendors/index.js +63 -8
- package/addon/controllers/operations/orders/index.js +70 -15
- package/addon/controllers/operations/scheduler/index.js +45 -30
- package/addon/routes/management/contacts/index.js +8 -0
- package/addon/routes/management/fleets/index.js +8 -2
- package/addon/routes/management/fuel-reports/index.js +6 -0
- package/addon/routes/management/issues/index.js +9 -1
- package/addon/routes/management/places/index.js +11 -1
- package/addon/routes/management/vehicles/index.js +3 -3
- package/addon/routes/management/vendors/index.js +8 -0
- package/addon/routes/operations/scheduler/index.js +26 -1
- package/addon/styles/fleetops-engine.css +28 -0
- package/addon/templates/operations/orders/index.hbs +2 -2
- package/addon/templates/operations/scheduler/index.hbs +33 -9
- package/addon/utils/create-full-calendar-event-from-order.js +8 -0
- package/addon/utils/get-issue-categories.js +30 -0
- package/addon/utils/get-issue-types.js +3 -0
- package/addon/utils/get-vendor-status-options.js +3 -0
- package/addon/utils/get-vendor-type-options.js +41 -0
- package/app/components/live-map-drawer/driver-listing.js +1 -0
- package/app/components/live-map-drawer/place-listing.js +1 -0
- package/app/components/live-map-drawer/vehicle-listing.js +1 -0
- package/app/components/live-map-drawer.js +1 -0
- package/app/utils/create-full-calendar-event-from-order.js +1 -0
- package/app/utils/get-issue-categories.js +1 -0
- package/app/utils/get-issue-types.js +1 -0
- package/app/utils/get-vendor-categories.js +1 -0
- package/app/utils/get-vendor-status-options.js +1 -0
- package/app/utils/get-vendor-type-options.js +1 -0
- package/app/utils/get-vendor-types.js +1 -0
- package/composer.json +1 -1
- package/extension.json +1 -1
- package/package.json +4 -4
- package/server/migrations/2023_11_09_041807_add_status_column_to_fuel_reports_table.php +32 -0
- package/server/migrations/2023_11_15_062814_add_comments_column_and_resolved_at_column_to_vehicle_device_events_table.php +33 -0
- package/server/src/Http/Controllers/Api/v1/DriverController.php +2 -2
- package/server/src/Http/Controllers/Api/v1/VehicleController.php +2 -2
- package/server/src/Http/Controllers/Internal/v1/DriverController.php +5 -13
- package/server/src/Http/Controllers/Internal/v1/OrderController.php +1 -3
- package/server/src/Http/Filter/ContactFilter.php +10 -0
- package/server/src/Http/Filter/FleetFilter.php +8 -6
- package/server/src/Http/Filter/FuelReportFilter.php +51 -0
- package/server/src/Http/Filter/IssueFilter.php +61 -5
- package/server/src/Http/Filter/PlaceFilter.php +48 -6
- package/server/src/Http/Filter/VehicleFilter.php +21 -6
- package/server/src/Http/Filter/VendorFilter.php +11 -8
- package/server/src/Http/Middleware/TransformLocationMiddleware.php +1 -1
- package/server/src/Http/Resources/Internal/v1/IntegratedVendorFacilitator.php +17 -18
- package/server/src/Http/Resources/v1/Contact.php +16 -19
- package/server/src/Http/Resources/v1/CurrentJob.php +13 -16
- package/server/src/Http/Resources/v1/Driver.php +59 -57
- package/server/src/Http/Resources/v1/Entity.php +30 -33
- package/server/src/Http/Resources/v1/FuelReport.php +16 -14
- package/server/src/Http/Resources/v1/Order.php +1 -1
- package/server/src/Http/Resources/v1/Payload.php +21 -24
- package/server/src/Http/Resources/v1/Place.php +27 -30
- package/server/src/Http/Resources/v1/Proof.php +13 -16
- package/server/src/Http/Resources/v1/PurchaseRate.php +14 -17
- package/server/src/Http/Resources/v1/ServiceArea.php +13 -16
- package/server/src/Http/Resources/v1/ServiceQuote.php +15 -18
- package/server/src/Http/Resources/v1/ServiceRate.php +33 -36
- package/server/src/Http/Resources/v1/ServiceRateFee.php +14 -17
- package/server/src/Http/Resources/v1/ServiceRateParcelFee.php +9 -12
- package/server/src/Http/Resources/v1/TrackingNumber.php +18 -21
- package/server/src/Http/Resources/v1/TrackingStatus.php +18 -21
- package/server/src/Http/Resources/v1/Vehicle.php +31 -34
- package/server/src/Http/Resources/v1/VehicleDevice.php +23 -25
- package/server/src/Http/Resources/v1/VehicleWithoutDriver.php +38 -32
- package/server/src/Http/Resources/v1/Vendor.php +31 -26
- package/server/src/Http/Resources/v1/Zone.php +14 -17
- package/server/src/Models/Driver.php +7 -1
- package/server/src/Models/FuelReport.php +2 -1
- package/server/src/Models/IntegratedVendor.php +6 -1
- package/server/src/Models/Order.php +24 -2
- package/server/src/Models/Place.php +2 -2
- package/server/src/Models/VehicleDevice.php +1 -1
- package/server/src/Models/VehicleDeviceEvent.php +2 -1
- package/server/src/Models/Vendor.php +1 -1
- package/server/src/Observers/DriverObserver.php +15 -0
- package/server/src/Observers/FleetObserver.php +19 -0
- package/server/src/Providers/FleetOpsServiceProvider.php +1 -0
- package/addon/components/full-calendar/draggable.js +0 -1
- package/addon/components/full-calendar.js +0 -1
- package/app/components/full-calendar/draggable.js +0 -1
- package/app/components/full-calendar.js +0 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { isNone } from '@ember/utils';
|
|
2
|
+
|
|
3
|
+
export default function getIssueCategories(type = null, options) {
|
|
4
|
+
const issueCategories = {
|
|
5
|
+
vehicle: ['Mechanical Problems', 'Cosmetic Damages', 'Tire Issues', 'Electronics and Instruments', 'Maintenance Alerts', 'Fuel Efficiency Issues'],
|
|
6
|
+
driver: ['Behavior Concerns', 'Documentation', 'Time Management', 'Communication', 'Training Needs', 'Health and Safety Violations'],
|
|
7
|
+
route: ['Inefficient Routes', 'Safety Concerns', 'Blocked Routes', 'Environmental Considerations', 'Unfavorable Weather Conditions'],
|
|
8
|
+
'payload-cargo': ['Damaged Goods', 'Misplaced Goods', 'Documentation Issues', 'Temperature-Sensitive Goods', 'Incorrect Cargo Loading'],
|
|
9
|
+
'software-technical': ['Bugs', 'UI/UX Concerns', 'Integration Failures', 'Performance', 'Feature Requests', 'Security Vulnerabilities'],
|
|
10
|
+
operational: ['Compliance', 'Resource Allocation', 'Cost Overruns', 'Communication', 'Vendor Management Issues'],
|
|
11
|
+
customer: ['Service Quality', 'Billing Discrepancies', 'Communication Breakdown', 'Feedback and Suggestions', 'Order Errors'],
|
|
12
|
+
security: ['Unauthorized Access', 'Data Concerns', 'Physical Security', 'Data Integrity Issues'],
|
|
13
|
+
'environmental-sustainability': ['Fuel Consumption', 'Carbon Footprint', 'Waste Management', 'Green Initiatives Opportunities'],
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
if (!isNone(type) && typeof type === 'object' && options === undefined) {
|
|
17
|
+
options = type;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if (!isNone(options) && typeof options === 'object' && options.fullObject === true) {
|
|
21
|
+
return issueCategories;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (type) {
|
|
25
|
+
return issueCategories[type] || [];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const allIssueCategories = Object.values(issueCategories).flat();
|
|
29
|
+
return allIssueCategories;
|
|
30
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export default function getVendorTypeOptions() {
|
|
2
|
+
return [
|
|
3
|
+
'carrier-trucking-company',
|
|
4
|
+
'carrier-shipping-line',
|
|
5
|
+
'carrier-air-cargo',
|
|
6
|
+
'carrier-rail',
|
|
7
|
+
'freight-forwarder',
|
|
8
|
+
'warehouse-provider',
|
|
9
|
+
'broker',
|
|
10
|
+
'maintenance-repair-facility',
|
|
11
|
+
'fuel-station',
|
|
12
|
+
'tire-service-provider',
|
|
13
|
+
'equipment-rental',
|
|
14
|
+
'customs-broker',
|
|
15
|
+
'third-party-logistics-provider',
|
|
16
|
+
'technology-provider',
|
|
17
|
+
'consultant',
|
|
18
|
+
'insurance-provider',
|
|
19
|
+
'last-mile-delivery-service',
|
|
20
|
+
'packing-crating-service',
|
|
21
|
+
'intermodal-operator',
|
|
22
|
+
'drayage-service-provider',
|
|
23
|
+
'cold-chain-provider',
|
|
24
|
+
'hazardous-material-specialist',
|
|
25
|
+
'parcel-courier',
|
|
26
|
+
'bulk-material-handler',
|
|
27
|
+
'towing-service',
|
|
28
|
+
'cargo-inspector',
|
|
29
|
+
'pallet-provider',
|
|
30
|
+
'label-packaging-material-supplier',
|
|
31
|
+
'driver-leasing-service',
|
|
32
|
+
'vehicle-manufacturer',
|
|
33
|
+
'vehicle-dealership',
|
|
34
|
+
'parts-supplier',
|
|
35
|
+
'logistics-association',
|
|
36
|
+
'regulatory-body',
|
|
37
|
+
'training-certification-provider',
|
|
38
|
+
'general-vendor',
|
|
39
|
+
'ecommerce',
|
|
40
|
+
];
|
|
41
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from '@fleetbase/fleetops-engine/components/live-map-drawer/driver-listing';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from '@fleetbase/fleetops-engine/components/live-map-drawer/place-listing';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from '@fleetbase/fleetops-engine/components/live-map-drawer/vehicle-listing';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from '@fleetbase/fleetops-engine/components/live-map-drawer';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from '@fleetbase/fleetops-engine/utils/create-full-calendar-event-from-order';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from '@fleetbase/fleetops-engine/utils/get-issue-categories';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from '@fleetbase/fleetops-engine/utils/get-issue-types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from '@fleetbase/fleetops-engine/utils/get-vendor-categories';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from '@fleetbase/fleetops-engine/utils/get-vendor-status-options';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from '@fleetbase/fleetops-engine/utils/get-vendor-type-options';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from '@fleetbase/fleetops-engine/utils/get-vendor-types';
|
package/composer.json
CHANGED
package/extension.json
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.4",
|
|
4
4
|
"description": "Fleet & Transport Management Extension for Fleetbase",
|
|
5
5
|
"fleetbase": {
|
|
6
6
|
"route": "fleet-ops",
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
"publish:github": "npm config set '@fleetbase:registry' https://npm.pkg.github.com/ && npm publish"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@fleetbase/ember-core": "^0.1.
|
|
43
|
-
"@fleetbase/ember-ui": "^0.2.
|
|
44
|
-
"@fleetbase/fleetops-data": "^0.1.
|
|
42
|
+
"@fleetbase/ember-core": "^0.1.8",
|
|
43
|
+
"@fleetbase/ember-ui": "^0.2.5",
|
|
44
|
+
"@fleetbase/fleetops-data": "^0.1.4",
|
|
45
45
|
"@fleetbase/leaflet-routing-machine": "^3.2.16",
|
|
46
46
|
"@fortawesome/ember-fontawesome": "^0.4.1",
|
|
47
47
|
"@fortawesome/fontawesome-svg-core": "^6.4.0",
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
use Illuminate\Database\Migrations\Migration;
|
|
4
|
+
use Illuminate\Database\Schema\Blueprint;
|
|
5
|
+
use Illuminate\Support\Facades\Schema;
|
|
6
|
+
|
|
7
|
+
class AddStatusColumnToFuelReportsTable extends Migration
|
|
8
|
+
{
|
|
9
|
+
/**
|
|
10
|
+
* Run the migrations.
|
|
11
|
+
*
|
|
12
|
+
* @return void
|
|
13
|
+
*/
|
|
14
|
+
public function up()
|
|
15
|
+
{
|
|
16
|
+
Schema::table('fuel_reports', function (Blueprint $table) {
|
|
17
|
+
$table->string('status')->nullable()->after('meta');
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Reverse the migrations.
|
|
23
|
+
*
|
|
24
|
+
* @return void
|
|
25
|
+
*/
|
|
26
|
+
public function down()
|
|
27
|
+
{
|
|
28
|
+
Schema::table('fuel_reports', function (Blueprint $table) {
|
|
29
|
+
$table->dropColumn('status');
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -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 AddCommentsColumnAndResolvedAtColumnToVehicleDeviceEventsTable extends Migration
|
|
8
|
+
{
|
|
9
|
+
/**
|
|
10
|
+
* Run the migrations.
|
|
11
|
+
*
|
|
12
|
+
* @return void
|
|
13
|
+
*/
|
|
14
|
+
public function up()
|
|
15
|
+
{
|
|
16
|
+
Schema::table('vehicle_device_events', function (Blueprint $table) {
|
|
17
|
+
$table->timestamp('resolved_at')->nullable()->after('reason')->index();
|
|
18
|
+
$table->mediumText('comment')->nullable()->after('reason');
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Reverse the migrations.
|
|
24
|
+
*
|
|
25
|
+
* @return void
|
|
26
|
+
*/
|
|
27
|
+
public function down()
|
|
28
|
+
{
|
|
29
|
+
Schema::table('vehicle_device_events', function (Blueprint $table) {
|
|
30
|
+
$table->dropColumn(['comment', 'resolved_at']);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -43,7 +43,7 @@ class DriverController extends Controller
|
|
|
43
43
|
public function create(CreateDriverRequest $request)
|
|
44
44
|
{
|
|
45
45
|
// get request input
|
|
46
|
-
$input = $request->except(['name', 'password', 'email', 'phone', 'location', 'meta']);
|
|
46
|
+
$input = $request->except(['name', 'password', 'email', 'phone', 'location', 'altitude', 'heading', 'speed', 'meta']);
|
|
47
47
|
|
|
48
48
|
// get user details for driver
|
|
49
49
|
$userDetails = $request->only(['name', 'password', 'email', 'phone']);
|
|
@@ -118,7 +118,7 @@ class DriverController extends Controller
|
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
// get request input
|
|
121
|
-
$input = $request->except(['name', 'password', 'email', 'phone', 'location', 'meta']);
|
|
121
|
+
$input = $request->except(['name', 'password', 'email', 'phone', 'location', 'altitude', 'heading', 'speed', 'meta']);
|
|
122
122
|
|
|
123
123
|
// get user details for driver
|
|
124
124
|
$userDetails = $request->only(['name', 'password', 'email', 'phone']);
|
|
@@ -24,7 +24,7 @@ class VehicleController extends Controller
|
|
|
24
24
|
public function create(CreateVehicleRequest $request)
|
|
25
25
|
{
|
|
26
26
|
// get request input
|
|
27
|
-
$input = $request->only(['status', 'make', 'model', 'year', 'trim', 'type', 'plate_number', 'vin', 'meta']);
|
|
27
|
+
$input = $request->only(['status', 'make', 'model', 'year', 'trim', 'type', 'plate_number', 'vin', 'meta', 'location', 'altitude', 'heading', 'speed']);
|
|
28
28
|
// make sure company is set
|
|
29
29
|
$input['company_uuid'] = session('company');
|
|
30
30
|
|
|
@@ -90,7 +90,7 @@ class VehicleController extends Controller
|
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
// get request input
|
|
93
|
-
$input = $request->only(['status', 'make', 'model', 'year', 'trim', 'type', 'plate_number', 'vin', 'meta']);
|
|
93
|
+
$input = $request->only(['status', 'make', 'model', 'year', 'trim', 'type', 'plate_number', 'vin', 'meta', 'location', 'altitude', 'heading', 'speed']);
|
|
94
94
|
|
|
95
95
|
// vendor assignment
|
|
96
96
|
if ($request->has('vendor')) {
|
|
@@ -78,7 +78,7 @@ class DriverController extends FleetOpsController
|
|
|
78
78
|
|
|
79
79
|
// create driver profile for user
|
|
80
80
|
$input = collect($input)
|
|
81
|
-
->except(['name', 'password', 'email', 'phone', '
|
|
81
|
+
->except(['name', 'password', 'email', 'phone', 'meta', 'avatar_uuid', 'photo_uuid'])
|
|
82
82
|
->filter()
|
|
83
83
|
->toArray();
|
|
84
84
|
|
|
@@ -87,10 +87,6 @@ class DriverController extends FleetOpsController
|
|
|
87
87
|
$input['user_uuid'] = $existingUser->uuid;
|
|
88
88
|
$input['slug'] = $existingUser->slug;
|
|
89
89
|
|
|
90
|
-
if ($request->missing('location')) {
|
|
91
|
-
$input['location'] = new Point(0, 0);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
90
|
// create the profile
|
|
95
91
|
$driverProfile = Driver::create($input);
|
|
96
92
|
|
|
@@ -135,12 +131,12 @@ class DriverController extends FleetOpsController
|
|
|
135
131
|
}
|
|
136
132
|
|
|
137
133
|
$input = $input
|
|
138
|
-
->except(['name', 'password', 'email', 'phone', '
|
|
134
|
+
->except(['name', 'password', 'email', 'phone', 'meta', 'avatar_uuid', 'photo_uuid'])
|
|
139
135
|
->filter()
|
|
140
136
|
->toArray();
|
|
141
137
|
|
|
142
138
|
if (!isset($input['password'])) {
|
|
143
|
-
$input['password'] = $userInput
|
|
139
|
+
$input['password'] = data_get($userInput, 'phone', Str::random(14));
|
|
144
140
|
}
|
|
145
141
|
|
|
146
142
|
$userInput['company_uuid'] = session('company');
|
|
@@ -164,10 +160,6 @@ class DriverController extends FleetOpsController
|
|
|
164
160
|
|
|
165
161
|
$input['user_uuid'] = $user->uuid;
|
|
166
162
|
$input['slug'] = $user->slug;
|
|
167
|
-
|
|
168
|
-
if ($request->missing('location')) {
|
|
169
|
-
$input['location'] = new Point(0, 0);
|
|
170
|
-
}
|
|
171
163
|
},
|
|
172
164
|
function ($request, &$driver) {
|
|
173
165
|
$driver->load(['user']);
|
|
@@ -210,14 +202,14 @@ class DriverController extends FleetOpsController
|
|
|
210
202
|
$request,
|
|
211
203
|
$id,
|
|
212
204
|
function (&$request, &$driver, &$input) {
|
|
213
|
-
$driver->load(['user']);
|
|
205
|
+
$driver->load(['user'])->guard(['user_uuid']);
|
|
214
206
|
$input = collect($input);
|
|
215
207
|
$userInput = $input->only(['name', 'password', 'email', 'phone', 'avatar_uuid'])->toArray();
|
|
216
208
|
// handle `photo_uuid`
|
|
217
209
|
if (isset($input['photo_uuid']) && Str::isUuid($input['photo_uuid'])) {
|
|
218
210
|
$userInput['avatar_uuid'] = $input['photo_uuid'];
|
|
219
211
|
}
|
|
220
|
-
$input = $input->except(['name', 'password', 'email', 'phone', '
|
|
212
|
+
$input = $input->except(['name', 'password', 'email', 'phone', 'meta', 'avatar_uuid', 'photo_uuid'])->toArray();
|
|
221
213
|
|
|
222
214
|
$driver->user->update($userInput);
|
|
223
215
|
$driver->flushAttributesCache();
|
|
@@ -39,8 +39,6 @@ class OrderController extends FleetOpsController
|
|
|
39
39
|
/**
|
|
40
40
|
* Creates a record with request payload.
|
|
41
41
|
*
|
|
42
|
-
* @param Illuminate\Http\Request $request
|
|
43
|
-
*
|
|
44
42
|
* @return \Illuminate\Http\Response
|
|
45
43
|
*/
|
|
46
44
|
public function createRecord(Request $request)
|
|
@@ -319,7 +317,7 @@ class OrderController extends FleetOpsController
|
|
|
319
317
|
public function start(Request $request)
|
|
320
318
|
{
|
|
321
319
|
/**
|
|
322
|
-
* @var \Fleetbase\Models\Order
|
|
320
|
+
* @var \Fleetbase\FleetOps\Models\Order
|
|
323
321
|
*/
|
|
324
322
|
$order = Order::where('uuid', $request->input('order'))->withoutGlobalScopes()->first();
|
|
325
323
|
|
|
@@ -37,6 +37,16 @@ class ContactFilter extends Filter
|
|
|
37
37
|
$this->builder->searchWhere('public_id', $publicId);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
public function name(?string $name)
|
|
41
|
+
{
|
|
42
|
+
$this->builder->searchWhere('name', $name);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
public function title(?string $title)
|
|
46
|
+
{
|
|
47
|
+
$this->builder->searchWhere('title', $title);
|
|
48
|
+
}
|
|
49
|
+
|
|
40
50
|
public function type(?string $type)
|
|
41
51
|
{
|
|
42
52
|
$this->builder->searchWhere('type', $type);
|
|
@@ -46,7 +46,7 @@ class FleetFilter extends Filter
|
|
|
46
46
|
$this->builder->whereHas(
|
|
47
47
|
'zone',
|
|
48
48
|
function ($query) use ($zone) {
|
|
49
|
-
$query->where('
|
|
49
|
+
$query->where('zone_uuid', $zone);
|
|
50
50
|
}
|
|
51
51
|
);
|
|
52
52
|
}
|
|
@@ -59,6 +59,8 @@ class FleetFilter extends Filter
|
|
|
59
59
|
$query->where('uuid', $fleet);
|
|
60
60
|
}
|
|
61
61
|
);
|
|
62
|
+
|
|
63
|
+
$this->builder->searchWhere('parent_fleet_uuid', $fleet);
|
|
62
64
|
}
|
|
63
65
|
|
|
64
66
|
public function vendor(?string $vendor)
|
|
@@ -71,11 +73,6 @@ class FleetFilter extends Filter
|
|
|
71
73
|
);
|
|
72
74
|
}
|
|
73
75
|
|
|
74
|
-
public function internalId(?string $internalId)
|
|
75
|
-
{
|
|
76
|
-
$this->builder->searchWhere('internal_id', $internalId);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
76
|
public function publicId(?string $publicId)
|
|
80
77
|
{
|
|
81
78
|
$this->builder->searchWhere('public_id', $publicId);
|
|
@@ -86,6 +83,11 @@ class FleetFilter extends Filter
|
|
|
86
83
|
$this->builder->searchWhere('task', $task);
|
|
87
84
|
}
|
|
88
85
|
|
|
86
|
+
public function name(?string $name)
|
|
87
|
+
{
|
|
88
|
+
$this->builder->searchWhere('name', $name);
|
|
89
|
+
}
|
|
90
|
+
|
|
89
91
|
public function status(?string $status)
|
|
90
92
|
{
|
|
91
93
|
$this->builder->searchWhere('status', $status);
|
|
@@ -23,11 +23,23 @@ class FuelReportFilter extends Filter
|
|
|
23
23
|
$this->builder->searchWhere('public_id', $publicId);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
public function volume(?string $volume)
|
|
27
|
+
{
|
|
28
|
+
$this->builder->searchWhere('volume', $volume);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
public function odometer(?string $odometer)
|
|
32
|
+
{
|
|
33
|
+
$this->builder->searchWhere('odometer', $odometer);
|
|
34
|
+
}
|
|
35
|
+
|
|
26
36
|
public function reporter(?string $reporter)
|
|
27
37
|
{
|
|
28
38
|
$this->builder->whereHas('reportedBy', function ($q) use ($reporter) {
|
|
29
39
|
if (Str::isUuid($reporter)) {
|
|
30
40
|
$q->where('uuid', $reporter);
|
|
41
|
+
} elseif (Utils::isPublicId($reporter)) {
|
|
42
|
+
$q->where('public_id', $reporter);
|
|
31
43
|
} else {
|
|
32
44
|
$q->search($reporter);
|
|
33
45
|
}
|
|
@@ -55,4 +67,43 @@ class FuelReportFilter extends Filter
|
|
|
55
67
|
$this->builder->whereDate('updated_at', $updatedAt);
|
|
56
68
|
}
|
|
57
69
|
}
|
|
70
|
+
|
|
71
|
+
public function driver(?string $driver)
|
|
72
|
+
{
|
|
73
|
+
$this->builder->whereHas('driver', function ($q) use ($driver) {
|
|
74
|
+
if (Str::isUuid($driver)) {
|
|
75
|
+
$q->where('uuid', $driver);
|
|
76
|
+
} elseif (Utils::isPublicId($driver)) {
|
|
77
|
+
$q->where('public_id', $driver);
|
|
78
|
+
} else {
|
|
79
|
+
$q->search($driver);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
public function vehicle(?string $vehicle)
|
|
85
|
+
{
|
|
86
|
+
$this->builder->whereHas('vehicle', function ($q) use ($vehicle) {
|
|
87
|
+
if (Str::isUuid($vehicle)) {
|
|
88
|
+
$q->where('uuid', $vehicle);
|
|
89
|
+
} elseif (Utils::isPublicId($vehicle)) {
|
|
90
|
+
$q->where('public_id', $vehicle);
|
|
91
|
+
} else {
|
|
92
|
+
$q->search($vehicle);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
public function status($status)
|
|
98
|
+
{
|
|
99
|
+
if (Str::contains($status, ',')) {
|
|
100
|
+
$status = explode(',', $status);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (is_array($status)) {
|
|
104
|
+
$this->builder->whereIn('status', $status);
|
|
105
|
+
} else {
|
|
106
|
+
$this->builder->where('status', $status);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
58
109
|
}
|
|
@@ -23,24 +23,80 @@ class IssueFilter extends Filter
|
|
|
23
23
|
$this->builder->searchWhere('public_id', $publicId);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
public function priority($priority)
|
|
27
|
+
{
|
|
28
|
+
if (Str::contains($priority, ',')) {
|
|
29
|
+
$priority = explode(',', $priority);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (is_array($priority)) {
|
|
33
|
+
$this->builder->whereIn('priority', $priority);
|
|
34
|
+
} else {
|
|
35
|
+
$this->builder->where('priority', $priority);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public function status($status)
|
|
40
|
+
{
|
|
41
|
+
if (Str::contains($status, ',')) {
|
|
42
|
+
$status = explode(',', $status);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (is_array($status)) {
|
|
46
|
+
$this->builder->whereIn('status', $status);
|
|
47
|
+
} else {
|
|
48
|
+
$this->builder->where('status', $status);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public function assignee(?string $assignee)
|
|
53
|
+
{
|
|
54
|
+
$this->builder->whereHas('assignedTo', function ($q) use ($assignee) {
|
|
55
|
+
if (Str::isUuid($assignee)) {
|
|
56
|
+
$q->where('uuid', $assignee);
|
|
57
|
+
} elseif (Utils::isPublicId($assignee)) {
|
|
58
|
+
$q->where('public_id', $assignee);
|
|
59
|
+
} else {
|
|
60
|
+
$q->search($assignee);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
26
65
|
public function reporter(?string $reporter)
|
|
27
66
|
{
|
|
28
67
|
$this->builder->whereHas('reportedBy', function ($q) use ($reporter) {
|
|
29
68
|
if (Str::isUuid($reporter)) {
|
|
30
69
|
$q->where('uuid', $reporter);
|
|
70
|
+
} elseif (Utils::isPublicId($reporter)) {
|
|
71
|
+
$q->where('public_id', $reporter);
|
|
31
72
|
} else {
|
|
32
73
|
$q->search($reporter);
|
|
33
74
|
}
|
|
34
75
|
});
|
|
35
76
|
}
|
|
36
77
|
|
|
37
|
-
public function
|
|
78
|
+
public function driver(?string $driver)
|
|
38
79
|
{
|
|
39
|
-
$this->builder->whereHas('
|
|
40
|
-
if (Str::isUuid($
|
|
41
|
-
$q->where('uuid', $
|
|
80
|
+
$this->builder->whereHas('driver', function ($q) use ($driver) {
|
|
81
|
+
if (Str::isUuid($driver)) {
|
|
82
|
+
$q->where('uuid', $driver);
|
|
83
|
+
} elseif (Utils::isPublicId($driver)) {
|
|
84
|
+
$q->where('public_id', $driver);
|
|
42
85
|
} else {
|
|
43
|
-
$q->search($
|
|
86
|
+
$q->search($driver);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
public function vehicle(?string $vehicle)
|
|
92
|
+
{
|
|
93
|
+
$this->builder->whereHas('vehicle', function ($q) use ($vehicle) {
|
|
94
|
+
if (Str::isUuid($vehicle)) {
|
|
95
|
+
$q->where('uuid', $vehicle);
|
|
96
|
+
} elseif (Utils::isPublicId($vehicle)) {
|
|
97
|
+
$q->where('public_id', $vehicle);
|
|
98
|
+
} else {
|
|
99
|
+
$q->search($vehicle);
|
|
44
100
|
}
|
|
45
101
|
});
|
|
46
102
|
}
|
|
@@ -20,14 +20,14 @@ class PlaceFilter extends Filter
|
|
|
20
20
|
$this->builder->search($searchQuery);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
public function
|
|
23
|
+
public function publicId(?string $publicId)
|
|
24
24
|
{
|
|
25
|
-
$this->builder->searchWhere('
|
|
25
|
+
$this->builder->searchWhere('public_id', $publicId);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
public function
|
|
28
|
+
public function postalCode(?string $postalCode)
|
|
29
29
|
{
|
|
30
|
-
$this->builder->searchWhere('
|
|
30
|
+
$this->builder->searchWhere('postal_code', $postalCode);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
public function phone(?string $phone)
|
|
@@ -35,9 +35,29 @@ class PlaceFilter extends Filter
|
|
|
35
35
|
$this->builder->searchWhere('phone', $phone);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
public function
|
|
38
|
+
public function city(?string $city)
|
|
39
|
+
{
|
|
40
|
+
$this->builder->searchWhere('city', $city);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public function neighborhood(?string $neighborhood)
|
|
44
|
+
{
|
|
45
|
+
$this->builder->searchWhere('neighborhood', $neighborhood);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public function state(?string $state)
|
|
49
|
+
{
|
|
50
|
+
$this->builder->searchWhere('province', $state);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
public function name(?string $name)
|
|
39
54
|
{
|
|
40
|
-
$this->builder->searchWhere('
|
|
55
|
+
$this->builder->searchWhere('name', $name);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public function address(?string $address)
|
|
59
|
+
{
|
|
60
|
+
$this->builder->searchWhere(['street1', 'street2'], $address);
|
|
41
61
|
}
|
|
42
62
|
|
|
43
63
|
public function country(?string $country)
|
|
@@ -45,6 +65,28 @@ class PlaceFilter extends Filter
|
|
|
45
65
|
$this->builder->where('country', $country);
|
|
46
66
|
}
|
|
47
67
|
|
|
68
|
+
public function createdAt($createdAt)
|
|
69
|
+
{
|
|
70
|
+
$createdAt = Utils::dateRange($createdAt);
|
|
71
|
+
|
|
72
|
+
if (is_array($createdAt)) {
|
|
73
|
+
$this->builder->whereBetween('created_at', $createdAt);
|
|
74
|
+
} else {
|
|
75
|
+
$this->builder->whereDate('created_at', $createdAt);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
public function updatedAt($updatedAt)
|
|
80
|
+
{
|
|
81
|
+
$updatedAt = Utils::dateRange($updatedAt);
|
|
82
|
+
|
|
83
|
+
if (is_array($updatedAt)) {
|
|
84
|
+
$this->builder->whereBetween('updated_at', $updatedAt);
|
|
85
|
+
} else {
|
|
86
|
+
$this->builder->whereDate('updated_at', $updatedAt);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
48
90
|
public function within($within)
|
|
49
91
|
{
|
|
50
92
|
// search for places within a radius of center coordinates
|