@fleetbase/fleetops-engine 0.4.16 → 0.4.18

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 (225) hide show
  1. package/.php-cs-fixer.php +2 -0
  2. package/addon/components/activity-event-selector.hbs +35 -0
  3. package/addon/components/activity-event-selector.js +85 -0
  4. package/addon/components/activity-form-panel.hbs +23 -0
  5. package/addon/components/activity-form-panel.js +90 -0
  6. package/addon/components/activity-logic-builder.hbs +80 -0
  7. package/addon/components/activity-logic-builder.js +260 -0
  8. package/addon/components/contact-form-panel.hbs +1 -1
  9. package/addon/components/contact-panel.hbs +1 -1
  10. package/addon/components/custom-entity-form-panel.hbs +43 -0
  11. package/addon/components/custom-entity-form-panel.js +129 -0
  12. package/addon/components/custom-field-form-panel/options-input.hbs +12 -0
  13. package/addon/components/custom-field-form-panel/options-input.js +139 -0
  14. package/addon/components/custom-field-form-panel.hbs +77 -0
  15. package/addon/components/custom-field-form-panel.js +144 -0
  16. package/addon/components/custom-field.hbs +63 -41
  17. package/addon/components/custom-field.js +123 -25
  18. package/addon/components/driver-form-panel.hbs +1 -1
  19. package/addon/components/driver-panel.hbs +1 -1
  20. package/addon/components/edit-order-route-panel.hbs +1 -1
  21. package/addon/components/fleet-form-panel.hbs +1 -1
  22. package/addon/components/fleet-panel.hbs +1 -1
  23. package/addon/components/fuel-report-form-panel.hbs +1 -1
  24. package/addon/components/fuel-report-panel.hbs +1 -1
  25. package/addon/components/issue-form-panel.hbs +1 -1
  26. package/addon/components/issue-panel.hbs +1 -1
  27. package/addon/components/joint-graph.hbs +1 -0
  28. package/addon/components/joint-graph.js +103 -0
  29. package/addon/components/layout/fleet-ops-sidebar.hbs +3 -3
  30. package/addon/components/layout/fleet-ops-sidebar.js +1 -0
  31. package/addon/components/live-map.js +71 -28
  32. package/addon/components/modals/new-custom-field-group.hbs +5 -0
  33. package/addon/components/modals/new-order-config.hbs +3 -3
  34. package/addon/components/modals/order-new-activity.hbs +1 -1
  35. package/addon/components/order-config-manager/activity-flow.hbs +11 -0
  36. package/addon/components/order-config-manager/activity-flow.js +964 -0
  37. package/addon/components/order-config-manager/custom-fields.hbs +50 -0
  38. package/addon/components/order-config-manager/custom-fields.js +276 -0
  39. package/addon/components/order-config-manager/details.hbs +23 -0
  40. package/addon/components/order-config-manager/details.js +106 -0
  41. package/addon/components/order-config-manager/entities.hbs +54 -0
  42. package/addon/components/order-config-manager/entities.js +227 -0
  43. package/addon/components/order-config-manager-overlay.hbs +26 -0
  44. package/addon/components/order-config-manager-overlay.js +60 -0
  45. package/addon/components/order-config-manager.hbs +15 -0
  46. package/addon/components/order-config-manager.js +298 -0
  47. package/addon/components/order-flow.hbs +1 -0
  48. package/addon/components/order-flow.js +3 -0
  49. package/addon/components/place-form-panel.hbs +1 -1
  50. package/addon/components/place-panel.hbs +1 -1
  51. package/addon/components/vehicle-form-panel.hbs +1 -1
  52. package/addon/components/vehicle-panel.hbs +1 -1
  53. package/addon/components/vendor-form-panel.hbs +1 -1
  54. package/addon/components/vendor-panel.hbs +1 -1
  55. package/addon/controllers/application.js +5 -1
  56. package/addon/controllers/operations/order-config.js +43 -0
  57. package/addon/controllers/operations/orders/index/new.js +125 -21
  58. package/addon/controllers/operations/orders/index/view.js +87 -4
  59. package/addon/controllers/operations/orders/index.js +2 -2
  60. package/addon/engine.js +10 -1
  61. package/addon/initializers/load-jointjs.js +16 -0
  62. package/addon/routes/application.js +1 -1
  63. package/addon/routes/operations/order-config.js +28 -0
  64. package/addon/routes/operations/orders/index/new.js +2 -3
  65. package/addon/routes/operations/orders/index/view.js +1 -1
  66. package/addon/routes.js +1 -0
  67. package/addon/services/context-panel.js +65 -3
  68. package/addon/styles/fleetops-engine.css +268 -0
  69. package/addon/templates/application.hbs +1 -1
  70. package/addon/templates/operations/order-config.hbs +55 -0
  71. package/addon/templates/operations/orders/index/new.hbs +98 -339
  72. package/addon/templates/operations/orders/index/view.hbs +36 -96
  73. package/addon/templates/operations/orders/index.hbs +0 -1
  74. package/addon/utils/apply-context-component-arguments.js +4 -2
  75. package/addon/utils/create-custom-entity.js +22 -0
  76. package/addon/utils/create-flow-activity.js +31 -0
  77. package/addon/utils/get-custom-field-type-map.js +34 -0
  78. package/app/components/activity-event-selector.js +1 -0
  79. package/app/components/activity-form-panel.js +1 -0
  80. package/app/components/activity-logic-builder.js +1 -0
  81. package/app/components/custom-entity-form-panel.js +1 -0
  82. package/app/components/custom-field-form-panel/options-input.js +1 -0
  83. package/app/components/custom-field-form-panel.js +1 -0
  84. package/app/components/joint-graph.js +1 -0
  85. package/app/components/modals/new-custom-field-group.js +1 -0
  86. package/app/components/order-config-manager/activity-flow.js +1 -0
  87. package/app/components/order-config-manager/custom-fields.js +1 -0
  88. package/app/components/order-config-manager/details.js +1 -0
  89. package/app/components/order-config-manager/entities.js +1 -0
  90. package/app/components/order-config-manager-overlay.js +1 -0
  91. package/app/components/order-config-manager.js +1 -0
  92. package/app/components/order-flow.js +1 -0
  93. package/app/controllers/operations/order-config.js +1 -0
  94. package/app/routes/operations/order-config.js +1 -0
  95. package/app/templates/operations/order-config.js +1 -0
  96. package/app/utils/create-custom-entity.js +1 -0
  97. package/app/utils/create-flow-activity.js +1 -0
  98. package/app/utils/get-custom-field-type-map.js +1 -0
  99. package/composer.json +4 -3
  100. package/config/environment.js +1 -0
  101. package/extension.json +1 -1
  102. package/index.js +20 -0
  103. package/package.json +7 -5
  104. package/server/config/api.php +3 -650
  105. package/server/migrations/2023_04_27_053456_create_contacts_table.php +1 -2
  106. package/server/migrations/2023_04_27_053456_create_drivers_table.php +1 -2
  107. package/server/migrations/2023_04_27_053456_create_entities_table.php +1 -2
  108. package/server/migrations/2023_04_27_053456_create_fleet_drivers_table.php +1 -2
  109. package/server/migrations/2023_04_27_053456_create_fleets_table.php +1 -2
  110. package/server/migrations/2023_04_27_053456_create_fuel_reports_table.php +1 -2
  111. package/server/migrations/2023_04_27_053456_create_integrated_vendors_table.php +1 -2
  112. package/server/migrations/2023_04_27_053456_create_issues_table.php +1 -2
  113. package/server/migrations/2023_04_27_053456_create_orders_table.php +1 -2
  114. package/server/migrations/2023_04_27_053456_create_payloads_table.php +1 -2
  115. package/server/migrations/2023_04_27_053456_create_places_table.php +1 -2
  116. package/server/migrations/2023_04_27_053456_create_positions_table.php +1 -2
  117. package/server/migrations/2023_04_27_053456_create_proofs_table.php +1 -2
  118. package/server/migrations/2023_04_27_053456_create_purchase_rates_table.php +1 -2
  119. package/server/migrations/2023_04_27_053456_create_routes_table.php +1 -2
  120. package/server/migrations/2023_04_27_053456_create_service_areas_table.php +1 -2
  121. package/server/migrations/2023_04_27_053456_create_service_quote_items_table.php +1 -2
  122. package/server/migrations/2023_04_27_053456_create_service_quotes_table.php +1 -2
  123. package/server/migrations/2023_04_27_053456_create_service_rate_fees_table.php +1 -2
  124. package/server/migrations/2023_04_27_053456_create_service_rate_parcel_fees_table.php +1 -2
  125. package/server/migrations/2023_04_27_053456_create_service_rates_table.php +1 -2
  126. package/server/migrations/2023_04_27_053456_create_tracking_numbers_table.php +1 -2
  127. package/server/migrations/2023_04_27_053456_create_tracking_statuses_table.php +1 -2
  128. package/server/migrations/2023_04_27_053456_create_vehicles_table.php +1 -2
  129. package/server/migrations/2023_04_27_053456_create_vendors_table.php +1 -2
  130. package/server/migrations/2023_04_27_053456_create_waypoints_table.php +1 -2
  131. package/server/migrations/2023_04_27_053456_create_zones_table.php +1 -2
  132. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_companies_table.php +1 -2
  133. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_contacts_table.php +1 -2
  134. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_drivers_table.php +1 -2
  135. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_entities_table.php +1 -2
  136. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fleet_drivers_table.php +1 -2
  137. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fleets_table.php +1 -2
  138. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fuel_reports_table.php +1 -2
  139. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_integrated_vendors_table.php +1 -2
  140. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_issues_table.php +1 -2
  141. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_orders_table.php +1 -2
  142. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_payloads_table.php +1 -2
  143. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_places_table.php +1 -2
  144. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_positions_table.php +1 -2
  145. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_proofs_table.php +1 -2
  146. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_purchase_rates_table.php +1 -2
  147. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_routes_table.php +1 -2
  148. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_areas_table.php +1 -2
  149. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_quote_items_table.php +1 -2
  150. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_quotes_table.php +1 -2
  151. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rate_fees_table.php +1 -2
  152. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rate_parcel_fees_table.php +1 -2
  153. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rates_table.php +1 -2
  154. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_tracking_numbers_table.php +1 -2
  155. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_tracking_statuses_table.php +1 -2
  156. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_vehicles_table.php +1 -2
  157. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_vendors_table.php +1 -2
  158. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_waypoints_table.php +1 -2
  159. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_zones_table.php +1 -2
  160. package/server/migrations/2023_09_14_074512_update_vehicles_table.php +1 -2
  161. package/server/migrations/2023_09_14_074619_create_vehicle_devices_table.php +35 -36
  162. package/server/migrations/2023_09_26_071205_add_online_column_to_vehicles_table.php +1 -2
  163. package/server/migrations/2023_09_26_083957_create_fleet_vehicles_table.php +1 -2
  164. package/server/migrations/2023_09_27_023757_add_column_to_fleets_table.php +1 -2
  165. package/server/migrations/2023_10_05_074811_update_vehicle.php +1 -2
  166. package/server/migrations/2023_10_25_093014_create_vehicle_device_events_table.php +1 -2
  167. package/server/migrations/2023_11_03_072503_refactor_issues_table_columns.php +1 -2
  168. package/server/migrations/2023_11_06_040645_refactor_fuel_reports_table.php +1 -2
  169. package/server/migrations/2023_11_09_041807_add_status_column_to_fuel_reports_table.php +1 -2
  170. package/server/migrations/2023_11_15_062814_add_comments_column_and_resolved_at_column_to_vehicle_device_events_table.php +1 -2
  171. package/server/migrations/2023_11_17_053001_add_category_uuid_to_entities_table.php +1 -2
  172. package/server/migrations/2023_11_28_074244_add_supplier_uuid_column_to_entities_table.php +1 -2
  173. package/server/migrations/2023_12_14_100209_add_meta_column_on_driver_table copy.php +1 -2
  174. package/server/migrations/2024_02_18_100209_add_avatar_url_columns_table.php +3 -4
  175. package/server/migrations/2024_02_27_093648_create_order_configs_table.php +43 -0
  176. package/server/migrations/2024_03_07_075508_add_order_config_uuid_column_to_orders_table.php +28 -0
  177. package/server/migrations/2024_03_12_033527_add_public_id_column_to_order_configs_table.php +34 -0
  178. package/server/seeders/OrderConfigSeeder.php +23 -0
  179. package/server/src/Casts/OrderConfigEntities.php +53 -0
  180. package/server/src/Console/Commands/FixLegacyOrderConfigs.php +66 -0
  181. package/server/src/Events/DriverLocationChanged.php +1 -1
  182. package/server/src/Events/DriverSimulatedLocationChanged.php +1 -1
  183. package/server/src/Flow/Activity.php +232 -6
  184. package/server/src/Flow/Condition.php +84 -0
  185. package/server/src/Flow/Event.php +88 -0
  186. package/server/src/Flow/Flow.php +50 -0
  187. package/server/src/Flow/FlowResource.php +143 -0
  188. package/server/src/Flow/Logic.php +57 -1
  189. package/server/src/Http/Controllers/Api/v1/DriverController.php +2 -2
  190. package/server/src/Http/Controllers/Api/v1/IssueController.php +132 -0
  191. package/server/src/Http/Controllers/Api/v1/OrderController.php +152 -57
  192. package/server/src/Http/Controllers/Api/v1/OrganizationController.php +27 -0
  193. package/server/src/Http/Controllers/Api/v1/PlaceController.php +2 -3
  194. package/server/src/Http/Controllers/Controller.php +9 -0
  195. package/server/src/Http/Controllers/FleetOpsController.php +7 -0
  196. package/server/src/Http/Controllers/Internal/v1/OrderConfigController.php +40 -233
  197. package/server/src/Http/Controllers/Internal/v1/OrderController.php +58 -28
  198. package/server/src/Http/Controllers/Internal/v1/SettingController.php +20 -0
  199. package/server/src/Http/Filter/OrderConfigFilter.php +13 -0
  200. package/server/src/Http/Requests/CreateIssueRequest.php +19 -0
  201. package/server/src/Http/Requests/Internal/CreateOrderConfigRequest.php +40 -0
  202. package/server/src/Http/Requests/Internal/CreateOrderRequest.php +66 -0
  203. package/server/src/Http/Requests/Internal/DeleteOrderConfigRequest.php +0 -0
  204. package/server/src/Http/Requests/UpdateIssueRequest.php +7 -0
  205. package/server/src/Http/Resources/v1/Order.php +3 -0
  206. package/server/src/Listeners/HandleOrderCanceled.php +8 -4
  207. package/server/src/Listeners/HandleOrderDispatched.php +14 -12
  208. package/server/src/Models/Order.php +527 -31
  209. package/server/src/Models/OrderConfig.php +467 -0
  210. package/server/src/Models/Payload.php +6 -7
  211. package/server/src/Notifications/OrderAssigned.php +1 -1
  212. package/server/src/Notifications/OrderCanceled.php +1 -1
  213. package/server/src/Notifications/OrderDispatchFailed.php +1 -1
  214. package/server/src/Notifications/OrderDispatched.php +1 -1
  215. package/server/src/Notifications/OrderPing.php +1 -1
  216. package/server/src/Observers/CompanyObserver.php +20 -0
  217. package/server/src/Providers/FleetOpsServiceProvider.php +4 -1
  218. package/server/src/Providers/NotificationServiceProvider.php +2 -1
  219. package/server/src/Support/FleetOps.php +137 -0
  220. package/server/src/Support/Utils.php +17 -0
  221. package/server/src/Traits/HasTrackingNumber.php +9 -9
  222. package/server/src/routes.php +19 -11
  223. package/translations/en-us.yaml +137 -0
  224. package/server/src/Flow/Config.php +0 -7
  225. package/server/src/Support/Flow.php +0 -653
@@ -0,0 +1,66 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Http\Requests\Internal;
4
+
5
+ use Fleetbase\Http\Requests\FleetbaseRequest;
6
+ use Fleetbase\Rules\ExistsInAny;
7
+
8
+ class CreateOrderRequest extends FleetbaseRequest
9
+ {
10
+ /**
11
+ * Determine if the user is authorized to make this request.
12
+ *
13
+ * @return bool
14
+ */
15
+ public function authorize()
16
+ {
17
+ return request()->session()->has('company');
18
+ }
19
+
20
+ /**
21
+ * Get the validation rules that apply to the request.
22
+ *
23
+ * @return array
24
+ */
25
+ public function rules()
26
+ {
27
+ $validations = [
28
+ 'order_config_uuid' => 'required',
29
+ // 'adhoc' => 'in:true,false,1,0',
30
+ 'dispatch' => ['nullable', 'boolean'],
31
+ // 'adhoc_distance' => 'numeric',
32
+ 'pod_required' => 'in:true,false,1,0',
33
+ 'pod_method' => 'in:' . config('api.pod_methods'),
34
+ 'scheduled_at' => ['nullable', 'date'],
35
+ 'driver' => 'nullable|exists:drivers,uuid',
36
+ 'service_quote' => 'nullable|exists:service_quotes,uuid',
37
+ 'purchase_rate' => 'nullable|exists:purchase_rates,uuid',
38
+ 'facilitator' => ['nullable', new ExistsInAny(['vendors', 'contacts', 'integrated_vendors'], ['uuid', 'provider'])],
39
+ 'customer' => ['nullable', new ExistsInAny(['vendors', 'contacts'], 'uuid')],
40
+ 'status' => 'nullable|string',
41
+ 'type' => 'string',
42
+ ];
43
+
44
+ if ($this->has('payload')) {
45
+ $validations['payload.entities'] = 'array';
46
+ $validations['payload.waypoints'] = 'array';
47
+
48
+ if ($this->isArray('payload')) {
49
+ $validations['payload'] = 'required';
50
+
51
+ if ($this->missing('payload.waypoints')) {
52
+ $validations['payload.pickup_uuid'] = 'required';
53
+ $validations['payload.dropoff_uuid'] = 'required';
54
+ }
55
+
56
+ if ($this->missing(['payload.pickup', 'payload.dropoff'])) {
57
+ $validations['payload.waypoints'] = 'required|array|min:2';
58
+ }
59
+
60
+ $validations['payload.return_uuid'] = 'nullable';
61
+ }
62
+ }
63
+
64
+ return $validations;
65
+ }
66
+ }
@@ -0,0 +1,7 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Http\Requests;
4
+
5
+ class UpdateIssueRequest extends CreateIssueRequest
6
+ {
7
+ }
@@ -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), data_get($this->orderConfig, 'public_id')),
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
- // update order activity
29
- $order->setStatus('canceled');
30
- $order->createActivity('Order canceled', 'Order was canceled', $location, $order->status);
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
- // notify driver assigned order was canceled
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
- /** check for dispatch code in activity options, if there is the correct dispatch code update activity */
43
- $activity = Flow::getDispatchActivity($order);
44
-
45
- if ($activity) {
46
- /** update order activity */
47
- $location = $order->getLastLocation();
48
-
49
- $order->setStatus($activity['code']);
50
- $order->createActivity($activity['status'], $activity['details'], $location, $activity['code']);
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
  }