@fleetbase/fleetops-engine 0.4.16 → 0.4.17
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/.php-cs-fixer.php +2 -0
- package/addon/components/activity-event-selector.hbs +35 -0
- package/addon/components/activity-event-selector.js +85 -0
- package/addon/components/activity-form-panel.hbs +23 -0
- package/addon/components/activity-form-panel.js +90 -0
- package/addon/components/activity-logic-builder.hbs +80 -0
- package/addon/components/activity-logic-builder.js +260 -0
- package/addon/components/contact-form-panel.hbs +1 -1
- package/addon/components/contact-panel.hbs +1 -1
- package/addon/components/custom-entity-form-panel.hbs +43 -0
- package/addon/components/custom-entity-form-panel.js +129 -0
- package/addon/components/custom-field-form-panel/options-input.hbs +12 -0
- package/addon/components/custom-field-form-panel/options-input.js +139 -0
- package/addon/components/custom-field-form-panel.hbs +77 -0
- package/addon/components/custom-field-form-panel.js +144 -0
- package/addon/components/custom-field.hbs +63 -41
- package/addon/components/custom-field.js +123 -25
- package/addon/components/driver-form-panel.hbs +1 -1
- package/addon/components/driver-panel.hbs +1 -1
- package/addon/components/edit-order-route-panel.hbs +1 -1
- package/addon/components/fleet-form-panel.hbs +1 -1
- package/addon/components/fleet-panel.hbs +1 -1
- package/addon/components/fuel-report-form-panel.hbs +1 -1
- package/addon/components/fuel-report-panel.hbs +1 -1
- package/addon/components/issue-form-panel.hbs +1 -1
- package/addon/components/issue-panel.hbs +1 -1
- package/addon/components/joint-graph.hbs +1 -0
- package/addon/components/joint-graph.js +103 -0
- package/addon/components/layout/fleet-ops-sidebar.hbs +3 -3
- package/addon/components/layout/fleet-ops-sidebar.js +1 -0
- package/addon/components/live-map.js +71 -28
- package/addon/components/modals/new-custom-field-group.hbs +5 -0
- package/addon/components/modals/new-order-config.hbs +3 -3
- package/addon/components/modals/order-new-activity.hbs +1 -1
- package/addon/components/order-config-manager/activity-flow.hbs +11 -0
- package/addon/components/order-config-manager/activity-flow.js +964 -0
- package/addon/components/order-config-manager/custom-fields.hbs +50 -0
- package/addon/components/order-config-manager/custom-fields.js +276 -0
- package/addon/components/order-config-manager/details.hbs +23 -0
- package/addon/components/order-config-manager/details.js +97 -0
- package/addon/components/order-config-manager/entities.hbs +54 -0
- package/addon/components/order-config-manager/entities.js +227 -0
- package/addon/components/order-config-manager-overlay.hbs +26 -0
- package/addon/components/order-config-manager-overlay.js +60 -0
- package/addon/components/order-config-manager.hbs +15 -0
- package/addon/components/order-config-manager.js +285 -0
- package/addon/components/order-flow.hbs +1 -0
- package/addon/components/order-flow.js +3 -0
- package/addon/components/place-form-panel.hbs +1 -1
- package/addon/components/place-panel.hbs +1 -1
- package/addon/components/vehicle-form-panel.hbs +1 -1
- package/addon/components/vehicle-panel.hbs +1 -1
- package/addon/components/vendor-form-panel.hbs +1 -1
- package/addon/components/vendor-panel.hbs +1 -1
- package/addon/controllers/application.js +5 -1
- package/addon/controllers/operations/order-config.js +42 -0
- package/addon/controllers/operations/orders/index/new.js +125 -21
- package/addon/controllers/operations/orders/index/view.js +87 -4
- package/addon/controllers/operations/orders/index.js +2 -2
- package/addon/engine.js +10 -1
- package/addon/initializers/load-jointjs.js +16 -0
- package/addon/routes/application.js +1 -1
- package/addon/routes/operations/order-config.js +28 -0
- package/addon/routes/operations/orders/index/new.js +2 -3
- package/addon/routes/operations/orders/index/view.js +1 -1
- package/addon/routes.js +1 -0
- package/addon/services/context-panel.js +65 -3
- package/addon/styles/fleetops-engine.css +268 -0
- package/addon/templates/application.hbs +1 -1
- package/addon/templates/operations/order-config.hbs +55 -0
- package/addon/templates/operations/orders/index/new.hbs +98 -339
- package/addon/templates/operations/orders/index/view.hbs +36 -96
- package/addon/templates/operations/orders/index.hbs +0 -1
- package/addon/utils/apply-context-component-arguments.js +4 -2
- package/addon/utils/create-custom-entity.js +22 -0
- package/addon/utils/create-flow-activity.js +31 -0
- package/addon/utils/get-custom-field-type-map.js +34 -0
- package/app/components/activity-event-selector.js +1 -0
- package/app/components/activity-form-panel.js +1 -0
- package/app/components/activity-logic-builder.js +1 -0
- package/app/components/custom-entity-form-panel.js +1 -0
- package/app/components/custom-field-form-panel/options-input.js +1 -0
- package/app/components/custom-field-form-panel.js +1 -0
- package/app/components/joint-graph.js +1 -0
- package/app/components/modals/new-custom-field-group.js +1 -0
- package/app/components/order-config-manager/activity-flow.js +1 -0
- package/app/components/order-config-manager/custom-fields.js +1 -0
- package/app/components/order-config-manager/details.js +1 -0
- package/app/components/order-config-manager/entities.js +1 -0
- package/app/components/order-config-manager-overlay.js +1 -0
- package/app/components/order-config-manager.js +1 -0
- package/app/components/order-flow.js +1 -0
- package/app/controllers/operations/order-config.js +1 -0
- package/app/routes/operations/order-config.js +1 -0
- package/app/templates/operations/order-config.js +1 -0
- package/app/utils/create-custom-entity.js +1 -0
- package/app/utils/create-flow-activity.js +1 -0
- package/app/utils/get-custom-field-type-map.js +1 -0
- package/composer.json +4 -3
- package/config/environment.js +1 -0
- package/extension.json +1 -1
- package/index.js +20 -0
- package/package.json +7 -5
- package/server/migrations/2023_04_27_053456_create_contacts_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_drivers_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_entities_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_fleet_drivers_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_fleets_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_fuel_reports_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_integrated_vendors_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_issues_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_orders_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_payloads_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_places_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_positions_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_proofs_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_purchase_rates_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_routes_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_service_areas_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_service_quote_items_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_service_quotes_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_service_rate_fees_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_service_rate_parcel_fees_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_service_rates_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_tracking_numbers_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_tracking_statuses_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_vehicles_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_vendors_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_waypoints_table.php +1 -2
- package/server/migrations/2023_04_27_053456_create_zones_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_companies_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_contacts_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_drivers_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_entities_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fleet_drivers_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fleets_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fuel_reports_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_integrated_vendors_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_issues_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_orders_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_payloads_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_places_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_positions_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_proofs_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_purchase_rates_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_routes_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_areas_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_quote_items_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_quotes_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rate_fees_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rate_parcel_fees_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rates_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_tracking_numbers_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_tracking_statuses_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_vehicles_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_vendors_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_waypoints_table.php +1 -2
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_zones_table.php +1 -2
- package/server/migrations/2023_09_14_074512_update_vehicles_table.php +1 -2
- package/server/migrations/2023_09_14_074619_create_vehicle_devices_table.php +35 -36
- package/server/migrations/2023_09_26_071205_add_online_column_to_vehicles_table.php +1 -2
- package/server/migrations/2023_09_26_083957_create_fleet_vehicles_table.php +1 -2
- package/server/migrations/2023_09_27_023757_add_column_to_fleets_table.php +1 -2
- package/server/migrations/2023_10_05_074811_update_vehicle.php +1 -2
- package/server/migrations/2023_10_25_093014_create_vehicle_device_events_table.php +1 -2
- package/server/migrations/2023_11_03_072503_refactor_issues_table_columns.php +1 -2
- package/server/migrations/2023_11_06_040645_refactor_fuel_reports_table.php +1 -2
- package/server/migrations/2023_11_09_041807_add_status_column_to_fuel_reports_table.php +1 -2
- package/server/migrations/2023_11_15_062814_add_comments_column_and_resolved_at_column_to_vehicle_device_events_table.php +1 -2
- package/server/migrations/2023_11_17_053001_add_category_uuid_to_entities_table.php +1 -2
- package/server/migrations/2023_11_28_074244_add_supplier_uuid_column_to_entities_table.php +1 -2
- package/server/migrations/2023_12_14_100209_add_meta_column_on_driver_table copy.php +1 -2
- package/server/migrations/2024_02_18_100209_add_avatar_url_columns_table.php +3 -4
- package/server/migrations/2024_02_27_093648_create_order_configs_table.php +43 -0
- package/server/migrations/2024_03_07_075508_add_order_config_uuid_column_to_orders_table.php +28 -0
- package/server/seeders/OrderConfigSeeder.php +151 -0
- package/server/src/Casts/OrderConfigEntities.php +53 -0
- package/server/src/Console/Commands/FixLegacyOrderConfigs.php +66 -0
- package/server/src/Events/DriverLocationChanged.php +1 -1
- package/server/src/Events/DriverSimulatedLocationChanged.php +1 -1
- package/server/src/Flow/Activity.php +232 -6
- package/server/src/Flow/Condition.php +84 -0
- package/server/src/Flow/Event.php +88 -0
- package/server/src/Flow/Flow.php +50 -0
- package/server/src/Flow/FlowResource.php +143 -0
- package/server/src/Flow/Logic.php +57 -1
- package/server/src/Http/Controllers/Api/v1/DriverController.php +2 -2
- package/server/src/Http/Controllers/Api/v1/IssueController.php +132 -0
- package/server/src/Http/Controllers/Api/v1/OrderController.php +130 -57
- package/server/src/Http/Controllers/Api/v1/OrganizationController.php +27 -0
- package/server/src/Http/Controllers/Api/v1/PlaceController.php +2 -3
- package/server/src/Http/Controllers/Controller.php +9 -0
- package/server/src/Http/Controllers/FleetOpsController.php +7 -0
- package/server/src/Http/Controllers/Internal/v1/OrderConfigController.php +5 -259
- package/server/src/Http/Controllers/Internal/v1/OrderController.php +46 -26
- package/server/src/Http/Controllers/Internal/v1/SettingController.php +20 -0
- package/server/src/Http/Filter/OrderConfigFilter.php +13 -0
- package/server/src/Http/Requests/CreateIssueRequest.php +19 -0
- package/server/src/Http/Requests/UpdateIssueRequest.php +7 -0
- package/server/src/Http/Resources/v1/Order.php +3 -0
- package/server/src/Listeners/HandleOrderCanceled.php +8 -4
- package/server/src/Listeners/HandleOrderDispatched.php +14 -12
- package/server/src/Models/Order.php +527 -31
- package/server/src/Models/OrderConfig.php +419 -0
- package/server/src/Models/Payload.php +6 -7
- package/server/src/Notifications/OrderAssigned.php +1 -1
- package/server/src/Notifications/OrderCanceled.php +1 -1
- package/server/src/Notifications/OrderDispatchFailed.php +1 -1
- package/server/src/Notifications/OrderDispatched.php +1 -1
- package/server/src/Notifications/OrderPing.php +1 -1
- package/server/src/Providers/FleetOpsServiceProvider.php +3 -1
- package/server/src/Providers/NotificationServiceProvider.php +2 -1
- package/server/src/Support/Utils.php +17 -0
- package/server/src/Traits/HasTrackingNumber.php +9 -9
- package/server/src/routes.php +19 -11
- package/translations/en-us.yaml +137 -0
- package/server/src/Flow/Config.php +0 -7
- package/server/src/Support/Flow.php +0 -653
|
@@ -6,6 +6,7 @@ use Fleetbase\Exceptions\FleetbaseRequestValidationException;
|
|
|
6
6
|
use Fleetbase\FleetOps\Events\OrderDispatchFailed;
|
|
7
7
|
use Fleetbase\FleetOps\Events\OrderReady;
|
|
8
8
|
use Fleetbase\FleetOps\Events\OrderStarted;
|
|
9
|
+
use Fleetbase\FleetOps\Flow\Activity;
|
|
9
10
|
use Fleetbase\FleetOps\Http\Controllers\FleetOpsController;
|
|
10
11
|
use Fleetbase\FleetOps\Http\Requests\CancelOrderRequest;
|
|
11
12
|
use Fleetbase\FleetOps\Imports\OrdersImport;
|
|
@@ -17,9 +18,9 @@ use Fleetbase\FleetOps\Models\Place;
|
|
|
17
18
|
use Fleetbase\FleetOps\Models\ServiceQuote;
|
|
18
19
|
use Fleetbase\FleetOps\Models\TrackingStatus;
|
|
19
20
|
use Fleetbase\FleetOps\Models\Waypoint;
|
|
20
|
-
use Fleetbase\FleetOps\Support\Flow;
|
|
21
21
|
use Fleetbase\FleetOps\Support\Utils;
|
|
22
22
|
use Fleetbase\Http\Requests\Internal\BulkDeleteRequest;
|
|
23
|
+
use Fleetbase\Models\CustomFieldValue;
|
|
23
24
|
use Fleetbase\Models\File;
|
|
24
25
|
use Fleetbase\Models\Type;
|
|
25
26
|
use Illuminate\Http\Request;
|
|
@@ -78,11 +79,12 @@ class OrderController extends FleetOpsController
|
|
|
78
79
|
$isIntegratedVendorOrder = isset($requestInput['integrated_vendor_order']);
|
|
79
80
|
$serviceQuote = ServiceQuote::resolveFromRequest($request);
|
|
80
81
|
|
|
81
|
-
$route
|
|
82
|
-
$payload
|
|
83
|
-
$waypoints
|
|
84
|
-
$entities
|
|
85
|
-
$uploads
|
|
82
|
+
$route = Utils::get($input, 'route');
|
|
83
|
+
$payload = Utils::get($input, 'payload');
|
|
84
|
+
$waypoints = Utils::get($input, 'payload.waypoints');
|
|
85
|
+
$entities = Utils::get($input, 'payload.entities');
|
|
86
|
+
$uploads = Utils::get($input, 'files', []);
|
|
87
|
+
$customFieldValues = Utils::get($input, 'custom_field_values', []);
|
|
86
88
|
|
|
87
89
|
// save order route & payload with request input
|
|
88
90
|
$order
|
|
@@ -102,6 +104,20 @@ class OrderController extends FleetOpsController
|
|
|
102
104
|
}
|
|
103
105
|
}
|
|
104
106
|
|
|
107
|
+
// save custom field values
|
|
108
|
+
if (is_array($customFieldValues)) {
|
|
109
|
+
foreach ($customFieldValues as $customFieldValue) {
|
|
110
|
+
CustomFieldValue::create([
|
|
111
|
+
'company_uuid' => session('company'),
|
|
112
|
+
'custom_field_uuid' => data_get($customFieldValue, 'custom_field_uuid'),
|
|
113
|
+
'subject_uuid' => $order->uuid,
|
|
114
|
+
'subject_type' => Utils::getMutationType($order),
|
|
115
|
+
'value' => data_get($customFieldValue, 'value'),
|
|
116
|
+
'value_type' => data_get($customFieldValue, 'value_type', 'text'),
|
|
117
|
+
]);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
105
121
|
// if it's integrated vendor order apply to meta
|
|
106
122
|
if ($isIntegratedVendorOrder) {
|
|
107
123
|
$order->updateMeta(
|
|
@@ -357,7 +373,7 @@ class OrderController extends FleetOpsController
|
|
|
357
373
|
/**
|
|
358
374
|
* @var \Fleetbase\Models\Order
|
|
359
375
|
*/
|
|
360
|
-
$order = Order::select(['uuid', 'driver_assigned_uuid', 'adhoc', 'dispatched', 'dispatched_at'])->where('uuid', $request->input('order'))->withoutGlobalScopes()->first();
|
|
376
|
+
$order = Order::select(['uuid', 'driver_assigned_uuid', 'order_config_uuid', 'adhoc', 'dispatched', 'dispatched_at'])->where('uuid', $request->input('order'))->withoutGlobalScopes()->first();
|
|
361
377
|
|
|
362
378
|
if (!$order->hasDriverAssigned && !$order->adhoc) {
|
|
363
379
|
return response()->error('No driver assigned to dispatch!');
|
|
@@ -367,7 +383,7 @@ class OrderController extends FleetOpsController
|
|
|
367
383
|
return response()->error('Order has already been dispatched!');
|
|
368
384
|
}
|
|
369
385
|
|
|
370
|
-
$order->
|
|
386
|
+
$order->dispatchWithActivity();
|
|
371
387
|
|
|
372
388
|
return response()->json(
|
|
373
389
|
[
|
|
@@ -425,7 +441,7 @@ class OrderController extends FleetOpsController
|
|
|
425
441
|
$driver->save();
|
|
426
442
|
|
|
427
443
|
// get the next order activity
|
|
428
|
-
$flow = $activity =
|
|
444
|
+
$flow = $activity = $order->config()->nextFirstActivity();
|
|
429
445
|
|
|
430
446
|
/**
|
|
431
447
|
* @var \Fleetbase\LaravelMysqlSpatial\Types\Point
|
|
@@ -443,11 +459,11 @@ class OrderController extends FleetOpsController
|
|
|
443
459
|
|
|
444
460
|
// update activity for each waypoint and entity
|
|
445
461
|
foreach ($payload->waypointMarkers as $waypointMarker) {
|
|
446
|
-
$waypointMarker->insertActivity($activity
|
|
462
|
+
$waypointMarker->insertActivity($activity, $location);
|
|
447
463
|
}
|
|
448
464
|
|
|
449
465
|
foreach ($payload->entities as $entity) {
|
|
450
|
-
$entity->insertActivity($activity
|
|
466
|
+
$entity->insertActivity($activity, $location);
|
|
451
467
|
}
|
|
452
468
|
}
|
|
453
469
|
|
|
@@ -477,10 +493,11 @@ class OrderController extends FleetOpsController
|
|
|
477
493
|
return response()->error('No order found.');
|
|
478
494
|
}
|
|
479
495
|
|
|
480
|
-
$activity = $request->
|
|
496
|
+
$activity = $request->array('activity');
|
|
497
|
+
$activity = new Activity($activity, $order->getConfigFlow());
|
|
481
498
|
|
|
482
|
-
//
|
|
483
|
-
if (
|
|
499
|
+
// Handle pickup/dropoff order activity update as normal
|
|
500
|
+
if (Utils::isActivity($activity) && $activity->is('dispatched')) {
|
|
484
501
|
// make sure driver is assigned if not trigger failed dispatch
|
|
485
502
|
if (!$order->hasDriverAssigned && !$order->adhoc) {
|
|
486
503
|
event(new OrderDispatchFailed($order, 'No driver assigned for order to dispatch to.'));
|
|
@@ -493,28 +510,31 @@ class OrderController extends FleetOpsController
|
|
|
493
510
|
return response()->json(['status' => 'dispatched']);
|
|
494
511
|
}
|
|
495
512
|
|
|
496
|
-
if (is_array($activity) && $activity['code'] === 'completed' && $order->driverAssigned) {
|
|
497
|
-
// unset from driver current job
|
|
498
|
-
$order->driverAssigned->unassignCurrentOrder();
|
|
499
|
-
$order->notifyCompleted();
|
|
500
|
-
}
|
|
501
|
-
|
|
502
513
|
/**
|
|
503
514
|
* @var \Fleetbase\LaravelMysqlSpatial\Types\Point
|
|
504
515
|
*/
|
|
505
516
|
$location = $order->getLastLocation();
|
|
506
|
-
|
|
507
|
-
$order->
|
|
508
|
-
$order->insertActivity($activity['status'], $activity['details'], $location, $activity['code']);
|
|
517
|
+
$order->setStatus($activity->code);
|
|
518
|
+
$order->insertActivity($activity, $location);
|
|
509
519
|
|
|
510
520
|
// also update for each order entities if not multiple drop order
|
|
511
521
|
// all entities will share the same activity status as is one drop order
|
|
512
522
|
if (!$order->payload->isMultipleDropOrder) {
|
|
513
523
|
foreach ($order->payload->entities as $entity) {
|
|
514
|
-
$entity->insertActivity($activity
|
|
524
|
+
$entity->insertActivity($activity, $location);
|
|
515
525
|
}
|
|
516
526
|
}
|
|
517
527
|
|
|
528
|
+
// Handle order completed
|
|
529
|
+
if (Utils::isActivity($activity) && $activity->completesOrder() && $order->driverAssigned) {
|
|
530
|
+
// unset from driver current job
|
|
531
|
+
$order->driverAssigned->unassignCurrentOrder();
|
|
532
|
+
$order->complete();
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
// Fire activity events
|
|
536
|
+
$activity->fireEvents($order);
|
|
537
|
+
|
|
518
538
|
return response()->json(['status' => 'ok']);
|
|
519
539
|
}
|
|
520
540
|
|
|
@@ -534,9 +554,9 @@ class OrderController extends FleetOpsController
|
|
|
534
554
|
return response()->error('No order found.');
|
|
535
555
|
}
|
|
536
556
|
|
|
537
|
-
$
|
|
557
|
+
$nextActivities = $order->config()->nextActivity();
|
|
538
558
|
|
|
539
|
-
return response()->json($
|
|
559
|
+
return response()->json($nextActivities);
|
|
540
560
|
}
|
|
541
561
|
|
|
542
562
|
/**
|
|
@@ -11,6 +11,15 @@ use Illuminate\Http\Request;
|
|
|
11
11
|
*/
|
|
12
12
|
class SettingController extends Controller
|
|
13
13
|
{
|
|
14
|
+
/**
|
|
15
|
+
* Retrieves the current visibility settings.
|
|
16
|
+
*
|
|
17
|
+
* This method fetches the visibility settings for 'fleet-ops' from the database and
|
|
18
|
+
* returns them in a JSON response. The settings are retrieved based on a specific key
|
|
19
|
+
* from the 'Setting' model.
|
|
20
|
+
*
|
|
21
|
+
* @return \Illuminate\Http\Response the visibility settings in JSON format
|
|
22
|
+
*/
|
|
14
23
|
public function getVisibilitySettings()
|
|
15
24
|
{
|
|
16
25
|
$visibilitySettings = Setting::where('key', 'fleet-ops.visibility')->value('value');
|
|
@@ -18,6 +27,17 @@ class SettingController extends Controller
|
|
|
18
27
|
return response()->json(['visibilitySettings' => $visibilitySettings]);
|
|
19
28
|
}
|
|
20
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Saves the visibility settings provided in the request.
|
|
32
|
+
*
|
|
33
|
+
* This method accepts visibility settings via the request and updates them in the database.
|
|
34
|
+
* The new settings are saved using a specific key in the 'Setting' model. The method
|
|
35
|
+
* returns the updated settings in a JSON response.
|
|
36
|
+
*
|
|
37
|
+
* @param Request $request the HTTP request containing the visibility settings
|
|
38
|
+
*
|
|
39
|
+
* @return \Illuminate\Http\Response the updated visibility settings in JSON format
|
|
40
|
+
*/
|
|
21
41
|
public function saveVisibilitySettings(Request $request)
|
|
22
42
|
{
|
|
23
43
|
$visibilitySettings = $request->input('visibilitySettings', []);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Http\Filter;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\Http\Filter\Filter;
|
|
6
|
+
|
|
7
|
+
class OrderConfigFilter extends Filter
|
|
8
|
+
{
|
|
9
|
+
public function queryForInternal()
|
|
10
|
+
{
|
|
11
|
+
$this->builder->where('company_uuid', $this->session->get('company'));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Http\Requests;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\Http\Requests\FleetbaseRequest;
|
|
6
|
+
|
|
7
|
+
class CreateIssueRequest extends FleetbaseRequest
|
|
8
|
+
{
|
|
9
|
+
public function rules()
|
|
10
|
+
{
|
|
11
|
+
return [
|
|
12
|
+
'driver' => ['required'],
|
|
13
|
+
'location' => ['required'],
|
|
14
|
+
'category' => ['nullable'],
|
|
15
|
+
'type' => ['nullable'],
|
|
16
|
+
'priority' => ['nullable'],
|
|
17
|
+
];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -39,6 +39,8 @@ class Order extends FleetbaseResource
|
|
|
39
39
|
'service_quote_uuid' => $this->when(Http::isInternalRequest(), $this->service_quote_uuid),
|
|
40
40
|
'has_driver_assigned' => $this->when(Http::isInternalRequest(), $this->has_driver_assigned),
|
|
41
41
|
'is_scheduled' => $this->when(Http::isInternalRequest(), $this->is_scheduled),
|
|
42
|
+
'order_config' => $this->when(Http::isInternalRequest(), $this->whenLoaded('orderConfig', $this->orderConfig)),
|
|
43
|
+
'custom_field_values' => $this->when(Http::isInternalRequest(), $this->customFieldValues),
|
|
42
44
|
'customer' => $this->setCustomerType(Resolve::resourceForMorph($this->customer_type, $this->customer_uuid)),
|
|
43
45
|
'payload' => new Payload($this->payload),
|
|
44
46
|
'facilitator' => $this->setFacilitatorType(Resolve::resourceForMorph($this->facilitator_type, $this->facilitator_uuid)),
|
|
@@ -49,6 +51,7 @@ class Order extends FleetbaseResource
|
|
|
49
51
|
'files' => $this->when(Http::isInternalRequest(), $this->files, File::collection($this->files)),
|
|
50
52
|
'purchase_rate' => new PurchaseRate($this->purchaseRate),
|
|
51
53
|
'notes' => $this->notes,
|
|
54
|
+
...$this->getCustomFieldValues(),
|
|
52
55
|
'type' => $this->type,
|
|
53
56
|
'status' => $this->status,
|
|
54
57
|
'pod_method' => $this->pod_method,
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Listeners;
|
|
4
4
|
|
|
5
5
|
use Fleetbase\FleetOps\Events\OrderCanceled;
|
|
6
|
+
use Fleetbase\FleetOps\Flow\Activity;
|
|
6
7
|
use Fleetbase\FleetOps\Models\Driver;
|
|
7
8
|
use Fleetbase\FleetOps\Notifications\OrderCanceled as OrderCanceledNotification;
|
|
8
9
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
@@ -25,15 +26,18 @@ class HandleOrderCanceled implements ShouldQueue
|
|
|
25
26
|
$order = $event->getModelRecord();
|
|
26
27
|
$location = $order->getLastLocation();
|
|
27
28
|
|
|
28
|
-
//
|
|
29
|
-
$order->
|
|
30
|
-
|
|
29
|
+
// Create order cancel activity
|
|
30
|
+
$activity = $order->config()->getCanceledActivity();
|
|
31
|
+
|
|
32
|
+
// Update order activity
|
|
33
|
+
$order->setStatus($activity->status);
|
|
34
|
+
$order->createActivity($activity, $location);
|
|
31
35
|
|
|
32
36
|
if ($order->isIntegratedVendorOrder()) {
|
|
33
37
|
$order->facilitator->provider()->callback('onCanceled', $order);
|
|
34
38
|
}
|
|
35
39
|
|
|
36
|
-
//
|
|
40
|
+
// Notify driver assigned order was canceled
|
|
37
41
|
if ($order->hasDriverAssigned) {
|
|
38
42
|
/** @var \Fleetbase\Models\Driver */
|
|
39
43
|
$driver = Driver::where('uuid', $order->driver_assigned_uuid)->withoutGlobalScopes()->first();
|
|
@@ -5,9 +5,9 @@ namespace Fleetbase\FleetOps\Listeners;
|
|
|
5
5
|
use Fleetbase\FleetOps\Events\OrderDispatched;
|
|
6
6
|
use Fleetbase\FleetOps\Events\OrderDispatchFailed;
|
|
7
7
|
use Fleetbase\FleetOps\Models\Driver;
|
|
8
|
+
use Fleetbase\FleetOps\Models\TrackingStatus;
|
|
8
9
|
use Fleetbase\FleetOps\Notifications\OrderDispatched as OrderDispatchedNotification;
|
|
9
10
|
use Fleetbase\FleetOps\Notifications\OrderPing;
|
|
10
|
-
use Fleetbase\FleetOps\Support\Flow;
|
|
11
11
|
use Fleetbase\FleetOps\Support\Utils;
|
|
12
12
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
13
13
|
use Illuminate\Queue\InteractsWithQueue;
|
|
@@ -39,15 +39,19 @@ class HandleOrderDispatched implements ShouldQueue
|
|
|
39
39
|
return event(new OrderDispatchFailed($order, 'No driver assigned for order to dispatch to.'));
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Check if dispatch activity already exists, if not -
|
|
44
|
+
* Check for dispatch code in activity options, if there is the correct dispatch code update activity.
|
|
45
|
+
**/
|
|
46
|
+
$doesntHaveDispatchActivity = TrackingStatus::where(['code' => 'DISPATCHED', 'tracking_number_uuid' => $order->tracking_number_uuid])->doesntExist();
|
|
47
|
+
if ($doesntHaveDispatchActivity) {
|
|
48
|
+
$activity = $order->config()->getDispatchActivity();
|
|
49
|
+
if ($activity) {
|
|
50
|
+
/** update order activity */
|
|
51
|
+
$location = $order->getLastLocation();
|
|
52
|
+
$order->setStatus($activity->code);
|
|
53
|
+
$order->createActivity($activity, $location);
|
|
54
|
+
}
|
|
51
55
|
}
|
|
52
56
|
|
|
53
57
|
/* update dispatch attributes */
|
|
@@ -59,10 +63,8 @@ class HandleOrderDispatched implements ShouldQueue
|
|
|
59
63
|
/* if order is adhoc ping drivers within radius of pickup to accept order * */
|
|
60
64
|
if ($order->adhoc) {
|
|
61
65
|
$order->load(['company']);
|
|
62
|
-
|
|
63
66
|
$pickup = $order->getPickupLocation();
|
|
64
67
|
$distance = $order->getAdhocDistance();
|
|
65
|
-
|
|
66
68
|
if (!Utils::isPoint($pickup)) {
|
|
67
69
|
return;
|
|
68
70
|
}
|