@fleetbase/fleetops-engine 0.2.5 → 0.2.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.
Files changed (325) hide show
  1. package/.gitattributes +14 -0
  2. package/.php-cs-fixer.cache +1 -0
  3. package/.php-cs-fixer.php +29 -0
  4. package/LICENSE.md +16 -4
  5. package/README.md +103 -13
  6. package/addon/components/admin/visibility-controls.hbs +12 -0
  7. package/addon/components/admin/visibility-controls.js +82 -0
  8. package/addon/components/fleet-panel.js +13 -4
  9. package/addon/components/fleet-vehicle-listing.hbs +1 -1
  10. package/addon/components/layout/fleet-ops-sidebar.hbs +26 -0
  11. package/addon/components/layout/fleet-ops-sidebar.js +129 -0
  12. package/addon/engine.js +19 -0
  13. package/addon/helpers/is-section-visible.js +5 -0
  14. package/addon/routes/application.js +6 -2
  15. package/addon/routes/virtual.js +10 -0
  16. package/addon/routes.js +1 -0
  17. package/addon/templates/application.hbs +1 -19
  18. package/addon/templates/virtual.hbs +9 -0
  19. package/app/components/admin/visibility-controls.js +1 -0
  20. package/app/components/layout/fleet-ops-sidebar.js +1 -0
  21. package/app/helpers/is-section-visible.js +1 -0
  22. package/app/routes/virtual.js +1 -0
  23. package/app/templates/virtual.js +1 -0
  24. package/composer.json +85 -0
  25. package/extension.json +10 -0
  26. package/package.json +6 -6
  27. package/phpstan.neon.dist +8 -0
  28. package/phpunit.xml.dist +16 -0
  29. package/server/config/api.php +765 -0
  30. package/server/config/cache.stores.php +18 -0
  31. package/server/config/dompdf.php +242 -0
  32. package/server/config/fleetops.php +19 -0
  33. package/server/config/geocoder.php +108 -0
  34. package/server/data/globe.json +261 -0
  35. package/server/migrations/2023_04_27_053456_create_contacts_table.php +49 -0
  36. package/server/migrations/2023_04_27_053456_create_drivers_table.php +62 -0
  37. package/server/migrations/2023_04_27_053456_create_entities_table.php +67 -0
  38. package/server/migrations/2023_04_27_053456_create_fleet_drivers_table.php +39 -0
  39. package/server/migrations/2023_04_27_053456_create_fleets_table.php +47 -0
  40. package/server/migrations/2023_04_27_053456_create_fuel_reports_table.php +50 -0
  41. package/server/migrations/2023_04_27_053456_create_integrated_vendors_table.php +44 -0
  42. package/server/migrations/2023_04_27_053456_create_issues_table.php +53 -0
  43. package/server/migrations/2023_04_27_053456_create_orders_table.php +70 -0
  44. package/server/migrations/2023_04_27_053456_create_payloads_table.php +51 -0
  45. package/server/migrations/2023_04_27_053456_create_places_table.php +62 -0
  46. package/server/migrations/2023_04_27_053456_create_positions_table.php +46 -0
  47. package/server/migrations/2023_04_27_053456_create_proofs_table.php +44 -0
  48. package/server/migrations/2023_04_27_053456_create_purchase_rates_table.php +46 -0
  49. package/server/migrations/2023_04_27_053456_create_routes_table.php +40 -0
  50. package/server/migrations/2023_04_27_053456_create_service_areas_table.php +47 -0
  51. package/server/migrations/2023_04_27_053456_create_service_quote_items_table.php +42 -0
  52. package/server/migrations/2023_04_27_053456_create_service_quotes_table.php +47 -0
  53. package/server/migrations/2023_04_27_053456_create_service_rate_fees_table.php +45 -0
  54. package/server/migrations/2023_04_27_053456_create_service_rate_parcel_fees_table.php +47 -0
  55. package/server/migrations/2023_04_27_053456_create_service_rates_table.php +61 -0
  56. package/server/migrations/2023_04_27_053456_create_tracking_numbers_table.php +46 -0
  57. package/server/migrations/2023_04_27_053456_create_tracking_statuses_table.php +54 -0
  58. package/server/migrations/2023_04_27_053456_create_vehicles_table.php +84 -0
  59. package/server/migrations/2023_04_27_053456_create_vendors_table.php +56 -0
  60. package/server/migrations/2023_04_27_053456_create_waypoints_table.php +45 -0
  61. package/server/migrations/2023_04_27_053456_create_zones_table.php +46 -0
  62. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_companies_table.php +32 -0
  63. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_contacts_table.php +34 -0
  64. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_drivers_table.php +40 -0
  65. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_entities_table.php +40 -0
  66. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fleet_drivers_table.php +34 -0
  67. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fleets_table.php +36 -0
  68. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fuel_reports_table.php +36 -0
  69. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_integrated_vendors_table.php +34 -0
  70. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_issues_table.php +38 -0
  71. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_orders_table.php +48 -0
  72. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_payloads_table.php +40 -0
  73. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_places_table.php +32 -0
  74. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_positions_table.php +36 -0
  75. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_proofs_table.php +34 -0
  76. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_purchase_rates_table.php +38 -0
  77. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_routes_table.php +34 -0
  78. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_areas_table.php +34 -0
  79. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_quote_items_table.php +32 -0
  80. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_quotes_table.php +38 -0
  81. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rate_fees_table.php +32 -0
  82. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rate_parcel_fees_table.php +32 -0
  83. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rates_table.php +36 -0
  84. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_tracking_numbers_table.php +34 -0
  85. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_tracking_statuses_table.php +34 -0
  86. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_vehicles_table.php +36 -0
  87. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_vendors_table.php +40 -0
  88. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_waypoints_table.php +38 -0
  89. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_zones_table.php +34 -0
  90. package/server/migrations/2023_09_14_074512_update_vehicles_table.php +100 -0
  91. package/server/migrations/2023_09_14_074619_create_vehicle_devices_table.php +44 -0
  92. package/server/migrations/2023_09_26_071205_add_online_column_to_vehicles_table.php +32 -0
  93. package/server/migrations/2023_09_26_083957_create_fleet_vehicles_table.php +45 -0
  94. package/server/migrations/2023_09_27_023757_add_column_to_fleets_table.php +46 -0
  95. package/server/migrations/2023_10_05_074811_update_vehicle.php +42 -0
  96. package/server/resources/views/labels/default.php +165 -0
  97. package/server/src/Auth/Schemas/FleetOps.php +75 -0
  98. package/server/src/Casts/MultiPolygon.php +50 -0
  99. package/server/src/Casts/Point.php +109 -0
  100. package/server/src/Casts/Polygon.php +46 -0
  101. package/server/src/Console/Commands/DispatchAdhocOrders.php +137 -0
  102. package/server/src/Console/Commands/DispatchOrders.php +71 -0
  103. package/server/src/Console/Commands/TrackOrderDistanceAndTime.php +62 -0
  104. package/server/src/Events/DriverLocationChanged.php +174 -0
  105. package/server/src/Events/DriverSimulatedLocationChanged.php +183 -0
  106. package/server/src/Events/EntityDriverAssigned.php +36 -0
  107. package/server/src/Events/OrderCanceled.php +15 -0
  108. package/server/src/Events/OrderCompleted.php +15 -0
  109. package/server/src/Events/OrderDispatchFailed.php +42 -0
  110. package/server/src/Events/OrderDispatched.php +15 -0
  111. package/server/src/Events/OrderDriverAssigned.php +15 -0
  112. package/server/src/Events/OrderReady.php +15 -0
  113. package/server/src/Events/OrderStarted.php +15 -0
  114. package/server/src/Exceptions/IntegratedVendorException.php +18 -0
  115. package/server/src/Expansions/UserExpansion.php +63 -0
  116. package/server/src/Exports/ContactExport.php +56 -0
  117. package/server/src/Exports/DriverExport.php +61 -0
  118. package/server/src/Exports/FleetExport.php +53 -0
  119. package/server/src/Exports/PlaceExport.php +55 -0
  120. package/server/src/Exports/ServiceAreaExport.php +58 -0
  121. package/server/src/Exports/VehicleExport.php +57 -0
  122. package/server/src/Exports/VendorExport.php +57 -0
  123. package/server/src/Http/Controllers/Api/v1/ContactController.php +133 -0
  124. package/server/src/Http/Controllers/Api/v1/DriverController.php +691 -0
  125. package/server/src/Http/Controllers/Api/v1/EntityController.php +230 -0
  126. package/server/src/Http/Controllers/Api/v1/FleetController.php +146 -0
  127. package/server/src/Http/Controllers/Api/v1/LabelController.php +63 -0
  128. package/server/src/Http/Controllers/Api/v1/OrderController.php +1114 -0
  129. package/server/src/Http/Controllers/Api/v1/PayloadController.php +195 -0
  130. package/server/src/Http/Controllers/Api/v1/PlaceController.php +333 -0
  131. package/server/src/Http/Controllers/Api/v1/PurchaseRateController.php +199 -0
  132. package/server/src/Http/Controllers/Api/v1/ServiceAreaController.php +133 -0
  133. package/server/src/Http/Controllers/Api/v1/ServiceQuoteController.php +381 -0
  134. package/server/src/Http/Controllers/Api/v1/ServiceRateController.php +223 -0
  135. package/server/src/Http/Controllers/Api/v1/TrackingNumberController.php +146 -0
  136. package/server/src/Http/Controllers/Api/v1/TrackingStatusController.php +138 -0
  137. package/server/src/Http/Controllers/Api/v1/VehicleController.php +191 -0
  138. package/server/src/Http/Controllers/Api/v1/VendorController.php +159 -0
  139. package/server/src/Http/Controllers/Api/v1/ZoneController.php +146 -0
  140. package/server/src/Http/Controllers/FleetOpsController.php +13 -0
  141. package/server/src/Http/Controllers/Internal/v1/ContactController.php +69 -0
  142. package/server/src/Http/Controllers/Internal/v1/DriverController.php +261 -0
  143. package/server/src/Http/Controllers/Internal/v1/EntityController.php +15 -0
  144. package/server/src/Http/Controllers/Internal/v1/FleetController.php +152 -0
  145. package/server/src/Http/Controllers/Internal/v1/FleetOpsLookupController.php +80 -0
  146. package/server/src/Http/Controllers/Internal/v1/FuelReportController.php +15 -0
  147. package/server/src/Http/Controllers/Internal/v1/GeocoderController.php +96 -0
  148. package/server/src/Http/Controllers/Internal/v1/IntegratedVendorController.php +63 -0
  149. package/server/src/Http/Controllers/Internal/v1/IssueController.php +15 -0
  150. package/server/src/Http/Controllers/Internal/v1/LiveController.php +127 -0
  151. package/server/src/Http/Controllers/Internal/v1/MetricsController.php +75 -0
  152. package/server/src/Http/Controllers/Internal/v1/MorphController.php +77 -0
  153. package/server/src/Http/Controllers/Internal/v1/OrderConfigController.php +269 -0
  154. package/server/src/Http/Controllers/Internal/v1/OrderController.php +564 -0
  155. package/server/src/Http/Controllers/Internal/v1/PayloadController.php +15 -0
  156. package/server/src/Http/Controllers/Internal/v1/PlaceController.php +163 -0
  157. package/server/src/Http/Controllers/Internal/v1/ProofController.php +139 -0
  158. package/server/src/Http/Controllers/Internal/v1/PurchaseRateController.php +15 -0
  159. package/server/src/Http/Controllers/Internal/v1/RouteController.php +15 -0
  160. package/server/src/Http/Controllers/Internal/v1/ServiceAreaController.php +32 -0
  161. package/server/src/Http/Controllers/Internal/v1/ServiceQuoteController.php +345 -0
  162. package/server/src/Http/Controllers/Internal/v1/ServiceRateController.php +47 -0
  163. package/server/src/Http/Controllers/Internal/v1/SettingController.php +30 -0
  164. package/server/src/Http/Controllers/Internal/v1/TrackingNumberController.php +15 -0
  165. package/server/src/Http/Controllers/Internal/v1/TrackingStatusController.php +15 -0
  166. package/server/src/Http/Controllers/Internal/v1/VehicleController.php +65 -0
  167. package/server/src/Http/Controllers/Internal/v1/VehicleDeviceController.php +15 -0
  168. package/server/src/Http/Controllers/Internal/v1/VendorController.php +120 -0
  169. package/server/src/Http/Controllers/Internal/v1/ZoneController.php +15 -0
  170. package/server/src/Http/Filter/ContactFilter.php +86 -0
  171. package/server/src/Http/Filter/DriverFilter.php +148 -0
  172. package/server/src/Http/Filter/FleetFilter.php +108 -0
  173. package/server/src/Http/Filter/IntegratedVendorFilter.php +13 -0
  174. package/server/src/Http/Filter/OrderFilter.php +242 -0
  175. package/server/src/Http/Filter/PlaceFilter.php +111 -0
  176. package/server/src/Http/Filter/ServiceAreaFilter.php +13 -0
  177. package/server/src/Http/Filter/ServiceQuoteFilter.php +13 -0
  178. package/server/src/Http/Filter/ServiceRateFilter.php +33 -0
  179. package/server/src/Http/Filter/TrackingStatusFilter.php +43 -0
  180. package/server/src/Http/Filter/VehicleFilter.php +91 -0
  181. package/server/src/Http/Filter/VendorFilter.php +83 -0
  182. package/server/src/Http/Filter/ZoneFilter.php +13 -0
  183. package/server/src/Http/Requests/CancelOrderRequest.php +31 -0
  184. package/server/src/Http/Requests/CreateContactRequest.php +33 -0
  185. package/server/src/Http/Requests/CreateDriverRequest.php +55 -0
  186. package/server/src/Http/Requests/CreateEntityRequest.php +43 -0
  187. package/server/src/Http/Requests/CreateFleetRequest.php +32 -0
  188. package/server/src/Http/Requests/CreateOrderRequest.php +66 -0
  189. package/server/src/Http/Requests/CreatePayloadRequest.php +37 -0
  190. package/server/src/Http/Requests/CreatePlaceRequest.php +38 -0
  191. package/server/src/Http/Requests/CreatePurchaseRateRequest.php +33 -0
  192. package/server/src/Http/Requests/CreateServiceAreaRequest.php +35 -0
  193. package/server/src/Http/Requests/CreateServiceQuoteRequest.php +29 -0
  194. package/server/src/Http/Requests/CreateServiceRateRequest.php +56 -0
  195. package/server/src/Http/Requests/CreateTrackingNumberRequest.php +34 -0
  196. package/server/src/Http/Requests/CreateTrackingStatusRequest.php +42 -0
  197. package/server/src/Http/Requests/CreateVehicleRequest.php +32 -0
  198. package/server/src/Http/Requests/CreateVendorRequest.php +35 -0
  199. package/server/src/Http/Requests/CreateZoneRequest.php +35 -0
  200. package/server/src/Http/Requests/DecodeTrackingNumberQR.php +30 -0
  201. package/server/src/Http/Requests/DriverSimulationRequest.php +46 -0
  202. package/server/src/Http/Requests/Internal/AssignOrderRequest.php +31 -0
  203. package/server/src/Http/Requests/Internal/CreateDriverRequest.php +42 -0
  204. package/server/src/Http/Requests/Internal/FleetActionRequest.php +32 -0
  205. package/server/src/Http/Requests/Internal/UpdateDriverRequest.php +7 -0
  206. package/server/src/Http/Requests/QueryServiceQuotesRequest.php +41 -0
  207. package/server/src/Http/Requests/UpdateContactRequest.php +20 -0
  208. package/server/src/Http/Requests/UpdateDriverRequest.php +7 -0
  209. package/server/src/Http/Requests/UpdateEntityRequest.php +7 -0
  210. package/server/src/Http/Requests/UpdateFleetRequest.php +7 -0
  211. package/server/src/Http/Requests/UpdateOrderRequest.php +7 -0
  212. package/server/src/Http/Requests/UpdatePayloadRequest.php +7 -0
  213. package/server/src/Http/Requests/UpdatePlaceRequest.php +7 -0
  214. package/server/src/Http/Requests/UpdatePurchaseRateRequest.php +7 -0
  215. package/server/src/Http/Requests/UpdateServiceAreaRequest.php +29 -0
  216. package/server/src/Http/Requests/UpdateServiceQuoteRequest.php +29 -0
  217. package/server/src/Http/Requests/UpdateServiceRateRequest.php +29 -0
  218. package/server/src/Http/Requests/UpdateTrackingNumberRequest.php +7 -0
  219. package/server/src/Http/Requests/UpdateTrackingStatusRequest.php +32 -0
  220. package/server/src/Http/Requests/UpdateVehicleRequest.php +7 -0
  221. package/server/src/Http/Requests/UpdateVendorRequest.php +7 -0
  222. package/server/src/Http/Requests/UpdateZoneRequest.php +7 -0
  223. package/server/src/Http/Resources/Internal/v1/IntegratedVendorFacilitator.php +37 -0
  224. package/server/src/Http/Resources/Internal/v1/Vehicle.php +33 -0
  225. package/server/src/Http/Resources/Internal/v1/Waypoint.php +34 -0
  226. package/server/src/Http/Resources/v1/Contact.php +62 -0
  227. package/server/src/Http/Resources/v1/CurrentJob.php +36 -0
  228. package/server/src/Http/Resources/v1/DeletedResource.php +61 -0
  229. package/server/src/Http/Resources/v1/Driver.php +89 -0
  230. package/server/src/Http/Resources/v1/Entity.php +107 -0
  231. package/server/src/Http/Resources/v1/Fleet.php +60 -0
  232. package/server/src/Http/Resources/v1/FuelReport.php +67 -0
  233. package/server/src/Http/Resources/v1/Order.php +131 -0
  234. package/server/src/Http/Resources/v1/Payload.php +94 -0
  235. package/server/src/Http/Resources/v1/Place.php +84 -0
  236. package/server/src/Http/Resources/v1/Proof.php +36 -0
  237. package/server/src/Http/Resources/v1/PurchaseRate.php +77 -0
  238. package/server/src/Http/Resources/v1/ServiceArea.php +55 -0
  239. package/server/src/Http/Resources/v1/ServiceQuote.php +57 -0
  240. package/server/src/Http/Resources/v1/ServiceRate.php +94 -0
  241. package/server/src/Http/Resources/v1/ServiceRateFee.php +58 -0
  242. package/server/src/Http/Resources/v1/ServiceRateParcelFee.php +48 -0
  243. package/server/src/Http/Resources/v1/TrackingNumber.php +62 -0
  244. package/server/src/Http/Resources/v1/TrackingStatus.php +84 -0
  245. package/server/src/Http/Resources/v1/Vehicle.php +75 -0
  246. package/server/src/Http/Resources/v1/VehicleDevice.php +44 -0
  247. package/server/src/Http/Resources/v1/VehicleWithoutDriver.php +72 -0
  248. package/server/src/Http/Resources/v1/Vendor.php +72 -0
  249. package/server/src/Http/Resources/v1/Zone.php +60 -0
  250. package/server/src/Imports/OrdersImport.php +18 -0
  251. package/server/src/Integrations/Lalamove/Lalamove.php +678 -0
  252. package/server/src/Integrations/Lalamove/LalamoveDeliveryStop.php +97 -0
  253. package/server/src/Integrations/Lalamove/LalamoveMarket.php +123 -0
  254. package/server/src/Integrations/Lalamove/LalamoveServiceType.php +161 -0
  255. package/server/src/Jobs/SimulateDrivingRoute.php +81 -0
  256. package/server/src/Jobs/SimulateWaypointReached.php +79 -0
  257. package/server/src/Listeners/HandleOrderCanceled.php +46 -0
  258. package/server/src/Listeners/HandleOrderCreated.php +23 -0
  259. package/server/src/Listeners/HandleOrderDispatchFailed.php +35 -0
  260. package/server/src/Listeners/HandleOrderDispatched.php +108 -0
  261. package/server/src/Listeners/HandleOrderDriverAssigned.php +42 -0
  262. package/server/src/Listeners/HandleOrderReady.php +27 -0
  263. package/server/src/Listeners/HandleUserRemovedFromCompany.php +31 -0
  264. package/server/src/Models/Contact.php +239 -0
  265. package/server/src/Models/Driver.php +543 -0
  266. package/server/src/Models/Entity.php +416 -0
  267. package/server/src/Models/Fleet.php +203 -0
  268. package/server/src/Models/FleetDriver.php +73 -0
  269. package/server/src/Models/FleetVehicle.php +73 -0
  270. package/server/src/Models/FuelReport.php +125 -0
  271. package/server/src/Models/IntegratedVendor.php +219 -0
  272. package/server/src/Models/Issue.php +111 -0
  273. package/server/src/Models/Order.php +1132 -0
  274. package/server/src/Models/Payload.php +699 -0
  275. package/server/src/Models/Place.php +656 -0
  276. package/server/src/Models/Position.php +119 -0
  277. package/server/src/Models/Proof.php +94 -0
  278. package/server/src/Models/PurchaseRate.php +208 -0
  279. package/server/src/Models/Route.php +128 -0
  280. package/server/src/Models/ServiceArea.php +161 -0
  281. package/server/src/Models/ServiceQuote.php +207 -0
  282. package/server/src/Models/ServiceQuoteItem.php +46 -0
  283. package/server/src/Models/ServiceRate.php +953 -0
  284. package/server/src/Models/ServiceRateFee.php +96 -0
  285. package/server/src/Models/ServiceRateParcelFee.php +116 -0
  286. package/server/src/Models/TrackingNumber.php +310 -0
  287. package/server/src/Models/TrackingStatus.php +177 -0
  288. package/server/src/Models/Vehicle.php +452 -0
  289. package/server/src/Models/VehicleDevice.php +79 -0
  290. package/server/src/Models/Vendor.php +244 -0
  291. package/server/src/Models/Waypoint.php +226 -0
  292. package/server/src/Models/Zone.php +95 -0
  293. package/server/src/Notifications/OrderAssigned.php +140 -0
  294. package/server/src/Notifications/OrderCanceled.php +129 -0
  295. package/server/src/Notifications/OrderDispatchFailed.php +81 -0
  296. package/server/src/Notifications/OrderDispatched.php +173 -0
  297. package/server/src/Notifications/OrderPing.php +162 -0
  298. package/server/src/Notifications/OrderSplit.php +56 -0
  299. package/server/src/Observers/DriverObserver.php +34 -0
  300. package/server/src/Observers/OrderObserver.php +34 -0
  301. package/server/src/Observers/PayloadObserver.php +30 -0
  302. package/server/src/Observers/PlaceObserver.php +26 -0
  303. package/server/src/Observers/PurchaseRateObserver.php +61 -0
  304. package/server/src/Observers/ServiceAreaObserver.php +35 -0
  305. package/server/src/Observers/ServiceRateObserver.php +78 -0
  306. package/server/src/Observers/TrackingNumberObserver.php +44 -0
  307. package/server/src/Observers/UserObserver.php +20 -0
  308. package/server/src/Observers/VehicleObserver.php +66 -0
  309. package/server/src/Providers/EventServiceProvider.php +30 -0
  310. package/server/src/Providers/FleetOpsServiceProvider.php +94 -0
  311. package/server/src/Rules/ResolvablePoint.php +37 -0
  312. package/server/src/Scopes/DriverScope.php +21 -0
  313. package/server/src/Support/Algo.php +55 -0
  314. package/server/src/Support/DistanceMatrix.php +27 -0
  315. package/server/src/Support/Encoding/Polyline.php +168 -0
  316. package/server/src/Support/Flow.php +622 -0
  317. package/server/src/Support/Geocoding.php +216 -0
  318. package/server/src/Support/IntegratedVendors.php +287 -0
  319. package/server/src/Support/Metrics.php +305 -0
  320. package/server/src/Support/OSRM.php +191 -0
  321. package/server/src/Support/ParsePhone.php +21 -0
  322. package/server/src/Support/Utils.php +1145 -0
  323. package/server/src/Traits/HasTrackingNumber.php +185 -0
  324. package/server/src/routes.php +381 -0
  325. package/server/tests/Feature.php +5 -0
@@ -0,0 +1,765 @@
1
+ <?php
2
+
3
+ $defaultFlow = [
4
+ 'created' => [
5
+ 'sequence' => 0,
6
+ 'color' => 'green',
7
+ 'events' => [
8
+ [
9
+ 'status' => 'Order dispatched',
10
+ 'details' => 'Order has been dispatched to driver',
11
+ 'code' => 'dispatched',
12
+ ],
13
+ ]
14
+ ],
15
+ 'dispatched' => [
16
+ 'sequence' => 0,
17
+ 'color' => 'green',
18
+ 'events' => [
19
+ [
20
+ 'status' => 'Driver en-route',
21
+ 'details' => 'Driver en-route to location',
22
+ 'code' => 'driver_enroute',
23
+ ],
24
+ ]
25
+ ],
26
+ 'driver_enroute' => [
27
+ 'sequence' => 0,
28
+ 'color' => 'green',
29
+ 'events' => [
30
+ [
31
+ 'status' => 'Order completed',
32
+ 'details' => 'Driver has completed order',
33
+ 'code' => 'completed',
34
+ ],
35
+ ]
36
+ ],
37
+ // waypoint drop order statuses
38
+ 'waypoint|dispatched' => [
39
+
40
+ 'sequence' => 0,
41
+ 'color' => 'green',
42
+ 'events' => [
43
+ [
44
+ 'status' => 'Driver en-route to {waypoint.ordinalIndex} waypoint',
45
+ 'details' => 'Driver en-route to {waypoint.address}',
46
+ 'code' => 'driver_enroute',
47
+ ],
48
+ ]
49
+ ],
50
+ 'waypoint|driver_enroute' => [
51
+ 'sequence' => 0,
52
+ 'color' => 'green',
53
+ 'events' => [
54
+ [
55
+ 'status' => 'Order delivered for {waypoint.ordinalIndex} waypoint',
56
+ 'details' => 'Driver has completed delivery to {waypoint.address}',
57
+ 'code' => 'completed',
58
+ ],
59
+ ]
60
+ ]
61
+ ];
62
+
63
+ return [
64
+ /*
65
+ |--------------------------------------------------------------------------
66
+ | API Events
67
+ |--------------------------------------------------------------------------
68
+ */
69
+
70
+ 'events' => [
71
+ // order events
72
+ 'order.created',
73
+ 'order.updated',
74
+ 'order.deleted',
75
+ 'order.dispatched',
76
+ 'order.dispatch_failed',
77
+ 'order.completed',
78
+ 'order.failed',
79
+ 'order.driver_assigned',
80
+ 'order.completed',
81
+
82
+ // payload events
83
+ 'payload.created',
84
+ 'payload.updated',
85
+ 'payload.deleted',
86
+
87
+ // entity events
88
+ 'entity.created',
89
+ 'entity.updated',
90
+ 'entity.deleted',
91
+ 'entity.driver_assigned',
92
+
93
+ // driver events
94
+ 'driver.created',
95
+ 'driver.updated',
96
+ 'driver.deleted',
97
+ 'driver.assigned',
98
+ // 'driver.entered_zone',
99
+ // 'driver.exited_zone',
100
+
101
+ // fleet events
102
+ 'fleet.created',
103
+ 'fleet.updated',
104
+ 'fleet.deleted',
105
+
106
+ // purchase_rate events
107
+ 'purchase_rate.created',
108
+ 'purchase_rate.updated',
109
+ 'purchase_rate.deleted',
110
+
111
+ // contact events
112
+ 'contact.created',
113
+ 'contact.updated',
114
+ 'contact.deleted',
115
+
116
+ // place events
117
+ 'place.created',
118
+ 'place.updated',
119
+ 'place.deleted',
120
+
121
+ // service_area events
122
+ 'service_area.created',
123
+ 'service_area.updated',
124
+ 'service_area.deleted',
125
+
126
+ // service_quote events
127
+ 'service_quote.created',
128
+ 'service_quote.updated',
129
+ 'service_quote.deleted',
130
+
131
+ // service_rate events
132
+ 'service_rate.created',
133
+ 'service_rate.updated',
134
+ 'service_rate.deleted',
135
+
136
+ // tracking_number events
137
+ 'tracking_number.created',
138
+ 'tracking_number.updated',
139
+ 'tracking_number.deleted',
140
+
141
+ // tracking_status events
142
+ 'tracking_status.created',
143
+ 'tracking_status.updated',
144
+ 'tracking_status.deleted',
145
+
146
+ // vehicle events
147
+ 'vehicle.created',
148
+ 'vehicle.updated',
149
+ 'vehicle.deleted',
150
+
151
+ // vendor events
152
+ 'vendor.created',
153
+ 'vendor.updated',
154
+ 'vendor.deleted',
155
+
156
+ // zone events
157
+ 'zone.created',
158
+ 'zone.updated',
159
+ 'zone.deleted',
160
+ ],
161
+
162
+ /*
163
+ |--------------------------------------------------------------------------
164
+ | API Resource Types
165
+ |--------------------------------------------------------------------------
166
+ */
167
+
168
+ 'types' => [
169
+ 'contact' => [
170
+ [
171
+ 'name' => 'Customer',
172
+ 'key' => 'customer',
173
+ ],
174
+ [
175
+ 'name' => 'Contractor',
176
+ 'key' => 'contractor',
177
+ ],
178
+ ],
179
+
180
+ 'order' => [
181
+ [
182
+ 'name' => 'Transport',
183
+ 'description' => 'Operational flow for standard A to B transport.',
184
+ 'key' => 'default',
185
+ 'meta_type' => 'order_config',
186
+ 'meta' => [
187
+ 'flow' => $defaultFlow,
188
+ ],
189
+ ],
190
+ [
191
+ 'name' => 'Parcel Delivery',
192
+ 'description' => 'Operational flow for standard A to B parcel delivery, with proof of delivery options.',
193
+ 'key' => 'parcel',
194
+ 'meta_type' => 'order_config',
195
+ 'meta' => [
196
+ 'flow' => $defaultFlow,
197
+ 'require_pod' => true,
198
+ 'pod_method' => 'signature', // scan / signature
199
+ ],
200
+ ],
201
+ [
202
+ 'name' => 'Passenger Transport',
203
+ 'description' => 'Operational flow for standard A to B passenger transport.',
204
+ 'key' => 'passenger',
205
+ 'meta_type' => 'order_config',
206
+ 'meta' => [
207
+ 'flow' => $defaultFlow,
208
+ ],
209
+ ],
210
+ [
211
+ 'name' => 'Task',
212
+ 'description' => 'Operational flow for custom task or service tasks.',
213
+ 'key' => 'task',
214
+ 'meta_type' => 'order_config',
215
+ 'meta' => [
216
+ 'flow' => $defaultFlow,
217
+ ],
218
+ ],
219
+ [
220
+ 'name' => 'Food Delivery',
221
+ 'description' => 'Operational flow for food delivery.',
222
+ 'key' => 'food',
223
+ 'meta_type' => 'order_config',
224
+ 'meta' => [
225
+ 'flow' => $defaultFlow,
226
+ ],
227
+ ],
228
+ [
229
+ 'name' => 'Ecommerce',
230
+ 'description' => 'Operational flow for ondemand ecommerce.',
231
+ 'key' => 'ecommerce',
232
+ 'meta_type' => 'order_config',
233
+ 'meta' => [
234
+ 'flow' => $defaultFlow,
235
+ ],
236
+ ],
237
+ [
238
+ 'name' => 'Haulage',
239
+ 'description' => 'Operational flow for freight container transport.',
240
+ 'key' => 'haul',
241
+ 'meta_type' => 'order_config',
242
+ 'meta' => [
243
+ 'fields' => [
244
+ [
245
+ 'label' => 'BL Number',
246
+ 'key' => 'bl_number',
247
+ 'type' => 'text',
248
+ 'removable' => false,
249
+ 'required' => true,
250
+ 'group' => 'info',
251
+ ],
252
+ [
253
+ 'label' => 'Job Type',
254
+ 'key' => 'job_type',
255
+ 'type' => 'select',
256
+ 'options' => [
257
+ [
258
+ 'value' => 'import'
259
+ ],
260
+ [
261
+ 'value' => 'export'
262
+ ],
263
+ [
264
+ 'value' => 'one_way'
265
+ ]
266
+ ],
267
+ 'removable' => false,
268
+ 'required' => true,
269
+ 'group' => 'info',
270
+ ],
271
+ [
272
+ 'label' => 'DSTN Port',
273
+ 'key' => 'dstn_port',
274
+ 'type' => 'port',
275
+ 'serialize' => 'model:port',
276
+ 'removable' => false,
277
+ 'required' => true,
278
+ 'group' => 'info',
279
+ ],
280
+ [
281
+ 'label' => 'Vessel',
282
+ 'key' => 'vessel',
283
+ 'type' => 'vessel',
284
+ 'serialize' => 'model:vessel',
285
+ 'removable' => false,
286
+ 'required' => true,
287
+ 'group' => 'vessel',
288
+ ],
289
+ [
290
+ 'label' => 'Vessel ETA',
291
+ 'key' => 'vessel_eta',
292
+ 'type' => 'datetime',
293
+ 'removable' => false,
294
+ 'required' => true,
295
+ 'group' => 'vessel',
296
+ ],
297
+ [
298
+ 'label' => 'Vessel ETD',
299
+ 'key' => 'vessel_etd',
300
+ 'type' => 'datetime',
301
+ 'removable' => false,
302
+ 'required' => true,
303
+ 'group' => 'vessel',
304
+ ],
305
+ [
306
+ 'label' => 'Voyage Number',
307
+ 'key' => 'voyage_number',
308
+ 'type' => 'text',
309
+ 'removable' => false,
310
+ 'required' => true,
311
+ 'group' => 'vessel',
312
+ ],
313
+ ],
314
+ 'flow' => [
315
+ 'created' => [
316
+ 'sequence' => 0,
317
+ 'color' => 'green',
318
+ 'events' => [
319
+ [
320
+ 'if' => [['meta.job_type', '=', 'import']],
321
+ 'status' => 'In port',
322
+ 'details' => 'Driver has entered the port',
323
+ 'code' => 'driver_started',
324
+ ],
325
+ [
326
+ 'if' => [['meta.job_type', '=', 'export']],
327
+ 'status' => 'In depot',
328
+ 'details' => 'Driver has entered the depot',
329
+ 'code' => 'driver_started',
330
+ ],
331
+ [
332
+ 'if' => [['meta.job_type', '=', 'one_way']],
333
+ 'status' => 'Container picked up',
334
+ 'details' => 'Driver has picked up the container',
335
+ 'code' => 'driver_started',
336
+ ],
337
+ ],
338
+ ],
339
+ 'driver_started' => [
340
+ 'sequence' => 0,
341
+ 'color' => 'green',
342
+ 'events' => [
343
+ [
344
+ 'if' => [['meta.job_type', '=', 'import']],
345
+ 'status' => 'Out port',
346
+ 'details' => 'Laden container collected from the port',
347
+ 'code' => 'container_collected',
348
+ ],
349
+ [
350
+ 'if' => [['meta.job_type', '=', 'export']],
351
+ 'status' => 'Out depot',
352
+ 'details' => 'Driver has entered the depot',
353
+ 'code' => 'container_collected',
354
+ ],
355
+ [
356
+ 'if' => [['meta.job_type', '=', 'one_way']],
357
+ 'status' => 'Container dropped off',
358
+ 'details' => 'Driver has delivered the container',
359
+ 'code' => 'container_sent',
360
+ 'completed' => 1,
361
+ ],
362
+ ]
363
+ ],
364
+ 'container_collected' => [
365
+ 'sequence' => 0,
366
+ 'color' => 'green',
367
+ 'events' => [
368
+ [
369
+ 'if' => [['meta.job_type', '=', 'import']],
370
+ 'status' => 'With consignee',
371
+ 'details' => 'Container with consignee',
372
+ 'code' => 'container_unloading',
373
+ ],
374
+ [
375
+ 'if' => [['meta.job_type', '=', 'export']],
376
+ 'status' => 'With shipper',
377
+ 'details' => 'Container with shipper',
378
+ 'code' => 'container_loading',
379
+ ],
380
+ ]
381
+ ],
382
+ 'container_unloading' => [
383
+ 'sequence' => 0,
384
+ 'color' => 'green',
385
+ 'events' => [
386
+ [
387
+ 'status' => 'Out consignee',
388
+ 'details' => 'Container out of consignee',
389
+ 'code' => 'container_returning',
390
+ ],
391
+ ]
392
+ ],
393
+ 'container_loading' => [
394
+ 'sequence' => 0,
395
+ 'color' => 'green',
396
+ 'events' => [
397
+ [
398
+ 'status' => 'Out shipper',
399
+ 'details' => 'Container out of shipper',
400
+ 'code' => 'container_exporting',
401
+ ],
402
+ ]
403
+ ],
404
+ 'container_returning' => [
405
+ 'sequence' => 0,
406
+ 'color' => 'green',
407
+ 'events' => [
408
+ [
409
+ 'status' => 'Returned to depot',
410
+ 'details' => 'MT container returned to depot',
411
+ 'code' => 'container_returned',
412
+ 'completed' => 1,
413
+ ],
414
+ ]
415
+ ],
416
+ 'container_exporting' => [
417
+ 'sequence' => 0,
418
+ 'color' => 'green',
419
+ 'events' => [
420
+ [
421
+ 'status' => 'In port',
422
+ 'details' => 'Laden container sent for export',
423
+ 'code' => 'container_sent',
424
+ 'completed' => 1,
425
+ ],
426
+ ]
427
+ ],
428
+ ],
429
+ 'entities' => [
430
+ [
431
+ 'name' => '20 FT FLAT RACK',
432
+ 'type' => 'container',
433
+ 'description' => '20FR',
434
+ 'weight' => '16800',
435
+ 'weight_unit' => 'kg',
436
+ 'length' => '20',
437
+ 'width' => '8.6',
438
+ 'height' => '8.6',
439
+ 'dimentions_unit' => 'ft',
440
+ 'meta' => [
441
+ 'type' => 'FR',
442
+ ],
443
+ ],
444
+ [
445
+ 'name' => '20 FT X 8\'6',
446
+ 'type' => 'container',
447
+ 'description' => '20GP',
448
+ 'weight' => '16800',
449
+ 'weight_unit' => 'kg',
450
+ 'length' => '20',
451
+ 'width' => '8.6',
452
+ 'height' => '8.6',
453
+ 'dimentions_unit' => 'ft',
454
+ 'meta' => [
455
+ 'type' => 'GP',
456
+ ],
457
+ ],
458
+ [
459
+ 'name' => '20 FT X 9\'6',
460
+ 'type' => 'container',
461
+ 'description' => '20HC',
462
+ 'weight' => '16800',
463
+ 'weight_unit' => 'kg',
464
+ 'length' => '20',
465
+ 'width' => '8.6',
466
+ 'height' => '8.6',
467
+ 'dimentions_unit' => 'ft',
468
+ 'meta' => [
469
+ 'type' => 'HC',
470
+ ],
471
+ ],
472
+ [
473
+ 'name' => '20 FT X 9\'6',
474
+ 'type' => 'container',
475
+ 'description' => '20HR',
476
+ 'weight' => '16800',
477
+ 'weight_unit' => 'kg',
478
+ 'length' => '20',
479
+ 'width' => '8.6',
480
+ 'height' => '8.6',
481
+ 'dimentions_unit' => 'ft',
482
+ 'meta' => [
483
+ 'type' => 'HR',
484
+ ],
485
+ ],
486
+ [
487
+ 'name' => '20 FT X 9\'6',
488
+ 'type' => 'container',
489
+ 'description' => '20OH',
490
+ 'weight' => '16800',
491
+ 'weight_unit' => 'kg',
492
+ 'length' => '20',
493
+ 'width' => '8.6',
494
+ 'height' => '8.6',
495
+ 'dimentions_unit' => 'ft',
496
+ 'meta' => [
497
+ 'type' => 'OH',
498
+ ],
499
+ ],
500
+ [
501
+ 'name' => '20 FT X 8\'6',
502
+ 'type' => 'container',
503
+ 'description' => '20OT',
504
+ 'weight' => '16800',
505
+ 'weight_unit' => 'kg',
506
+ 'length' => '20',
507
+ 'width' => '8.6',
508
+ 'height' => '8.6',
509
+ 'dimentions_unit' => 'ft',
510
+ 'meta' => [
511
+ 'type' => 'OT',
512
+ ],
513
+ ],
514
+ [
515
+ 'name' => '20 FT X 8\'6',
516
+ 'type' => 'container',
517
+ 'description' => '20RF',
518
+ 'weight' => '16800',
519
+ 'weight_unit' => 'kg',
520
+ 'length' => '20',
521
+ 'width' => '8.6',
522
+ 'height' => '8.6',
523
+ 'dimentions_unit' => 'ft',
524
+ 'meta' => [
525
+ 'type' => 'RF',
526
+ ],
527
+ ],
528
+ [
529
+ 'name' => '20 FT X 8\'6',
530
+ 'type' => 'container',
531
+ 'description' => '20TK',
532
+ 'weight' => '16800',
533
+ 'weight_unit' => 'kg',
534
+ 'length' => '20',
535
+ 'width' => '8.6',
536
+ 'height' => '8.6',
537
+ 'dimentions_unit' => 'ft',
538
+ 'meta' => [
539
+ 'type' => 'TK',
540
+ ],
541
+ ],
542
+ [
543
+ 'name' => '40 FT X 8\'6',
544
+ 'type' => 'container',
545
+ 'description' => '40FR',
546
+ 'weight' => '16800',
547
+ 'weight_unit' => 'kg',
548
+ 'length' => '20',
549
+ 'width' => '8.6',
550
+ 'height' => '8.6',
551
+ 'dimentions_unit' => 'ft',
552
+ 'meta' => [
553
+ 'type' => 'FR',
554
+ ],
555
+ ],
556
+ [
557
+ 'name' => '40 FT X 8\'6',
558
+ 'type' => 'container',
559
+ 'description' => '40GP',
560
+ 'weight' => '16800',
561
+ 'weight_unit' => 'kg',
562
+ 'length' => '20',
563
+ 'width' => '8.6',
564
+ 'height' => '8.6',
565
+ 'dimentions_unit' => 'ft',
566
+ 'meta' => [
567
+ 'type' => 'GP',
568
+ ],
569
+ ],
570
+ [
571
+ 'name' => '40 FT X 9\'6',
572
+ 'type' => 'container',
573
+ 'description' => '40HC',
574
+ 'weight' => '16800',
575
+ 'weight_unit' => 'kg',
576
+ 'length' => '20',
577
+ 'width' => '8.6',
578
+ 'height' => '8.6',
579
+ 'dimentions_unit' => 'ft',
580
+ 'meta' => [
581
+ 'type' => 'HC',
582
+ ],
583
+ ],
584
+ [
585
+ 'name' => '40 FT X 9\'6',
586
+ 'type' => 'container',
587
+ 'description' => '40HF',
588
+ 'weight' => '16800',
589
+ 'weight_unit' => 'kg',
590
+ 'length' => '20',
591
+ 'width' => '8.6',
592
+ 'height' => '8.6',
593
+ 'dimentions_unit' => 'ft',
594
+ 'meta' => [
595
+ 'type' => 'FR',
596
+ ],
597
+ ],
598
+ [
599
+ 'name' => '40 FT X 9\'6',
600
+ 'type' => 'container',
601
+ 'description' => '40HR',
602
+ 'weight' => '16800',
603
+ 'weight_unit' => 'kg',
604
+ 'length' => '20',
605
+ 'width' => '8.6',
606
+ 'height' => '8.6',
607
+ 'dimentions_unit' => 'ft',
608
+ 'meta' => [
609
+ 'type' => 'RF',
610
+ ],
611
+ ],
612
+ [
613
+ 'name' => '40 FT X 9\'6',
614
+ 'type' => 'container',
615
+ 'description' => '40HT',
616
+ 'weight' => '16800',
617
+ 'weight_unit' => 'kg',
618
+ 'length' => '20',
619
+ 'width' => '8.6',
620
+ 'height' => '8.6',
621
+ 'dimentions_unit' => 'ft',
622
+ 'meta' => [
623
+ 'type' => 'HT',
624
+ ],
625
+ ],
626
+ [
627
+ 'name' => '40 FT X 8\'6',
628
+ 'type' => 'container',
629
+ 'description' => '40OT',
630
+ 'weight' => '16800',
631
+ 'weight_unit' => 'kg',
632
+ 'length' => '20',
633
+ 'width' => '8.6',
634
+ 'height' => '8.6',
635
+ 'dimentions_unit' => 'ft',
636
+ 'meta' => [
637
+ 'type' => 'OT',
638
+ ],
639
+ ],
640
+ [
641
+ 'name' => 'PLAT FORM',
642
+ 'type' => 'container',
643
+ 'description' => '40PL',
644
+ 'weight' => '16800',
645
+ 'weight_unit' => 'kg',
646
+ 'length' => '20',
647
+ 'width' => '8.6',
648
+ 'height' => '8.6',
649
+ 'dimentions_unit' => 'ft',
650
+ 'meta' => [
651
+ 'type' => 'PL',
652
+ ],
653
+ ],
654
+ [
655
+ 'name' => '40 FT X 8\'6',
656
+ 'type' => 'container',
657
+ 'description' => '40RF',
658
+ 'weight' => '16800',
659
+ 'weight_unit' => 'kg',
660
+ 'length' => '20',
661
+ 'width' => '8.6',
662
+ 'height' => '8.6',
663
+ 'dimentions_unit' => 'ft',
664
+ 'meta' => [
665
+ 'type' => 'RF',
666
+ ],
667
+ ],
668
+ [
669
+ 'name' => '45 FT X 9\'611 GENERAL PURPOSE',
670
+ 'type' => 'container',
671
+ 'description' => '45GP',
672
+ 'weight' => '16800',
673
+ 'weight_unit' => 'kg',
674
+ 'length' => '20',
675
+ 'width' => '8.6',
676
+ 'height' => '8.6',
677
+ 'dimentions_unit' => 'ft',
678
+ 'meta' => [
679
+ 'type' => 'GP',
680
+ ],
681
+ ],
682
+ [
683
+ 'name' => '45 FT X 9\'611 HIGH CUBE',
684
+ 'type' => 'container',
685
+ 'description' => '45HC',
686
+ 'weight' => '16800',
687
+ 'weight_unit' => 'kg',
688
+ 'length' => '20',
689
+ 'width' => '8.6',
690
+ 'height' => '8.6',
691
+ 'dimentions_unit' => 'ft',
692
+ 'meta' => [
693
+ 'type' => 'HC',
694
+ ],
695
+ ],
696
+ [
697
+ 'name' => 'CHASSIS',
698
+ 'type' => 'container',
699
+ 'description' => 'CHASSIS',
700
+ 'weight' => '16800',
701
+ 'weight_unit' => 'kg',
702
+ 'length' => '20',
703
+ 'width' => '8.6',
704
+ 'height' => '8.6',
705
+ 'dimentions_unit' => 'ft',
706
+ 'meta' => [
707
+ 'type' => 'CHASSIS',
708
+ ],
709
+ ],
710
+ ],
711
+ ],
712
+ ],
713
+ ],
714
+
715
+ 'entity' => [
716
+ [
717
+ 'name' => 'Parcel',
718
+ 'key' => 'parcel',
719
+ 'fields' => [''],
720
+ ],
721
+ [
722
+ 'name' => 'Passenger',
723
+ 'key' => 'passenger',
724
+ 'fields' => [],
725
+ ],
726
+ [
727
+ 'name' => 'Task',
728
+ 'key' => 'task',
729
+ 'fields' => [],
730
+ ],
731
+ [
732
+ 'name' => 'Food',
733
+ 'key' => 'food',
734
+ 'fields' => [],
735
+ ],
736
+ [
737
+ 'name' => 'Product',
738
+ 'key' => 'product',
739
+ 'fields' => [],
740
+ ],
741
+ [
742
+ 'name' => 'Haulage',
743
+ 'key' => 'haul',
744
+ 'fields' => [],
745
+ ],
746
+ ],
747
+ ],
748
+
749
+ /*
750
+ |--------------------------------------------------------------------------
751
+ | Proof of Delivery Methods
752
+ |--------------------------------------------------------------------------
753
+ */
754
+
755
+ 'pod_methods' => 'scan,signature',
756
+
757
+ /*
758
+ |--------------------------------------------------------------------------
759
+ | API/Webhook Versions
760
+ |--------------------------------------------------------------------------
761
+ */
762
+
763
+ 'versions' => ['2020-09-30'],
764
+ 'version' => '2020-09-30', // current version
765
+ ];