@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,199 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Http\Controllers\Api\v1;
4
+
5
+ use Fleetbase\FleetOps\Http\Requests\CreatePurchaseRateRequest;
6
+ use Fleetbase\FleetOps\Http\Resources\v1\PurchaseRate as PurchaseRateResource;
7
+ use Fleetbase\FleetOps\Models\Order;
8
+ use Fleetbase\FleetOps\Models\Payload;
9
+ use Fleetbase\FleetOps\Models\PurchaseRate;
10
+ use Fleetbase\FleetOps\Models\ServiceQuote;
11
+ use Fleetbase\FleetOps\Models\ServiceRate;
12
+ use Fleetbase\FleetOps\Support\Utils;
13
+ use Fleetbase\Http\Controllers\Controller;
14
+ use Illuminate\Http\Request;
15
+
16
+ class PurchaseRateController extends Controller
17
+ {
18
+ /**
19
+ * Creates a new Fleetbase PurchaseRate resource.
20
+ *
21
+ * @param \Fleetbase\Http\Requests\CreatePurchaseRateRequest $request
22
+ *
23
+ * @return \Fleetbase\Http\Resources\PurchaseRate
24
+ */
25
+ public function create(CreatePurchaseRateRequest $request)
26
+ {
27
+ $input = $request->only(['meta']);
28
+ $createOrder = $request->boolean('create_order', false);
29
+ $order = null;
30
+
31
+ // make sure company is set
32
+ $input['company_uuid'] = session('company');
33
+
34
+ // service_quote assignment
35
+ if ($request->has('service_quote')) {
36
+ $input['service_quote_uuid'] = Utils::getUuid('service_quotes', [
37
+ 'public_id' => $request->input('service_quote'),
38
+ 'company_uuid' => session('company'),
39
+ ]);
40
+ }
41
+
42
+ // order assignment
43
+ if ($request->has('order')) {
44
+ $input['order_uuid'] = Utils::getUuid('orders', [
45
+ 'public_id' => $request->input('order'),
46
+ 'company_uuid' => session('company'),
47
+ ]);
48
+ } elseif ($createOrder) {
49
+ // create order from service quote
50
+ $serviceQuote = ServiceQuote::where('uuid', $input['service_quote_uuid'])->orWhere('public_id', $request->input('service_quote'))->first();
51
+ $order = $this->createOrderFromServiceQuote($serviceQuote, $request);
52
+ }
53
+
54
+ // customer assignment
55
+ if ($request->has('customer')) {
56
+ $customer = Utils::getUuid(
57
+ ['contacts', 'vendors'],
58
+ [
59
+ 'public_id' => $request->input('customer'),
60
+ 'company_uuid' => session('company'),
61
+ ]
62
+ );
63
+
64
+ if (is_array($customer)) {
65
+ $input['customer_uuid'] = Utils::get($customer, 'uuid');
66
+ $input['customer_type'] = Utils::getModelClassName(Utils::get($customer, 'table'));
67
+ }
68
+ }
69
+
70
+ // create the purchaseRate
71
+ $purchaseRate = PurchaseRate::create($input);
72
+
73
+ // set purchase rate to order
74
+ if ($order instanceof Order) {
75
+ $order->update(['purchase_rate_uuid' => $purchaseRate->uuid]);
76
+ }
77
+
78
+ // response the driver resource
79
+ return new PurchaseRateResource($purchaseRate);
80
+ }
81
+
82
+ /**
83
+ * Create an Order from Service Quote.
84
+ *
85
+ * @param \Fleetbase\Models\ServiceQuote $serviceQuote
86
+ * @param \Fleetbase\Http\Requests\CreatePurchaseRateRequest $request
87
+ *
88
+ * @return \Fleetbase\Models\Order|null
89
+ */
90
+ private function createOrderFromServiceQuote(?ServiceQuote $serviceQuote, CreatePurchaseRateRequest $request): ?Order
91
+ {
92
+ // if integrated vendor service quote create order with vendor first then create fleetbase order
93
+ $integratedVendorOrder = null;
94
+
95
+ if ($serviceQuote->fromIntegratedVendor()) {
96
+ // create order with integrated vendor, then resume fleetbase order creation
97
+ try {
98
+ $integratedVendorOrder = $serviceQuote->integratedVendor->api()->createOrderFromServiceQuote($serviceQuote, $request);
99
+ } catch (\Exception $e) {
100
+ return response()->error($e->getMessage());
101
+ }
102
+ }
103
+
104
+ // create order input
105
+ $input = [];
106
+
107
+ // create order using preliminary data of service quote
108
+ if ($serviceQuote->hasMeta('preliminary_data')) {
109
+ $preliminaryData = $serviceQuote->getMeta('preliminary_data');
110
+ $pickup = Utils::get($preliminaryData, 'pickup');
111
+ $dropoff = Utils::get($preliminaryData, 'dropoff');
112
+ $return = Utils::get($preliminaryData, 'return');
113
+ $entities = Utils::get($preliminaryData, 'entities');
114
+ $waypoints = Utils::get($preliminaryData, 'waypoints', []);
115
+
116
+ // create payload from preliminary data
117
+ $payload = new Payload();
118
+ $payload->setPickup($pickup);
119
+ $payload->setDropoff($dropoff);
120
+ $payload->setDropoff($return);
121
+ $payload->setWaypoints($waypoints);
122
+ $payload->setEntities($entities);
123
+ $payload->save();
124
+
125
+ // now create order
126
+ $input['payload_uuid'] = $payload->uuid;
127
+ }
128
+
129
+ // set payload using service quote
130
+ if ($serviceQuote->payload) {
131
+ $input['payload_uuid'] = $serviceQuote->payload->uuid;
132
+ }
133
+
134
+ // attempt to set order type from service rate
135
+ if ($serviceQuote->serviceRate instanceof ServiceRate) {
136
+ $input['type'] = $serviceQuote->serviceRate->type;
137
+ } else {
138
+ $input['type'] = 'default';
139
+ }
140
+
141
+ // create the order
142
+ $order = Order::create($input);
143
+
144
+ if ($order instanceof Order) {
145
+ // notify driver if assigned
146
+ $order->notifyDriverAssigned();
147
+
148
+ // set driving distance and time
149
+ $order->setPreliminaryDistanceAndTime();
150
+
151
+ // if it's integrated vendor order apply to meta
152
+ if ($integratedVendorOrder) {
153
+ $order->updateMeta([
154
+ 'integrated_vendor' => $serviceQuote->integratedVendor->public_id,
155
+ 'integrated_vendor_order' => $integratedVendorOrder,
156
+ ]);
157
+ }
158
+
159
+ return $order;
160
+ }
161
+
162
+ return null;
163
+ }
164
+
165
+ /**
166
+ * Query for Fleetbase PurchaseRate resources.
167
+ *
168
+ * @return \Fleetbase\Http\Resources\PurchaseRateCollection
169
+ */
170
+ public function query(Request $request)
171
+ {
172
+ $results = PurchaseRate::queryWithRequest($request);
173
+
174
+ return PurchaseRateResource::collection($results);
175
+ }
176
+
177
+ /**
178
+ * Finds a single Fleetbase PurchaseRate resources.
179
+ *
180
+ * @return \Fleetbase\Http\Resources\PurchaseRateCollection
181
+ */
182
+ public function find($id, Request $request)
183
+ {
184
+ // find for the purchaseRate
185
+ try {
186
+ $purchaseRate = PurchaseRate::findRecordOrFail($id);
187
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
188
+ return response()->json(
189
+ [
190
+ 'error' => 'PurchaseRate resource not found.',
191
+ ],
192
+ 404
193
+ );
194
+ }
195
+
196
+ // response the purchaseRate resource
197
+ return new PurchaseRateResource($purchaseRate);
198
+ }
199
+ }
@@ -0,0 +1,133 @@
1
+ <?php
2
+
3
+ namespace Fleetbase\FleetOps\Http\Controllers\Api\v1;
4
+
5
+ use Fleetbase\FleetOps\Http\Requests\CreateServiceAreaRequest;
6
+ use Fleetbase\FleetOps\Http\Requests\UpdateServiceAreaRequest;
7
+ use Fleetbase\FleetOps\Http\Resources\v1\DeletedResource;
8
+ use Fleetbase\FleetOps\Http\Resources\v1\ServiceArea as ServiceAreaResource;
9
+ use Fleetbase\FleetOps\Models\ServiceArea;
10
+ use Fleetbase\Http\Controllers\Controller;
11
+ use Illuminate\Http\Request;
12
+
13
+ class ServiceAreaController extends Controller
14
+ {
15
+ /**
16
+ * Creates a new Fleetbase ServiceArea resource.
17
+ *
18
+ * @param \Fleetbase\Http\Requests\CreateServiceAreaRequest $request
19
+ *
20
+ * @return \Fleetbase\Http\Resources\ServiceArea
21
+ */
22
+ public function create(CreateServiceAreaRequest $request)
23
+ {
24
+ // get request input
25
+ $input = $request->only(['name', 'type', 'status']);
26
+
27
+ // make sure company is set
28
+ $input['company_uuid'] = session('company');
29
+
30
+ // @todo some geocoding here
31
+
32
+ // create the serviceArea
33
+ $serviceArea = ServiceArea::create($input);
34
+
35
+ // response the driver resource
36
+ return new ServiceAreaResource($serviceArea);
37
+ }
38
+
39
+ /**
40
+ * Updates a Fleetbase ServiceArea resource.
41
+ *
42
+ * @param string $id
43
+ * @param \Fleetbase\Http\Requests\UpdateServiceAreaRequest $request
44
+ *
45
+ * @return \Fleetbase\Http\Resources\ServiceArea
46
+ */
47
+ public function update($id, UpdateServiceAreaRequest $request)
48
+ {
49
+ // find for the serviceArea
50
+ try {
51
+ $serviceArea = ServiceArea::findRecordOrFail($id);
52
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
53
+ return response()->json(
54
+ [
55
+ 'error' => 'ServiceArea resource not found.',
56
+ ],
57
+ 404
58
+ );
59
+ }
60
+
61
+ // get request input
62
+ $input = $request->only(['name', 'type', 'status']);
63
+
64
+ // @todo some geocoding here
65
+
66
+ // update the serviceArea
67
+ $serviceArea->update($input);
68
+
69
+ // response the serviceArea resource
70
+ return new ServiceAreaResource($serviceArea);
71
+ }
72
+
73
+ /**
74
+ * Query for Fleetbase ServiceArea resources.
75
+ *
76
+ * @return \Fleetbase\Http\Resources\ServiceAreaCollection
77
+ */
78
+ public function query(Request $request)
79
+ {
80
+ $results = ServiceArea::queryWithRequest($request);
81
+
82
+ return ServiceAreaResource::collection($results);
83
+ }
84
+
85
+ /**
86
+ * Finds a single Fleetbase ServiceArea resources.
87
+ *
88
+ * @return \Fleetbase\Http\Resources\ServiceAreaCollection
89
+ */
90
+ public function find($id, Request $request)
91
+ {
92
+ // find for the serviceArea
93
+ try {
94
+ $serviceArea = ServiceArea::findRecordOrFail($id);
95
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
96
+ return response()->json(
97
+ [
98
+ 'error' => 'ServiceArea resource not found.',
99
+ ],
100
+ 404
101
+ );
102
+ }
103
+
104
+ // response the serviceArea resource
105
+ return new ServiceAreaResource($serviceArea);
106
+ }
107
+
108
+ /**
109
+ * Deletes a Fleetbase ServiceArea resources.
110
+ *
111
+ * @return \Fleetbase\Http\Resources\ServiceAreaCollection
112
+ */
113
+ public function delete($id, Request $request)
114
+ {
115
+ // find for the driver
116
+ try {
117
+ $serviceArea = ServiceArea::findRecordOrFail($id);
118
+ } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $exception) {
119
+ return response()->json(
120
+ [
121
+ 'error' => 'ServiceArea resource not found.',
122
+ ],
123
+ 404
124
+ );
125
+ }
126
+
127
+ // delete the serviceArea
128
+ $serviceArea->delete();
129
+
130
+ // response the serviceArea resource
131
+ return new DeletedResource($serviceArea);
132
+ }
133
+ }