@fleetbase/fleetops-engine 0.2.6 → 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 (307) 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/composer.json +85 -0
  7. package/extension.json +10 -0
  8. package/package.json +3 -3
  9. package/phpstan.neon.dist +8 -0
  10. package/phpunit.xml.dist +16 -0
  11. package/server/config/api.php +765 -0
  12. package/server/config/cache.stores.php +18 -0
  13. package/server/config/dompdf.php +242 -0
  14. package/server/config/fleetops.php +19 -0
  15. package/server/config/geocoder.php +108 -0
  16. package/server/data/globe.json +261 -0
  17. package/server/migrations/2023_04_27_053456_create_contacts_table.php +49 -0
  18. package/server/migrations/2023_04_27_053456_create_drivers_table.php +62 -0
  19. package/server/migrations/2023_04_27_053456_create_entities_table.php +67 -0
  20. package/server/migrations/2023_04_27_053456_create_fleet_drivers_table.php +39 -0
  21. package/server/migrations/2023_04_27_053456_create_fleets_table.php +47 -0
  22. package/server/migrations/2023_04_27_053456_create_fuel_reports_table.php +50 -0
  23. package/server/migrations/2023_04_27_053456_create_integrated_vendors_table.php +44 -0
  24. package/server/migrations/2023_04_27_053456_create_issues_table.php +53 -0
  25. package/server/migrations/2023_04_27_053456_create_orders_table.php +70 -0
  26. package/server/migrations/2023_04_27_053456_create_payloads_table.php +51 -0
  27. package/server/migrations/2023_04_27_053456_create_places_table.php +62 -0
  28. package/server/migrations/2023_04_27_053456_create_positions_table.php +46 -0
  29. package/server/migrations/2023_04_27_053456_create_proofs_table.php +44 -0
  30. package/server/migrations/2023_04_27_053456_create_purchase_rates_table.php +46 -0
  31. package/server/migrations/2023_04_27_053456_create_routes_table.php +40 -0
  32. package/server/migrations/2023_04_27_053456_create_service_areas_table.php +47 -0
  33. package/server/migrations/2023_04_27_053456_create_service_quote_items_table.php +42 -0
  34. package/server/migrations/2023_04_27_053456_create_service_quotes_table.php +47 -0
  35. package/server/migrations/2023_04_27_053456_create_service_rate_fees_table.php +45 -0
  36. package/server/migrations/2023_04_27_053456_create_service_rate_parcel_fees_table.php +47 -0
  37. package/server/migrations/2023_04_27_053456_create_service_rates_table.php +61 -0
  38. package/server/migrations/2023_04_27_053456_create_tracking_numbers_table.php +46 -0
  39. package/server/migrations/2023_04_27_053456_create_tracking_statuses_table.php +54 -0
  40. package/server/migrations/2023_04_27_053456_create_vehicles_table.php +84 -0
  41. package/server/migrations/2023_04_27_053456_create_vendors_table.php +56 -0
  42. package/server/migrations/2023_04_27_053456_create_waypoints_table.php +45 -0
  43. package/server/migrations/2023_04_27_053456_create_zones_table.php +46 -0
  44. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_companies_table.php +32 -0
  45. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_contacts_table.php +34 -0
  46. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_drivers_table.php +40 -0
  47. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_entities_table.php +40 -0
  48. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fleet_drivers_table.php +34 -0
  49. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fleets_table.php +36 -0
  50. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fuel_reports_table.php +36 -0
  51. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_integrated_vendors_table.php +34 -0
  52. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_issues_table.php +38 -0
  53. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_orders_table.php +48 -0
  54. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_payloads_table.php +40 -0
  55. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_places_table.php +32 -0
  56. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_positions_table.php +36 -0
  57. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_proofs_table.php +34 -0
  58. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_purchase_rates_table.php +38 -0
  59. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_routes_table.php +34 -0
  60. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_areas_table.php +34 -0
  61. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_quote_items_table.php +32 -0
  62. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_quotes_table.php +38 -0
  63. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rate_fees_table.php +32 -0
  64. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rate_parcel_fees_table.php +32 -0
  65. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rates_table.php +36 -0
  66. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_tracking_numbers_table.php +34 -0
  67. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_tracking_statuses_table.php +34 -0
  68. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_vehicles_table.php +36 -0
  69. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_vendors_table.php +40 -0
  70. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_waypoints_table.php +38 -0
  71. package/server/migrations/2023_04_27_053459_add_foreign_keys_to_zones_table.php +34 -0
  72. package/server/migrations/2023_09_14_074512_update_vehicles_table.php +100 -0
  73. package/server/migrations/2023_09_14_074619_create_vehicle_devices_table.php +44 -0
  74. package/server/migrations/2023_09_26_071205_add_online_column_to_vehicles_table.php +32 -0
  75. package/server/migrations/2023_09_26_083957_create_fleet_vehicles_table.php +45 -0
  76. package/server/migrations/2023_09_27_023757_add_column_to_fleets_table.php +46 -0
  77. package/server/migrations/2023_10_05_074811_update_vehicle.php +42 -0
  78. package/server/resources/views/labels/default.php +165 -0
  79. package/server/src/Auth/Schemas/FleetOps.php +75 -0
  80. package/server/src/Casts/MultiPolygon.php +50 -0
  81. package/server/src/Casts/Point.php +109 -0
  82. package/server/src/Casts/Polygon.php +46 -0
  83. package/server/src/Console/Commands/DispatchAdhocOrders.php +137 -0
  84. package/server/src/Console/Commands/DispatchOrders.php +71 -0
  85. package/server/src/Console/Commands/TrackOrderDistanceAndTime.php +62 -0
  86. package/server/src/Events/DriverLocationChanged.php +174 -0
  87. package/server/src/Events/DriverSimulatedLocationChanged.php +183 -0
  88. package/server/src/Events/EntityDriverAssigned.php +36 -0
  89. package/server/src/Events/OrderCanceled.php +15 -0
  90. package/server/src/Events/OrderCompleted.php +15 -0
  91. package/server/src/Events/OrderDispatchFailed.php +42 -0
  92. package/server/src/Events/OrderDispatched.php +15 -0
  93. package/server/src/Events/OrderDriverAssigned.php +15 -0
  94. package/server/src/Events/OrderReady.php +15 -0
  95. package/server/src/Events/OrderStarted.php +15 -0
  96. package/server/src/Exceptions/IntegratedVendorException.php +18 -0
  97. package/server/src/Expansions/UserExpansion.php +63 -0
  98. package/server/src/Exports/ContactExport.php +56 -0
  99. package/server/src/Exports/DriverExport.php +61 -0
  100. package/server/src/Exports/FleetExport.php +53 -0
  101. package/server/src/Exports/PlaceExport.php +55 -0
  102. package/server/src/Exports/ServiceAreaExport.php +58 -0
  103. package/server/src/Exports/VehicleExport.php +57 -0
  104. package/server/src/Exports/VendorExport.php +57 -0
  105. package/server/src/Http/Controllers/Api/v1/ContactController.php +133 -0
  106. package/server/src/Http/Controllers/Api/v1/DriverController.php +691 -0
  107. package/server/src/Http/Controllers/Api/v1/EntityController.php +230 -0
  108. package/server/src/Http/Controllers/Api/v1/FleetController.php +146 -0
  109. package/server/src/Http/Controllers/Api/v1/LabelController.php +63 -0
  110. package/server/src/Http/Controllers/Api/v1/OrderController.php +1114 -0
  111. package/server/src/Http/Controllers/Api/v1/PayloadController.php +195 -0
  112. package/server/src/Http/Controllers/Api/v1/PlaceController.php +333 -0
  113. package/server/src/Http/Controllers/Api/v1/PurchaseRateController.php +199 -0
  114. package/server/src/Http/Controllers/Api/v1/ServiceAreaController.php +133 -0
  115. package/server/src/Http/Controllers/Api/v1/ServiceQuoteController.php +381 -0
  116. package/server/src/Http/Controllers/Api/v1/ServiceRateController.php +223 -0
  117. package/server/src/Http/Controllers/Api/v1/TrackingNumberController.php +146 -0
  118. package/server/src/Http/Controllers/Api/v1/TrackingStatusController.php +138 -0
  119. package/server/src/Http/Controllers/Api/v1/VehicleController.php +191 -0
  120. package/server/src/Http/Controllers/Api/v1/VendorController.php +159 -0
  121. package/server/src/Http/Controllers/Api/v1/ZoneController.php +146 -0
  122. package/server/src/Http/Controllers/FleetOpsController.php +13 -0
  123. package/server/src/Http/Controllers/Internal/v1/ContactController.php +69 -0
  124. package/server/src/Http/Controllers/Internal/v1/DriverController.php +261 -0
  125. package/server/src/Http/Controllers/Internal/v1/EntityController.php +15 -0
  126. package/server/src/Http/Controllers/Internal/v1/FleetController.php +152 -0
  127. package/server/src/Http/Controllers/Internal/v1/FleetOpsLookupController.php +80 -0
  128. package/server/src/Http/Controllers/Internal/v1/FuelReportController.php +15 -0
  129. package/server/src/Http/Controllers/Internal/v1/GeocoderController.php +96 -0
  130. package/server/src/Http/Controllers/Internal/v1/IntegratedVendorController.php +63 -0
  131. package/server/src/Http/Controllers/Internal/v1/IssueController.php +15 -0
  132. package/server/src/Http/Controllers/Internal/v1/LiveController.php +127 -0
  133. package/server/src/Http/Controllers/Internal/v1/MetricsController.php +75 -0
  134. package/server/src/Http/Controllers/Internal/v1/MorphController.php +77 -0
  135. package/server/src/Http/Controllers/Internal/v1/OrderConfigController.php +269 -0
  136. package/server/src/Http/Controllers/Internal/v1/OrderController.php +564 -0
  137. package/server/src/Http/Controllers/Internal/v1/PayloadController.php +15 -0
  138. package/server/src/Http/Controllers/Internal/v1/PlaceController.php +163 -0
  139. package/server/src/Http/Controllers/Internal/v1/ProofController.php +139 -0
  140. package/server/src/Http/Controllers/Internal/v1/PurchaseRateController.php +15 -0
  141. package/server/src/Http/Controllers/Internal/v1/RouteController.php +15 -0
  142. package/server/src/Http/Controllers/Internal/v1/ServiceAreaController.php +32 -0
  143. package/server/src/Http/Controllers/Internal/v1/ServiceQuoteController.php +345 -0
  144. package/server/src/Http/Controllers/Internal/v1/ServiceRateController.php +47 -0
  145. package/server/src/Http/Controllers/Internal/v1/SettingController.php +30 -0
  146. package/server/src/Http/Controllers/Internal/v1/TrackingNumberController.php +15 -0
  147. package/server/src/Http/Controllers/Internal/v1/TrackingStatusController.php +15 -0
  148. package/server/src/Http/Controllers/Internal/v1/VehicleController.php +65 -0
  149. package/server/src/Http/Controllers/Internal/v1/VehicleDeviceController.php +15 -0
  150. package/server/src/Http/Controllers/Internal/v1/VendorController.php +120 -0
  151. package/server/src/Http/Controllers/Internal/v1/ZoneController.php +15 -0
  152. package/server/src/Http/Filter/ContactFilter.php +86 -0
  153. package/server/src/Http/Filter/DriverFilter.php +148 -0
  154. package/server/src/Http/Filter/FleetFilter.php +108 -0
  155. package/server/src/Http/Filter/IntegratedVendorFilter.php +13 -0
  156. package/server/src/Http/Filter/OrderFilter.php +242 -0
  157. package/server/src/Http/Filter/PlaceFilter.php +111 -0
  158. package/server/src/Http/Filter/ServiceAreaFilter.php +13 -0
  159. package/server/src/Http/Filter/ServiceQuoteFilter.php +13 -0
  160. package/server/src/Http/Filter/ServiceRateFilter.php +33 -0
  161. package/server/src/Http/Filter/TrackingStatusFilter.php +43 -0
  162. package/server/src/Http/Filter/VehicleFilter.php +91 -0
  163. package/server/src/Http/Filter/VendorFilter.php +83 -0
  164. package/server/src/Http/Filter/ZoneFilter.php +13 -0
  165. package/server/src/Http/Requests/CancelOrderRequest.php +31 -0
  166. package/server/src/Http/Requests/CreateContactRequest.php +33 -0
  167. package/server/src/Http/Requests/CreateDriverRequest.php +55 -0
  168. package/server/src/Http/Requests/CreateEntityRequest.php +43 -0
  169. package/server/src/Http/Requests/CreateFleetRequest.php +32 -0
  170. package/server/src/Http/Requests/CreateOrderRequest.php +66 -0
  171. package/server/src/Http/Requests/CreatePayloadRequest.php +37 -0
  172. package/server/src/Http/Requests/CreatePlaceRequest.php +38 -0
  173. package/server/src/Http/Requests/CreatePurchaseRateRequest.php +33 -0
  174. package/server/src/Http/Requests/CreateServiceAreaRequest.php +35 -0
  175. package/server/src/Http/Requests/CreateServiceQuoteRequest.php +29 -0
  176. package/server/src/Http/Requests/CreateServiceRateRequest.php +56 -0
  177. package/server/src/Http/Requests/CreateTrackingNumberRequest.php +34 -0
  178. package/server/src/Http/Requests/CreateTrackingStatusRequest.php +42 -0
  179. package/server/src/Http/Requests/CreateVehicleRequest.php +32 -0
  180. package/server/src/Http/Requests/CreateVendorRequest.php +35 -0
  181. package/server/src/Http/Requests/CreateZoneRequest.php +35 -0
  182. package/server/src/Http/Requests/DecodeTrackingNumberQR.php +30 -0
  183. package/server/src/Http/Requests/DriverSimulationRequest.php +46 -0
  184. package/server/src/Http/Requests/Internal/AssignOrderRequest.php +31 -0
  185. package/server/src/Http/Requests/Internal/CreateDriverRequest.php +42 -0
  186. package/server/src/Http/Requests/Internal/FleetActionRequest.php +32 -0
  187. package/server/src/Http/Requests/Internal/UpdateDriverRequest.php +7 -0
  188. package/server/src/Http/Requests/QueryServiceQuotesRequest.php +41 -0
  189. package/server/src/Http/Requests/UpdateContactRequest.php +20 -0
  190. package/server/src/Http/Requests/UpdateDriverRequest.php +7 -0
  191. package/server/src/Http/Requests/UpdateEntityRequest.php +7 -0
  192. package/server/src/Http/Requests/UpdateFleetRequest.php +7 -0
  193. package/server/src/Http/Requests/UpdateOrderRequest.php +7 -0
  194. package/server/src/Http/Requests/UpdatePayloadRequest.php +7 -0
  195. package/server/src/Http/Requests/UpdatePlaceRequest.php +7 -0
  196. package/server/src/Http/Requests/UpdatePurchaseRateRequest.php +7 -0
  197. package/server/src/Http/Requests/UpdateServiceAreaRequest.php +29 -0
  198. package/server/src/Http/Requests/UpdateServiceQuoteRequest.php +29 -0
  199. package/server/src/Http/Requests/UpdateServiceRateRequest.php +29 -0
  200. package/server/src/Http/Requests/UpdateTrackingNumberRequest.php +7 -0
  201. package/server/src/Http/Requests/UpdateTrackingStatusRequest.php +32 -0
  202. package/server/src/Http/Requests/UpdateVehicleRequest.php +7 -0
  203. package/server/src/Http/Requests/UpdateVendorRequest.php +7 -0
  204. package/server/src/Http/Requests/UpdateZoneRequest.php +7 -0
  205. package/server/src/Http/Resources/Internal/v1/IntegratedVendorFacilitator.php +37 -0
  206. package/server/src/Http/Resources/Internal/v1/Vehicle.php +33 -0
  207. package/server/src/Http/Resources/Internal/v1/Waypoint.php +34 -0
  208. package/server/src/Http/Resources/v1/Contact.php +62 -0
  209. package/server/src/Http/Resources/v1/CurrentJob.php +36 -0
  210. package/server/src/Http/Resources/v1/DeletedResource.php +61 -0
  211. package/server/src/Http/Resources/v1/Driver.php +89 -0
  212. package/server/src/Http/Resources/v1/Entity.php +107 -0
  213. package/server/src/Http/Resources/v1/Fleet.php +60 -0
  214. package/server/src/Http/Resources/v1/FuelReport.php +67 -0
  215. package/server/src/Http/Resources/v1/Order.php +131 -0
  216. package/server/src/Http/Resources/v1/Payload.php +94 -0
  217. package/server/src/Http/Resources/v1/Place.php +84 -0
  218. package/server/src/Http/Resources/v1/Proof.php +36 -0
  219. package/server/src/Http/Resources/v1/PurchaseRate.php +77 -0
  220. package/server/src/Http/Resources/v1/ServiceArea.php +55 -0
  221. package/server/src/Http/Resources/v1/ServiceQuote.php +57 -0
  222. package/server/src/Http/Resources/v1/ServiceRate.php +94 -0
  223. package/server/src/Http/Resources/v1/ServiceRateFee.php +58 -0
  224. package/server/src/Http/Resources/v1/ServiceRateParcelFee.php +48 -0
  225. package/server/src/Http/Resources/v1/TrackingNumber.php +62 -0
  226. package/server/src/Http/Resources/v1/TrackingStatus.php +84 -0
  227. package/server/src/Http/Resources/v1/Vehicle.php +75 -0
  228. package/server/src/Http/Resources/v1/VehicleDevice.php +44 -0
  229. package/server/src/Http/Resources/v1/VehicleWithoutDriver.php +72 -0
  230. package/server/src/Http/Resources/v1/Vendor.php +72 -0
  231. package/server/src/Http/Resources/v1/Zone.php +60 -0
  232. package/server/src/Imports/OrdersImport.php +18 -0
  233. package/server/src/Integrations/Lalamove/Lalamove.php +678 -0
  234. package/server/src/Integrations/Lalamove/LalamoveDeliveryStop.php +97 -0
  235. package/server/src/Integrations/Lalamove/LalamoveMarket.php +123 -0
  236. package/server/src/Integrations/Lalamove/LalamoveServiceType.php +161 -0
  237. package/server/src/Jobs/SimulateDrivingRoute.php +81 -0
  238. package/server/src/Jobs/SimulateWaypointReached.php +79 -0
  239. package/server/src/Listeners/HandleOrderCanceled.php +46 -0
  240. package/server/src/Listeners/HandleOrderCreated.php +23 -0
  241. package/server/src/Listeners/HandleOrderDispatchFailed.php +35 -0
  242. package/server/src/Listeners/HandleOrderDispatched.php +108 -0
  243. package/server/src/Listeners/HandleOrderDriverAssigned.php +42 -0
  244. package/server/src/Listeners/HandleOrderReady.php +27 -0
  245. package/server/src/Listeners/HandleUserRemovedFromCompany.php +31 -0
  246. package/server/src/Models/Contact.php +239 -0
  247. package/server/src/Models/Driver.php +543 -0
  248. package/server/src/Models/Entity.php +416 -0
  249. package/server/src/Models/Fleet.php +203 -0
  250. package/server/src/Models/FleetDriver.php +73 -0
  251. package/server/src/Models/FleetVehicle.php +73 -0
  252. package/server/src/Models/FuelReport.php +125 -0
  253. package/server/src/Models/IntegratedVendor.php +219 -0
  254. package/server/src/Models/Issue.php +111 -0
  255. package/server/src/Models/Order.php +1132 -0
  256. package/server/src/Models/Payload.php +699 -0
  257. package/server/src/Models/Place.php +656 -0
  258. package/server/src/Models/Position.php +119 -0
  259. package/server/src/Models/Proof.php +94 -0
  260. package/server/src/Models/PurchaseRate.php +208 -0
  261. package/server/src/Models/Route.php +128 -0
  262. package/server/src/Models/ServiceArea.php +161 -0
  263. package/server/src/Models/ServiceQuote.php +207 -0
  264. package/server/src/Models/ServiceQuoteItem.php +46 -0
  265. package/server/src/Models/ServiceRate.php +953 -0
  266. package/server/src/Models/ServiceRateFee.php +96 -0
  267. package/server/src/Models/ServiceRateParcelFee.php +116 -0
  268. package/server/src/Models/TrackingNumber.php +310 -0
  269. package/server/src/Models/TrackingStatus.php +177 -0
  270. package/server/src/Models/Vehicle.php +452 -0
  271. package/server/src/Models/VehicleDevice.php +79 -0
  272. package/server/src/Models/Vendor.php +244 -0
  273. package/server/src/Models/Waypoint.php +226 -0
  274. package/server/src/Models/Zone.php +95 -0
  275. package/server/src/Notifications/OrderAssigned.php +140 -0
  276. package/server/src/Notifications/OrderCanceled.php +129 -0
  277. package/server/src/Notifications/OrderDispatchFailed.php +81 -0
  278. package/server/src/Notifications/OrderDispatched.php +173 -0
  279. package/server/src/Notifications/OrderPing.php +162 -0
  280. package/server/src/Notifications/OrderSplit.php +56 -0
  281. package/server/src/Observers/DriverObserver.php +34 -0
  282. package/server/src/Observers/OrderObserver.php +34 -0
  283. package/server/src/Observers/PayloadObserver.php +30 -0
  284. package/server/src/Observers/PlaceObserver.php +26 -0
  285. package/server/src/Observers/PurchaseRateObserver.php +61 -0
  286. package/server/src/Observers/ServiceAreaObserver.php +35 -0
  287. package/server/src/Observers/ServiceRateObserver.php +78 -0
  288. package/server/src/Observers/TrackingNumberObserver.php +44 -0
  289. package/server/src/Observers/UserObserver.php +20 -0
  290. package/server/src/Observers/VehicleObserver.php +66 -0
  291. package/server/src/Providers/EventServiceProvider.php +30 -0
  292. package/server/src/Providers/FleetOpsServiceProvider.php +94 -0
  293. package/server/src/Rules/ResolvablePoint.php +37 -0
  294. package/server/src/Scopes/DriverScope.php +21 -0
  295. package/server/src/Support/Algo.php +55 -0
  296. package/server/src/Support/DistanceMatrix.php +27 -0
  297. package/server/src/Support/Encoding/Polyline.php +168 -0
  298. package/server/src/Support/Flow.php +622 -0
  299. package/server/src/Support/Geocoding.php +216 -0
  300. package/server/src/Support/IntegratedVendors.php +287 -0
  301. package/server/src/Support/Metrics.php +305 -0
  302. package/server/src/Support/OSRM.php +191 -0
  303. package/server/src/Support/ParsePhone.php +21 -0
  304. package/server/src/Support/Utils.php +1145 -0
  305. package/server/src/Traits/HasTrackingNumber.php +185 -0
  306. package/server/src/routes.php +381 -0
  307. package/server/tests/Feature.php +5 -0
@@ -0,0 +1,146 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Http\Controllers\Api\v1;
4
+
5
+ use Fleetbase\FleetOps\Http\Requests\CreateTrackingNumberRequest;
6
+ use Fleetbase\FleetOps\Http\Requests\DecodeTrackingNumberQR;
7
+ use Fleetbase\FleetOps\Http\Resources\v1\DeletedResource;
8
+ use Fleetbase\FleetOps\Http\Resources\v1\TrackingNumber as TrackingNumberResource;
9
+ use Fleetbase\FleetOps\Models\TrackingNumber;
10
+ use Fleetbase\FleetOps\Support\Utils;
11
+ use Fleetbase\Http\Controllers\Controller;
12
+ use Illuminate\Http\Request;
13
+
14
+ class TrackingNumberController extends Controller
15
+ {
16
+ /**
17
+ * Creates a new Fleetbase TrackingNumber resource.
18
+ *
19
+ * @param \Fleetbase\Http\Requests\CreateTrackingNumberRequest $request
20
+ *
21
+ * @return \Fleetbase\Http\Resources\TrackingNumber
22
+ */
23
+ public function create(CreateTrackingNumberRequest $request)
24
+ {
25
+ // get request input
26
+ $input = $request->only(['region', 'type']);
27
+
28
+ // make sure company is set
29
+ $input['company_uuid'] = session('company');
30
+
31
+ // owner assignment
32
+ if ($request->has('owner')) {
33
+ $owner = Utils::getUuid(
34
+ ['orders', 'entities'],
35
+ [
36
+ 'public_id' => $request->input('owner'),
37
+ 'company_uuid' => session('company'),
38
+ ]
39
+ );
40
+
41
+ if (is_array($owner)) {
42
+ $input['owner_uuid'] = Utils::get($owner, 'uuid');
43
+ $input['type'] = Utils::getModelClassName(Utils::get($owner, 'table'));
44
+ }
45
+ }
46
+
47
+ // create the trackingNumber
48
+ $trackingNumber = TrackingNumber::create($input);
49
+
50
+ // response the driver resource
51
+ return new TrackingNumberResource($trackingNumber);
52
+ }
53
+
54
+ /**
55
+ * Query for Fleetbase TrackingNumber resources.
56
+ *
57
+ * @return \Fleetbase\Http\Resources\TrackingNumberCollection
58
+ */
59
+ public function query(Request $request)
60
+ {
61
+ $results = TrackingNumber::queryWithRequest($request);
62
+
63
+ return TrackingNumberResource::collection($results);
64
+ }
65
+
66
+ /**
67
+ * Finds a single Fleetbase TrackingNumber resources.
68
+ *
69
+ * @return \Fleetbase\Http\Resources\TrackingNumberCollection
70
+ */
71
+ public function find($id)
72
+ {
73
+ // find for the trackingNumber
74
+ try {
75
+ $trackingNumber = TrackingNumber::findTrackingOrFail($id);
76
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
77
+ return response()->json(
78
+ [
79
+ 'error' => 'TrackingNumber resource not found.',
80
+ ],
81
+ 404
82
+ );
83
+ }
84
+
85
+ // response the trackingNumber resource
86
+ return new TrackingNumberResource($trackingNumber);
87
+ }
88
+
89
+ /**
90
+ * Deletes a Fleetbase TrackingNumber resources.
91
+ *
92
+ * @return \Fleetbase\Http\Resources\TrackingNumberCollection
93
+ */
94
+ public function delete($id, Request $request)
95
+ {
96
+ // find for the driver
97
+ try {
98
+ $trackingNumber = TrackingNumber::findTrackingOrFail($id);
99
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
100
+ return response()->json(
101
+ [
102
+ 'error' => 'TrackingNumber resource not found.',
103
+ ],
104
+ 404
105
+ );
106
+ }
107
+
108
+ // delete the trackingNumber
109
+ $trackingNumber->delete();
110
+
111
+ // response the trackingNumber resource
112
+ return new DeletedResource($trackingNumber);
113
+ }
114
+
115
+ /**
116
+ * Take the uuid value of an entity QR code and return the object.
117
+ *
118
+ * @param \Illuminate\Http\Request $request
119
+ *
120
+ * @return \Illuminate\Http\Response
121
+ */
122
+ public function fromQR(DecodeTrackingNumberQR $request)
123
+ {
124
+ // validate request inputs
125
+ $code = $request->input('code');
126
+
127
+ // get the model of from the code
128
+ $model = Utils::findModel(['entities', 'orders'], ['uuid' => $code]);
129
+
130
+ // if no model response with error
131
+ if (!$model) {
132
+ return response()->json(
133
+ [
134
+ 'error' => 'Unable to find QR code value',
135
+ ],
136
+ 400
137
+ );
138
+ }
139
+
140
+ // get the model class name
141
+ $modelType = class_basename($model);
142
+ $resourceNamespace = '\\Fleetbase\\Http\\Resources\\v1\\' . $modelType;
143
+
144
+ return new $resourceNamespace($model);
145
+ }
146
+ }
@@ -0,0 +1,138 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Http\Controllers\Api\v1;
4
+
5
+ use Fleetbase\FleetOps\Http\Requests\CreateTrackingStatusRequest;
6
+ use Fleetbase\FleetOps\Http\Requests\UpdateTrackingStatusRequest;
7
+ use Fleetbase\FleetOps\Http\Resources\v1\DeletedResource;
8
+ use Fleetbase\FleetOps\Http\Resources\v1\TrackingStatus as TrackingStatusResource;
9
+ use Fleetbase\FleetOps\Models\TrackingStatus;
10
+ use Fleetbase\FleetOps\Support\Utils;
11
+ use Fleetbase\Http\Controllers\Controller;
12
+ use Illuminate\Http\Request;
13
+
14
+ class TrackingStatusController extends Controller
15
+ {
16
+ /**
17
+ * Creates a new Fleetbase TrackingStatus resource.
18
+ *
19
+ * @param \Fleetbase\Http\Requests\CreateTrackingStatusRequest $request
20
+ *
21
+ * @return \Fleetbase\Http\Resources\TrackingStatus
22
+ */
23
+ public function create(CreateTrackingStatusRequest $request)
24
+ {
25
+ // get request input
26
+ $input = $request->only(['status', 'details', 'code', 'city', 'province', 'postal_code', 'country', 'latitude', 'longitude']);
27
+
28
+ // make sure company is set
29
+ $input['company_uuid'] = session('company');
30
+
31
+ // tracking number assignment
32
+ if ($request->has('tracking_number')) {
33
+ $input['tracking_number_uuid'] = Utils::getUuid('tracking_numbers', [
34
+ 'public_id' => $request->input('tracking_number'),
35
+ 'company_uuid' => session('company'),
36
+ ]);
37
+ }
38
+
39
+ // create the trackingStatus
40
+ $trackingStatus = TrackingStatus::create($input);
41
+
42
+ // response the driver resource
43
+ return new TrackingStatusResource($trackingStatus);
44
+ }
45
+
46
+ /**
47
+ * Updates a Fleetbase TrackingStatus resource.
48
+ *
49
+ * @param string $id
50
+ * @param \Fleetbase\Http\Requests\UpdateTrackingStatusRequest $request
51
+ *
52
+ * @return \Fleetbase\Http\Resources\TrackingStatus
53
+ */
54
+ public function update($id, UpdateTrackingStatusRequest $request)
55
+ {
56
+ // find for the trackingStatus
57
+ try {
58
+ $trackingStatus = TrackingStatus::findRecordOrFail($id);
59
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
60
+ return response()->json(
61
+ [
62
+ 'error' => 'TrackingStatus resource not found.',
63
+ ],
64
+ 404
65
+ );
66
+ }
67
+
68
+ // get request input
69
+ $input = $request->only(['status', 'details', 'code', 'city', 'province', 'postal_code', 'country', 'latitude', 'longitude']);
70
+
71
+ // update the trackingStatus
72
+ $trackingStatus->update($input);
73
+
74
+ // response the trackingStatus resource
75
+ return new TrackingStatusResource($trackingStatus);
76
+ }
77
+
78
+ /**
79
+ * Query for Fleetbase TrackingStatus resources.
80
+ *
81
+ * @return \Fleetbase\Http\Resources\TrackingStatusCollection
82
+ */
83
+ public function query(Request $request)
84
+ {
85
+ $results = TrackingStatus::queryWithRequest($request);
86
+
87
+ return TrackingStatusResource::collection($results);
88
+ }
89
+
90
+ /**
91
+ * Finds a single Fleetbase TrackingStatus resources.
92
+ *
93
+ * @return \Fleetbase\Http\Resources\TrackingStatusCollection
94
+ */
95
+ public function find($id)
96
+ {
97
+ // find for the trackingStatus
98
+ try {
99
+ $trackingStatus = TrackingStatus::findRecordOrFail($id);
100
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
101
+ return response()->json(
102
+ [
103
+ 'error' => 'TrackingStatus resource not found.',
104
+ ],
105
+ 404
106
+ );
107
+ }
108
+
109
+ // response the trackingStatus resource
110
+ return new TrackingStatusResource($trackingStatus);
111
+ }
112
+
113
+ /**
114
+ * Deletes a Fleetbase TrackingStatus resources.
115
+ *
116
+ * @return \Fleetbase\Http\Resources\TrackingStatusCollection
117
+ */
118
+ public function delete($id)
119
+ {
120
+ // find for the driver
121
+ try {
122
+ $trackingStatus = TrackingStatus::findRecordOrFail($id);
123
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
124
+ return response()->json(
125
+ [
126
+ 'error' => 'TrackingStatus resource not found.',
127
+ ],
128
+ 404
129
+ );
130
+ }
131
+
132
+ // delete the trackingStatus
133
+ $trackingStatus->delete();
134
+
135
+ // response the trackingStatus resource
136
+ return new DeletedResource($trackingStatus);
137
+ }
138
+ }
@@ -0,0 +1,191 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Http\Controllers\Api\v1;
4
+
5
+ use Fleetbase\FleetOps\Http\Requests\CreateVehicleRequest;
6
+ use Fleetbase\FleetOps\Http\Requests\UpdateVehicleRequest;
7
+ use Fleetbase\FleetOps\Http\Resources\v1\DeletedResource;
8
+ use Fleetbase\FleetOps\Http\Resources\v1\Vehicle as VehicleResource;
9
+ use Fleetbase\FleetOps\Models\Driver;
10
+ use Fleetbase\FleetOps\Models\Vehicle;
11
+ use Fleetbase\FleetOps\Support\Utils;
12
+ use Fleetbase\Http\Controllers\Controller;
13
+ use Illuminate\Http\Request;
14
+
15
+ class VehicleController extends Controller
16
+ {
17
+ /**
18
+ * Creates a new Fleetbase Vehicle resource.
19
+ *
20
+ * @param \Fleetbase\Http\Requests\CreateVehicleRequest $request
21
+ *
22
+ * @return \Fleetbase\Http\Resources\Vehicle
23
+ */
24
+ public function create(CreateVehicleRequest $request)
25
+ {
26
+ // get request input
27
+ $input = $request->only(['status', 'make', 'model', 'year', 'trim', 'type', 'plate_number', 'vin', 'meta']);
28
+ // make sure company is set
29
+ $input['company_uuid'] = session('company');
30
+
31
+ // create instance of vehicle model
32
+ $vehicle = new Vehicle();
33
+
34
+ // vendor assignment
35
+ if ($request->has('vendor')) {
36
+ $input['vendor_uuid'] = Utils::getUuid('vendors', [
37
+ 'public_id' => $request->input('vendor'),
38
+ 'company_uuid' => session('company'),
39
+ ]);
40
+ }
41
+
42
+ // apply user input to vehicle
43
+ $vehicle = $vehicle->fill($input);
44
+
45
+ // save the vehicle
46
+ $vehicle->save();
47
+
48
+ // driver assignment
49
+ if ($request->has('driver')) {
50
+ // set this vehicle to the driver
51
+ try {
52
+ $driver = Driver::findRecordOrFail($request->input('driver'));
53
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
54
+ return response()->json(
55
+ [
56
+ 'error' => 'The driver attempted to assign this vehicle was not found.',
57
+ ],
58
+ 404
59
+ );
60
+ }
61
+
62
+ $driver->vehicle_uuid = $vehicle->uuid;
63
+ $driver->save();
64
+ }
65
+
66
+ // response the driver resource
67
+ return new VehicleResource($vehicle);
68
+ }
69
+
70
+ /**
71
+ * Updates a Fleetbase Vehicle resource.
72
+ *
73
+ * @param string $id
74
+ * @param \Fleetbase\Http\Requests\UpdateVehicleRequest $request
75
+ *
76
+ * @return \Fleetbase\Http\Resources\Vehicle
77
+ */
78
+ public function update($id, UpdateVehicleRequest $request)
79
+ {
80
+ // find for the vehicle
81
+ try {
82
+ $vehicle = Vehicle::findRecordOrFail($id);
83
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
84
+ return response()->json(
85
+ [
86
+ 'error' => 'Vehicle resource not found.',
87
+ ],
88
+ 404
89
+ );
90
+ }
91
+
92
+ // get request input
93
+ $input = $request->only(['status', 'make', 'model', 'year', 'trim', 'type', 'plate_number', 'vin', 'meta']);
94
+
95
+ // vendor assignment
96
+ if ($request->has('vendor')) {
97
+ $input['vendor_uuid'] = Utils::getUuid('vendors', [
98
+ 'public_id' => $request->input('vendor'),
99
+ 'company_uuid' => session('company'),
100
+ ]);
101
+ }
102
+
103
+ // update the vehicle w/ user input
104
+ $vehicle->fill($input);
105
+
106
+ // if the vin has changed do another vin run
107
+ if ($vehicle->isDirty('vin')) {
108
+ $vehicle->applyAllDataFromVin();
109
+ }
110
+
111
+ // save the update
112
+ $vehicle->save();
113
+
114
+ // get udpated vehicle
115
+ $vehicle = $vehicle->refresh();
116
+
117
+ // response the vehicle resource
118
+ return new VehicleResource($vehicle);
119
+ }
120
+
121
+ /**
122
+ * Query for Fleetbase Vehicle resources.
123
+ *
124
+ * @return \Fleetbase\Http\Resources\VehicleCollection
125
+ */
126
+ public function query(Request $request)
127
+ {
128
+ $results = Vehicle::queryWithRequest($request, function (&$query, $request) {
129
+ if ($request->has('vendor')) {
130
+ $query->whereHas('vendor', function ($q) use ($request) {
131
+ $q->where('public_id', $request->input('vendor'));
132
+ });
133
+ }
134
+ });
135
+
136
+ return VehicleResource::collection($results);
137
+ }
138
+
139
+ /**
140
+ * Finds a single Fleetbase Vehicle resources.
141
+ *
142
+ * @param string $id
143
+ *
144
+ * @return \Fleetbase\Http\Resources\VehicleCollection
145
+ */
146
+ public function find($id)
147
+ {
148
+ // find for the vehicle
149
+ try {
150
+ $vehicle = Vehicle::findRecordOrFail($id);
151
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
152
+ return response()->json(
153
+ [
154
+ 'error' => 'Vehicle resource not found.',
155
+ ],
156
+ 404
157
+ );
158
+ }
159
+
160
+ // response the vehicle resource
161
+ return new VehicleResource($vehicle);
162
+ }
163
+
164
+ /**
165
+ * Deletes a Fleetbase Vehicle resources.
166
+ *
167
+ * @param string $id
168
+ *
169
+ * @return \Fleetbase\Http\Resources\VehicleCollection
170
+ */
171
+ public function delete($id)
172
+ {
173
+ // find for the driver
174
+ try {
175
+ $vehicle = Vehicle::findRecordOrFail($id);
176
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
177
+ return response()->json(
178
+ [
179
+ 'error' => 'Vehicle resource not found.',
180
+ ],
181
+ 404
182
+ );
183
+ }
184
+
185
+ // delete the vehicle
186
+ $vehicle->delete();
187
+
188
+ // response the vehicle resource
189
+ return new DeletedResource($vehicle);
190
+ }
191
+ }
@@ -0,0 +1,159 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Http\Controllers\Api\v1;
4
+
5
+ use Fleetbase\FleetOps\Http\Requests\CreateVendorRequest;
6
+ use Fleetbase\FleetOps\Http\Requests\UpdateVendorRequest;
7
+ use Fleetbase\FleetOps\Http\Resources\v1\DeletedResource;
8
+ use Fleetbase\FleetOps\Http\Resources\v1\Vendor as VendorResource;
9
+ use Fleetbase\FleetOps\Models\Vendor;
10
+ use Fleetbase\FleetOps\Support\Utils;
11
+ use Fleetbase\Http\Controllers\Controller;
12
+ use Illuminate\Http\Request;
13
+
14
+ class VendorController extends Controller
15
+ {
16
+ /**
17
+ * Creates a new Fleetbase Vendor resource.
18
+ *
19
+ * @param \Fleetbase\Http\Requests\CreateVendorRequest $request
20
+ *
21
+ * @return \Fleetbase\Http\Resources\Vendor
22
+ */
23
+ public function create(CreateVendorRequest $request)
24
+ {
25
+ // get request input
26
+ $input = $request->only(['name', 'type', 'email', 'phone', 'meta']);
27
+
28
+ // make sure company is set
29
+ $input['company_uuid'] = session('company');
30
+
31
+ // address assignment
32
+ if ($request->has('address')) {
33
+ $input['place_uuid'] = Utils::getUuid(
34
+ 'places',
35
+ [
36
+ 'public_id' => $request->input('address'),
37
+ 'company_uuid' => session('company'),
38
+ ]
39
+ );
40
+ }
41
+
42
+ // create the vendor
43
+ $vendor = Vendor::updateOrCreate(
44
+ [
45
+ 'company_uuid' => session('company'),
46
+ 'name' => strtoupper($input['name']),
47
+ ],
48
+ $input
49
+ );
50
+
51
+ // response the driver resource
52
+ return new VendorResource($vendor);
53
+ }
54
+
55
+ /**
56
+ * Updates a Fleetbase Vendor resource.
57
+ *
58
+ * @param string $id
59
+ * @param \Fleetbase\Http\Requests\UpdateVendorRequest $request
60
+ *
61
+ * @return \Fleetbase\Http\Resources\Vendor
62
+ */
63
+ public function update($id, UpdateVendorRequest $request)
64
+ {
65
+ // find for the vendor
66
+ try {
67
+ $vendor = Vendor::findRecordOrFail($id);
68
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
69
+ return response()->json(
70
+ [
71
+ 'error' => 'Vendor resource not found.',
72
+ ],
73
+ 404
74
+ );
75
+ }
76
+
77
+ // get request input
78
+ $input = $request->only(['name', 'type', 'email', 'phone', 'meta']);
79
+
80
+ // address assignment
81
+ if ($request->has('address')) {
82
+ $input['place_uuid'] = Utils::getUuid(
83
+ 'places',
84
+ [
85
+ 'public_id' => $request->input('address'),
86
+ 'company_uuid' => session('company'),
87
+ ]
88
+ );
89
+ }
90
+
91
+ // update the vendor
92
+ $vendor->update($input);
93
+ $vendor->flushAttributesCache();
94
+
95
+ // response the vendor resource
96
+ return new VendorResource($vendor);
97
+ }
98
+
99
+ /**
100
+ * Query for Fleetbase Vendor resources.
101
+ *
102
+ * @return \Fleetbase\Http\Resources\VendorCollection
103
+ */
104
+ public function query(Request $request)
105
+ {
106
+ $results = Vendor::queryWithRequest($request);
107
+
108
+ return VendorResource::collection($results);
109
+ }
110
+
111
+ /**
112
+ * Finds a single Fleetbase Vendor resources.
113
+ *
114
+ * @return \Fleetbase\Http\Resources\VendorCollection
115
+ */
116
+ public function find($id, Request $request)
117
+ {
118
+ // find for the vendor
119
+ try {
120
+ $vendor = Vendor::findRecordOrFail($id);
121
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
122
+ return response()->json(
123
+ [
124
+ 'error' => 'Vendor resource not found.',
125
+ ],
126
+ 404
127
+ );
128
+ }
129
+
130
+ // response the vendor resource
131
+ return new VendorResource($vendor);
132
+ }
133
+
134
+ /**
135
+ * Deletes a Fleetbase Vendor resources.
136
+ *
137
+ * @return \Fleetbase\Http\Resources\VendorCollection
138
+ */
139
+ public function delete($id, Request $request)
140
+ {
141
+ // find for the driver
142
+ try {
143
+ $vendor = Vendor::findRecordOrFail($id);
144
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
145
+ return response()->json(
146
+ [
147
+ 'error' => 'Vendor resource not found.',
148
+ ],
149
+ 404
150
+ );
151
+ }
152
+
153
+ // delete the vendor
154
+ $vendor->delete();
155
+
156
+ // response the vendor resource
157
+ return new DeletedResource($vendor);
158
+ }
159
+ }