@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,42 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Events;
4
+
5
+ use Fleetbase\Events\ResourceLifecycleEvent;
6
+ use Fleetbase\FleetOps\Models\Order;
7
+
8
+ class OrderDispatchFailed extends ResourceLifecycleEvent
9
+ {
10
+ /**
11
+ * The event name.
12
+ *
13
+ * @var string
14
+ */
15
+ public $eventName = 'dispatch_failed';
16
+
17
+ /**
18
+ * The reason dispatch failed.
19
+ *
20
+ * @var string
21
+ */
22
+ public $reason = 'dispatch_failed';
23
+
24
+ /**
25
+ * Create a new event instance.
26
+ *
27
+ * @return void
28
+ */
29
+ public function __construct(Order $order, $reason = '')
30
+ {
31
+ parent::__construct($order);
32
+ $this->reason = $reason;
33
+ }
34
+
35
+ /**
36
+ * Returns the reason the dispatch failed.
37
+ */
38
+ public function getReason(): string
39
+ {
40
+ return $this->reason;
41
+ }
42
+ }
@@ -0,0 +1,15 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Events;
4
+
5
+ use Fleetbase\Events\ResourceLifecycleEvent;
6
+
7
+ class OrderDispatched extends ResourceLifecycleEvent
8
+ {
9
+ /**
10
+ * The event name.
11
+ *
12
+ * @var string
13
+ */
14
+ public $eventName = 'dispatched';
15
+ }
@@ -0,0 +1,15 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Events;
4
+
5
+ use Fleetbase\Events\ResourceLifecycleEvent;
6
+
7
+ class OrderDriverAssigned extends ResourceLifecycleEvent
8
+ {
9
+ /**
10
+ * The event name.
11
+ *
12
+ * @var string
13
+ */
14
+ public $eventName = 'driver_assigned';
15
+ }
@@ -0,0 +1,15 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Events;
4
+
5
+ use Fleetbase\Events\ResourceLifecycleEvent;
6
+
7
+ class OrderReady extends ResourceLifecycleEvent
8
+ {
9
+ /**
10
+ * The event name.
11
+ *
12
+ * @var string
13
+ */
14
+ public $eventName = 'ready';
15
+ }
@@ -0,0 +1,15 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Events;
4
+
5
+ use Fleetbase\Events\ResourceLifecycleEvent;
6
+
7
+ class OrderStarted extends ResourceLifecycleEvent
8
+ {
9
+ /**
10
+ * The event name.
11
+ *
12
+ * @var string
13
+ */
14
+ public $eventName = 'started';
15
+ }
@@ -0,0 +1,18 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Exceptions;
4
+
5
+ use Fleetbase\FleetOps\Models\IntegratedVendor;
6
+
7
+ class IntegratedVendorException extends \Exception
8
+ {
9
+ public ?IntegratedVendor $integratedVendor;
10
+ public string $triggerMethod;
11
+
12
+ public function __construct(string $message = '', IntegratedVendor $integratedVendor = null, string $triggerMethod = null, int $code = 400, \Throwable $previous = null)
13
+ {
14
+ parent::__construct($message, $code, $previous);
15
+ $this->integratedVendor = $integratedVendor;
16
+ $this->triggerMethod = $triggerMethod;
17
+ }
18
+ }
@@ -0,0 +1,63 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Expansions;
4
+
5
+ use Fleetbase\Build\Expansion;
6
+ use Fleetbase\FleetOps\Models\Driver;
7
+
8
+ class UserExpansion implements Expansion
9
+ {
10
+ /**
11
+ * Get the target class to expand.
12
+ *
13
+ * @return string|Class
14
+ */
15
+ public static function target()
16
+ {
17
+ return \Fleetbase\Models\User::class;
18
+ }
19
+
20
+ /**
21
+ * @return \Illuminate\Database\Eloquent\Relations\HasOne
22
+ */
23
+ public function driver()
24
+ {
25
+ return function () {
26
+ /* @var \Illuminate\Database\Eloquent\Model $this */
27
+ return $this->hasOne(Driver::class)->without('user');
28
+ };
29
+ }
30
+
31
+ /**
32
+ * @return \Illuminate\Database\Eloquent\Relations\HasOne
33
+ */
34
+ public function currentDriverSession()
35
+ {
36
+ return function () {
37
+ /* @var \Illuminate\Database\Eloquent\Model $this */
38
+ return $this->driver()->where('company_uuid', session('company'));
39
+ };
40
+ }
41
+
42
+ /**
43
+ * @return \Illuminate\Database\Eloquent\Relations\HasMany
44
+ */
45
+ public function driverProfiles()
46
+ {
47
+ return function () {
48
+ /* @var \Illuminate\Database\Eloquent\Model $this */
49
+ return $this->hasMany(Driver::class)->without('user');
50
+ };
51
+ }
52
+
53
+ /**
54
+ * @return \Illuminate\Database\Eloquent\Relations\HasOne
55
+ */
56
+ public function customer()
57
+ {
58
+ return function () {
59
+ /* @var \Illuminate\Database\Eloquent\Model $this */
60
+ return $this->hasOne(Contact::class)->where('type', 'customer')->without('user');
61
+ };
62
+ }
63
+ }
@@ -0,0 +1,56 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Exports;
4
+
5
+ use Fleetbase\FleetOps\Models\Contact;
6
+ use Maatwebsite\Excel\Concerns\FromCollection;
7
+ use Maatwebsite\Excel\Concerns\WithColumnFormatting;
8
+ use Maatwebsite\Excel\Concerns\WithHeadings;
9
+ use Maatwebsite\Excel\Concerns\WithMapping;
10
+ use PhpOffice\PhpSpreadsheet\Shared\Date;
11
+ use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
12
+
13
+ class ContactExport implements FromCollection, WithHeadings, WithMapping, WithColumnFormatting
14
+ {
15
+ public function map($contact): array
16
+ {
17
+ return [
18
+ $contact->public_id,
19
+ $contact->internal_id,
20
+ $contact->name,
21
+ $contact->email,
22
+ $contact->phone,
23
+ Date::dateTimeToExcel($contact->created_at),
24
+ ];
25
+ }
26
+
27
+ public function headings(): array
28
+ {
29
+ return [
30
+ 'ID',
31
+ 'Internal ID',
32
+ 'Name',
33
+ 'Address',
34
+ 'Email',
35
+ 'Phone',
36
+ 'Created',
37
+ ];
38
+ }
39
+
40
+ public function columnFormats(): array
41
+ {
42
+ return [
43
+ 'E' => NumberFormat::FORMAT_DATE_DDMMYYYY,
44
+ 'F' => NumberFormat::FORMAT_DATE_DDMMYYYY,
45
+ 'G' => NumberFormat::FORMAT_DATE_DDMMYYYY,
46
+ ];
47
+ }
48
+
49
+ /**
50
+ * @return \Illuminate\Support\Collection
51
+ */
52
+ public function collection()
53
+ {
54
+ return Contact::where('company_uuid', session('company'))->get();
55
+ }
56
+ }
@@ -0,0 +1,61 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Exports;
4
+
5
+ use Fleetbase\FleetOps\Models\Driver;
6
+ use Maatwebsite\Excel\Concerns\FromCollection;
7
+ use Maatwebsite\Excel\Concerns\WithColumnFormatting;
8
+ use Maatwebsite\Excel\Concerns\WithHeadings;
9
+ use Maatwebsite\Excel\Concerns\WithMapping;
10
+ use PhpOffice\PhpSpreadsheet\Shared\Date;
11
+ use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
12
+
13
+ class DriverExport implements FromCollection, WithHeadings, WithMapping, WithColumnFormatting
14
+ {
15
+ public function map($driver): array
16
+ {
17
+ return [
18
+ $driver->public_id,
19
+ $driver->internal_id,
20
+ $driver->name,
21
+ $driver->vendor_name,
22
+ $driver->vehicle_name,
23
+ $driver->phone,
24
+ $driver->drivers_license_number,
25
+ $driver->country,
26
+ Date::dateTimeToExcel($driver->created_at),
27
+ ];
28
+ }
29
+
30
+ public function headings(): array
31
+ {
32
+ return [
33
+ 'ID',
34
+ 'Internal ID',
35
+ 'Name',
36
+ 'Vendor',
37
+ 'Vehicle',
38
+ 'Phone',
39
+ 'License #',
40
+ 'Country',
41
+ 'Created',
42
+ ];
43
+ }
44
+
45
+ public function columnFormats(): array
46
+ {
47
+ return [
48
+ 'E' => NumberFormat::FORMAT_DATE_DDMMYYYY,
49
+ 'F' => NumberFormat::FORMAT_DATE_DDMMYYYY,
50
+ 'G' => NumberFormat::FORMAT_DATE_DDMMYYYY,
51
+ ];
52
+ }
53
+
54
+ /**
55
+ * @return \Illuminate\Support\Collection
56
+ */
57
+ public function collection()
58
+ {
59
+ return Driver::where('company_uuid', session('company'))->get();
60
+ }
61
+ }
@@ -0,0 +1,53 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Exports;
4
+
5
+ use Fleetbase\FleetOps\Models\Fleet;
6
+ use Maatwebsite\Excel\Concerns\FromCollection;
7
+ use Maatwebsite\Excel\Concerns\WithColumnFormatting;
8
+ use Maatwebsite\Excel\Concerns\WithHeadings;
9
+ use Maatwebsite\Excel\Concerns\WithMapping;
10
+ use PhpOffice\PhpSpreadsheet\Shared\Date;
11
+ use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
12
+
13
+ class FleetExport implements FromCollection, WithHeadings, WithMapping, WithColumnFormatting
14
+ {
15
+ public function map($fleet): array
16
+ {
17
+ return [
18
+ $fleet->public_id,
19
+ $fleet->internal_id,
20
+ $fleet->name,
21
+ $fleet->zone_uuid,
22
+ Date::dateTimeToExcel($fleet->created_at),
23
+ ];
24
+ }
25
+
26
+ public function headings(): array
27
+ {
28
+ return [
29
+ 'ID',
30
+ 'Internal ID',
31
+ 'Name',
32
+ 'Zone Assigned',
33
+ 'Created',
34
+ ];
35
+ }
36
+
37
+ public function columnFormats(): array
38
+ {
39
+ return [
40
+ 'E' => NumberFormat::FORMAT_DATE_DDMMYYYY,
41
+ 'F' => NumberFormat::FORMAT_DATE_DDMMYYYY,
42
+ 'G' => NumberFormat::FORMAT_DATE_DDMMYYYY,
43
+ ];
44
+ }
45
+
46
+ /**
47
+ * @return \Illuminate\Support\Collection
48
+ */
49
+ public function collection()
50
+ {
51
+ return Fleet::where('company_uuid', session('company'))->get();
52
+ }
53
+ }
@@ -0,0 +1,55 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Exports;
4
+
5
+ use Fleetbase\FleetOps\Models\Place;
6
+ use Maatwebsite\Excel\Concerns\FromCollection;
7
+ use Maatwebsite\Excel\Concerns\WithColumnFormatting;
8
+ use Maatwebsite\Excel\Concerns\WithHeadings;
9
+ use Maatwebsite\Excel\Concerns\WithMapping;
10
+ use PhpOffice\PhpSpreadsheet\Shared\Date;
11
+ use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
12
+
13
+ class PlaceExport implements FromCollection, WithHeadings, WithMapping, WithColumnFormatting
14
+ {
15
+ public function map($place): array
16
+ {
17
+ return [
18
+ $place->public_id,
19
+ $place->internal_id,
20
+ $place->display_name,
21
+ $place->address,
22
+ $place->country_name,
23
+ Date::dateTimeToExcel($place->created_at),
24
+ ];
25
+ }
26
+
27
+ public function headings(): array
28
+ {
29
+ return [
30
+ 'ID',
31
+ 'Internal ID',
32
+ 'Name',
33
+ 'Address',
34
+ 'Country',
35
+ 'Created',
36
+ ];
37
+ }
38
+
39
+ public function columnFormats(): array
40
+ {
41
+ return [
42
+ 'E' => NumberFormat::FORMAT_DATE_DDMMYYYY,
43
+ 'F' => NumberFormat::FORMAT_DATE_DDMMYYYY,
44
+ 'G' => NumberFormat::FORMAT_DATE_DDMMYYYY,
45
+ ];
46
+ }
47
+
48
+ /**
49
+ * @return \Illuminate\Support\Collection
50
+ */
51
+ public function collection()
52
+ {
53
+ return Place::where('company_uuid', session('company'))->get();
54
+ }
55
+ }
@@ -0,0 +1,58 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Exports;
4
+
5
+ use Fleetbase\FleetOps\Models\ServiceArea;
6
+ use Maatwebsite\Excel\Concerns\FromCollection;
7
+ use Maatwebsite\Excel\Concerns\WithColumnFormatting;
8
+ use Maatwebsite\Excel\Concerns\WithHeadings;
9
+ use Maatwebsite\Excel\Concerns\WithMapping;
10
+ use PhpOffice\PhpSpreadsheet\Shared\Date;
11
+ use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
12
+
13
+ class ServiceAreaExport implements FromCollection, WithHeadings, WithMapping, WithColumnFormatting
14
+ {
15
+ public function map($service_area): array
16
+ {
17
+ return [
18
+ $service_area->public_id,
19
+ $service_area->internal_id,
20
+ $service_area->name,
21
+ $service_area->vendor_name,
22
+ $service_area->vehicle_name,
23
+ $service_area->phone,
24
+ $service_area->drivers_license_number,
25
+ $service_area->country,
26
+ Date::dateTimeToExcel($service_area->created_at),
27
+ ];
28
+ }
29
+
30
+ public function headings(): array
31
+ {
32
+ return [
33
+ 'ID',
34
+ 'Internal ID',
35
+ 'Service',
36
+ 'Service Area',
37
+ 'Zone',
38
+ 'Created',
39
+ ];
40
+ }
41
+
42
+ public function columnFormats(): array
43
+ {
44
+ return [
45
+ 'E' => NumberFormat::FORMAT_DATE_DDMMYYYY,
46
+ 'F' => NumberFormat::FORMAT_DATE_DDMMYYYY,
47
+ 'G' => NumberFormat::FORMAT_DATE_DDMMYYYY,
48
+ ];
49
+ }
50
+
51
+ /**
52
+ * @return \Illuminate\Support\Collection
53
+ */
54
+ public function collection()
55
+ {
56
+ return ServiceArea::where('company_uuid', session('company'))->get();
57
+ }
58
+ }
@@ -0,0 +1,57 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Exports;
4
+
5
+ use Fleetbase\FleetOps\Models\Vehicle;
6
+ use Maatwebsite\Excel\Concerns\FromCollection;
7
+ use Maatwebsite\Excel\Concerns\WithColumnFormatting;
8
+ use Maatwebsite\Excel\Concerns\WithHeadings;
9
+ use Maatwebsite\Excel\Concerns\WithMapping;
10
+ use PhpOffice\PhpSpreadsheet\Shared\Date;
11
+ use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
12
+
13
+ class VehicleExport implements FromCollection, WithHeadings, WithMapping, WithColumnFormatting
14
+ {
15
+ public function map($vehicle): array
16
+ {
17
+ return [
18
+ $vehicle->public_id,
19
+ $vehicle->internal_id,
20
+ $vehicle->display_name,
21
+ $vehicle->driver_name,
22
+ $vehicle->model_data,
23
+ Date::dateTimeToExcel($vehicle->created_at),
24
+ ];
25
+ }
26
+
27
+ public function headings(): array
28
+ {
29
+ return [
30
+ 'ID',
31
+ 'Internal ID',
32
+ 'Name',
33
+ 'Driver Assigned',
34
+ 'Make',
35
+ 'Model',
36
+ 'Year',
37
+ 'Created',
38
+ ];
39
+ }
40
+
41
+ public function columnFormats(): array
42
+ {
43
+ return [
44
+ 'E' => NumberFormat::FORMAT_DATE_DDMMYYYY,
45
+ 'F' => NumberFormat::FORMAT_DATE_DDMMYYYY,
46
+ 'G' => NumberFormat::FORMAT_DATE_DDMMYYYY,
47
+ ];
48
+ }
49
+
50
+ /**
51
+ * @return \Illuminate\Support\Collection
52
+ */
53
+ public function collection()
54
+ {
55
+ return Vehicle::where('company_uuid', session('company'))->get();
56
+ }
57
+ }
@@ -0,0 +1,57 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Exports;
4
+
5
+ use Fleetbase\FleetOps\Models\Vendor;
6
+ use Maatwebsite\Excel\Concerns\FromCollection;
7
+ use Maatwebsite\Excel\Concerns\WithColumnFormatting;
8
+ use Maatwebsite\Excel\Concerns\WithHeadings;
9
+ use Maatwebsite\Excel\Concerns\WithMapping;
10
+ use PhpOffice\PhpSpreadsheet\Shared\Date;
11
+ use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
12
+
13
+ class VendorExport implements FromCollection, WithHeadings, WithMapping, WithColumnFormatting
14
+ {
15
+ public function map($vendor): array
16
+ {
17
+ return [
18
+ $vendor->public_id,
19
+ $vendor->internal_id,
20
+ $vendor->name,
21
+ $vendor->place_uuid,
22
+ $vendor->email,
23
+ $vendor->phone,
24
+ Date::dateTimeToExcel($vendor->created_at),
25
+ ];
26
+ }
27
+
28
+ public function headings(): array
29
+ {
30
+ return [
31
+ 'ID',
32
+ 'Internal ID',
33
+ 'Name',
34
+ 'Address',
35
+ 'Email',
36
+ 'Phone',
37
+ 'Created',
38
+ ];
39
+ }
40
+
41
+ public function columnFormats(): array
42
+ {
43
+ return [
44
+ 'E' => NumberFormat::FORMAT_DATE_DDMMYYYY,
45
+ 'F' => NumberFormat::FORMAT_DATE_DDMMYYYY,
46
+ 'G' => NumberFormat::FORMAT_DATE_DDMMYYYY,
47
+ ];
48
+ }
49
+
50
+ /**
51
+ * @return \Illuminate\Support\Collection
52
+ */
53
+ public function collection()
54
+ {
55
+ return Vendor::where('company_uuid', session('company'))->get();
56
+ }
57
+ }