@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,73 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Models;
4
+
5
+ use Fleetbase\Models\Model;
6
+ use Fleetbase\Traits\HasUuid;
7
+
8
+ class FleetVehicle extends Model
9
+ {
10
+ use HasUuid;
11
+
12
+ /**
13
+ * The database table used by the model.
14
+ *
15
+ * @var string
16
+ */
17
+ protected $table = 'fleet_vehicles';
18
+
19
+ /**
20
+ * The attributes that are mass assignable.
21
+ *
22
+ * @var array
23
+ */
24
+ protected $fillable = ['fleet_uuid', 'vehicle_uuid'];
25
+
26
+ /**
27
+ * These attributes that can be queried.
28
+ *
29
+ * @var array
30
+ */
31
+ protected $searchableColumns = [];
32
+
33
+ /**
34
+ * also search joined properties.
35
+ *
36
+ * @var array
37
+ */
38
+ protected $alsoSearch = [['vehicle' => ['user' => 'name']]];
39
+
40
+ /**
41
+ * Dynamic attributes that are appended to object.
42
+ *
43
+ * @var array
44
+ */
45
+ protected $appends = [];
46
+
47
+ /**
48
+ * The attributes excluded from the model's JSON form.
49
+ *
50
+ * @var array
51
+ */
52
+ protected $hidden = [];
53
+
54
+ /**
55
+ * The group of the membership.
56
+ *
57
+ * @var Model
58
+ */
59
+ public function fleet()
60
+ {
61
+ return $this->belongsTo(Fleet::class);
62
+ }
63
+
64
+ /**
65
+ * The driver.
66
+ *
67
+ * @var Model
68
+ */
69
+ public function vehicle()
70
+ {
71
+ return $this->belongsTo(Vehicle::class);
72
+ }
73
+ }
@@ -0,0 +1,125 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Models;
4
+
5
+ use Fleetbase\FleetOps\Casts\Point;
6
+ use Fleetbase\FleetOps\Support\Utils;
7
+ use Fleetbase\Models\Model;
8
+ use Fleetbase\Traits\HasApiModelBehavior;
9
+ use Fleetbase\Traits\HasPublicId;
10
+ use Fleetbase\Traits\HasUuid;
11
+ use Fleetbase\Traits\TracksApiCredential;
12
+ use Grimzy\LaravelMysqlSpatial\Eloquent\SpatialTrait;
13
+
14
+ class FuelReport extends Model
15
+ {
16
+ use HasUuid;
17
+ use TracksApiCredential;
18
+ use HasPublicId;
19
+ use HasApiModelBehavior;
20
+ use SpatialTrait;
21
+
22
+ /**
23
+ * The database table used by the model.
24
+ *
25
+ * @var string
26
+ */
27
+ protected $table = 'fuel_reports';
28
+
29
+ /**
30
+ * The type of public Id to generate.
31
+ *
32
+ * @var string
33
+ */
34
+ protected $publicIdType = 'fuel_report';
35
+
36
+ /**
37
+ * These attributes that can be queried.
38
+ *
39
+ * @var array
40
+ */
41
+ protected $searchableColumns = [];
42
+
43
+ /**
44
+ * The attributes that are mass assignable.
45
+ *
46
+ * @var array
47
+ */
48
+ protected $fillable = ['company_uuid', 'driver_uuid', 'vehicle_uuid', 'odometer', 'latitude', 'longitude', 'location', 'amount', 'currency', 'volume', 'metric_unit'];
49
+
50
+ /**
51
+ * The attributes that are spatial columns.
52
+ *
53
+ * @var array
54
+ */
55
+ protected $spatialFields = ['location'];
56
+
57
+ /**
58
+ * The attributes that should be cast to native types.
59
+ *
60
+ * @var array
61
+ */
62
+ protected $casts = [
63
+ 'location' => Point::class,
64
+ ];
65
+
66
+ /**
67
+ * Dynamic attributes that are appended to object.
68
+ *
69
+ * @var array
70
+ */
71
+ protected $appends = ['vehicle_name', 'driver_name'];
72
+
73
+ /**
74
+ * The attributes excluded from the model's JSON form.
75
+ *
76
+ * @var array
77
+ */
78
+ protected $hidden = ['driver', 'vehicle'];
79
+
80
+ /**
81
+ * Set the parcel fee as only numbers.
82
+ *
83
+ * @void
84
+ */
85
+ public function setAmountAttribute($value)
86
+ {
87
+ $this->attributes['amount'] = Utils::numbersOnly($value);
88
+ }
89
+
90
+ /**
91
+ * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
92
+ */
93
+ public function driver()
94
+ {
95
+ return $this->belongsTo(Driver::class)->without(['vehicle']);
96
+ }
97
+
98
+ /**
99
+ * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
100
+ */
101
+ public function vehicle()
102
+ {
103
+ return $this->belongsTo(Vehicle::class)->without(['driver']);
104
+ }
105
+
106
+ /**
107
+ * Get the driver's name assigned to vehicle.
108
+ *
109
+ * @var Model
110
+ */
111
+ public function getDriverNameAttribute()
112
+ {
113
+ return data_get($this, 'driver.name');
114
+ }
115
+
116
+ /**
117
+ * Get the vehicless name.
118
+ *
119
+ * @var Model
120
+ */
121
+ public function getVehicleNameAttribute()
122
+ {
123
+ return data_get($this, 'vehicle.display_name');
124
+ }
125
+ }
@@ -0,0 +1,219 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Models;
4
+
5
+ use Fleetbase\Casts\Json;
6
+ use Fleetbase\FleetOps\Exceptions\IntegratedVendorException;
7
+ use Fleetbase\FleetOps\Support\IntegratedVendors;
8
+ use Fleetbase\FleetOps\Support\Utils;
9
+ use Fleetbase\Models\Model;
10
+ use Fleetbase\Traits\HasApiModelBehavior;
11
+ use Fleetbase\Traits\HasPublicId;
12
+ use Fleetbase\Traits\HasUuid;
13
+
14
+ class IntegratedVendor extends Model
15
+ {
16
+ use HasUuid;
17
+ use HasPublicId;
18
+ use HasApiModelBehavior;
19
+
20
+ /**
21
+ * The database table used by the model.
22
+ *
23
+ * @var string
24
+ */
25
+ protected $table = 'integrated_vendors';
26
+
27
+ /**
28
+ * The type of public Id to generate.
29
+ *
30
+ * @var string
31
+ */
32
+ protected $publicIdType = 'integrated_vendor';
33
+
34
+ /**
35
+ * The database connection to use.
36
+ *
37
+ * @var string
38
+ */
39
+ protected $connection = 'mysql';
40
+
41
+ /**
42
+ * These attributes that can be queried.
43
+ *
44
+ * @var array
45
+ */
46
+ protected $searchableColumns = [];
47
+
48
+ /**
49
+ * The attributes that are mass assignable.
50
+ *
51
+ * @var array
52
+ */
53
+ protected $fillable = [
54
+ '_key',
55
+ 'public_id',
56
+ 'company_uuid',
57
+ 'created_by_uuid',
58
+ 'host',
59
+ 'namespace',
60
+ 'webhook_url',
61
+ 'provider',
62
+ 'sandbox',
63
+ 'options',
64
+ 'credentials',
65
+ ];
66
+
67
+ /**
68
+ * Dynamic attributes that are appended to object.
69
+ *
70
+ * @var array
71
+ */
72
+ protected $appends = ['name', 'status', 'type', 'photo_url', 'service_types', 'supported_countries', 'provider_settings'];
73
+
74
+ /**
75
+ * The attributes excluded from the model's JSON form.
76
+ *
77
+ * @var array
78
+ */
79
+ protected $hidden = ['credentials'];
80
+
81
+ /**
82
+ * The attributes that should be cast to native types.
83
+ *
84
+ * @var array
85
+ */
86
+ protected $casts = [
87
+ 'credentials' => Json::class,
88
+ 'options' => Json::class,
89
+ ];
90
+
91
+ /**
92
+ * Lifecycle actions to run integrated vendor callbacks if applicable.
93
+ *
94
+ * @return void
95
+ */
96
+ public static function boot()
97
+ {
98
+ parent::boot();
99
+
100
+ static::created(
101
+ function ($model) {
102
+ $provider = $model->provider();
103
+
104
+ if ($provider && method_exists($provider, 'callback')) {
105
+ try {
106
+ $provider->callback('onCreated');
107
+ } catch (IntegratedVendorException $e) {
108
+ $model->delete();
109
+ }
110
+ }
111
+ }
112
+ );
113
+
114
+ static::updated(
115
+ function ($model) {
116
+ $provider = $model->provider();
117
+
118
+ if ($provider && method_exists($provider, 'onUpdated')) {
119
+ $provider->callback('onUpdated');
120
+ }
121
+ }
122
+ );
123
+
124
+ static::deleted(
125
+ function ($model) {
126
+ $provider = $model->provider();
127
+
128
+ if ($provider && method_exists($provider, 'onDeleted')) {
129
+ $provider->callback('onDeleted');
130
+ }
131
+ }
132
+ );
133
+ }
134
+
135
+ /**
136
+ * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
137
+ */
138
+ public function createdBy()
139
+ {
140
+ return $this->belongsTo(\Fleetbase\Models\User::class);
141
+ }
142
+
143
+ /**
144
+ * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
145
+ */
146
+ public function company()
147
+ {
148
+ return $this->belongsTo(\Fleetbase\Models\Company::class);
149
+ }
150
+
151
+ public function setWebhookUrlAttribute($webhookUrl = null)
152
+ {
153
+ if (empty($webhookUrl)) {
154
+ $this->attributes['webhook_url'] = Utils::apiUrl('listeners/' . $this->provider);
155
+ }
156
+
157
+ $this->attributes['webhook_url'] = $webhookUrl;
158
+ }
159
+
160
+ public function getCredential(string $key)
161
+ {
162
+ return $this->credentials[$key];
163
+ }
164
+
165
+ public function api()
166
+ {
167
+ return IntegratedVendors::bridgeFromIntegratedVendor($this);
168
+ }
169
+
170
+ public function provider()
171
+ {
172
+ return IntegratedVendors::resolverFromIntegratedVendor($this);
173
+ }
174
+
175
+ public function serviceTypes()
176
+ {
177
+ return $this->provider()->getServiceTypes();
178
+ }
179
+
180
+ public function getServiceTypesAttribute()
181
+ {
182
+ return $this->serviceTypes();
183
+ }
184
+
185
+ public function countries()
186
+ {
187
+ return $this->provider()->getCountries();
188
+ }
189
+
190
+ public function getSupportedCountriesAttribute()
191
+ {
192
+ return $this->countries();
193
+ }
194
+
195
+ public function getProviderSettingsAttribute()
196
+ {
197
+ return $this->provider()->toArray();
198
+ }
199
+
200
+ public function getNameAttribute()
201
+ {
202
+ return $this->provider()->getName();
203
+ }
204
+
205
+ public function getPhotoUrlAttribute()
206
+ {
207
+ return $this->provider()->getLogo();
208
+ }
209
+
210
+ public function getStatusAttribute()
211
+ {
212
+ return 'active';
213
+ }
214
+
215
+ public function getTypeAttribute()
216
+ {
217
+ return 'integrated-vendor';
218
+ }
219
+ }
@@ -0,0 +1,111 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Models;
4
+
5
+ use Fleetbase\FleetOps\Casts\Point;
6
+ use Fleetbase\Models\Model;
7
+ use Fleetbase\Traits\HasApiModelBehavior;
8
+ use Fleetbase\Traits\HasPublicId;
9
+ use Fleetbase\Traits\HasUuid;
10
+ use Fleetbase\Traits\TracksApiCredential;
11
+ use Grimzy\LaravelMysqlSpatial\Eloquent\SpatialTrait;
12
+
13
+ class Issue extends Model
14
+ {
15
+ use HasUuid;
16
+ use HasPublicId;
17
+ use TracksApiCredential;
18
+ use SpatialTrait;
19
+ use HasApiModelBehavior;
20
+
21
+ /**
22
+ * The database table used by the model.
23
+ *
24
+ * @var string
25
+ */
26
+ protected $table = 'issues';
27
+
28
+ /**
29
+ * The type of public Id to generate.
30
+ *
31
+ * @var string
32
+ */
33
+ protected $publicIdType = 'issue';
34
+
35
+ /**
36
+ * These attributes that can be queried.
37
+ *
38
+ * @var array
39
+ */
40
+ protected $searchableColumns = [];
41
+
42
+ /**
43
+ * The attributes that are mass assignable.
44
+ *
45
+ * @var array
46
+ */
47
+ protected $fillable = [
48
+ '_key',
49
+ 'company_uuid',
50
+ 'reported_by_uuid',
51
+ 'vehicle_uuid',
52
+ 'assigned_to_uuid',
53
+ 'issue_id',
54
+ 'odometer',
55
+ 'location',
56
+ 'latitude',
57
+ 'longitude',
58
+ 'type',
59
+ 'report',
60
+ 'priority',
61
+ 'resolved_at',
62
+ 'status',
63
+ ];
64
+
65
+ /**
66
+ * The attributes that are spatial columns.
67
+ *
68
+ * @var array
69
+ */
70
+ protected $spatialFields = [
71
+ 'location' => Point::class,
72
+ ];
73
+
74
+ /**
75
+ * Dynamic attributes that are appended to object.
76
+ *
77
+ * @var array
78
+ */
79
+ protected $appends = [];
80
+
81
+ /**
82
+ * The attributes excluded from the model's JSON form.
83
+ *
84
+ * @var array
85
+ */
86
+ protected $hidden = [];
87
+
88
+ /**
89
+ * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
90
+ */
91
+ public function reportedBy()
92
+ {
93
+ return $this->belongsTo(\Fleetbase\Models\User::class);
94
+ }
95
+
96
+ /**
97
+ * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
98
+ */
99
+ public function assignedTo()
100
+ {
101
+ return $this->belongsTo(\Fleetbase\Models\User::class);
102
+ }
103
+
104
+ /**
105
+ * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
106
+ */
107
+ public function vehicle()
108
+ {
109
+ return $this->belongsTo(Vehicle::class);
110
+ }
111
+ }