@fleetbase/fleetops-engine 0.6.51 → 0.6.53

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 (396) hide show
  1. package/README.md +0 -2
  2. package/addon/components/cell/telematic-provider.hbs +16 -0
  3. package/addon/components/cell/telematic-provider.js +36 -0
  4. package/addon/components/cell/telematic-status.hbs +1 -0
  5. package/addon/components/cell/telematic-status.js +39 -0
  6. package/addon/components/device/manager.hbs +5 -6
  7. package/addon/components/device/manager.js +12 -15
  8. package/addon/components/driver/details.hbs +1 -1
  9. package/addon/components/fleet/vehicle-listing.js +1 -0
  10. package/addon/components/fuel-integration/form.hbs +200 -0
  11. package/addon/components/fuel-integration/form.js +242 -0
  12. package/addon/components/fuel-integration/hub.hbs +154 -0
  13. package/addon/components/fuel-integration/hub.js +165 -0
  14. package/addon/components/fuel-integration/matching-priority.hbs +76 -0
  15. package/addon/components/fuel-integration/matching-priority.js +145 -0
  16. package/addon/components/fuel-report/details.hbs +13 -1
  17. package/addon/components/issue/details.hbs +3 -57
  18. package/addon/components/issue/details.js +0 -96
  19. package/addon/components/layout/fleet-ops-sidebar/operations-monitor.hbs +201 -0
  20. package/addon/components/layout/fleet-ops-sidebar/operations-monitor.js +589 -0
  21. package/addon/components/layout/fleet-ops-sidebar.hbs +19 -233
  22. package/addon/components/layout/fleet-ops-sidebar.js +287 -376
  23. package/addon/components/maintenance-schedule/form.js +1 -0
  24. package/addon/components/map/drawer/device-event-listing.hbs +12 -2
  25. package/addon/components/map/drawer/driver-listing.hbs +14 -1
  26. package/addon/components/map/drawer/place-listing.hbs +14 -1
  27. package/addon/components/map/drawer/position-listing.hbs +12 -2
  28. package/addon/components/map/drawer/vehicle-listing.hbs +14 -1
  29. package/addon/components/modals/assigned-orders.hbs +40 -0
  30. package/addon/components/modals/attach-device.hbs +4 -3
  31. package/addon/components/modals/attach-telematic-device.hbs +25 -0
  32. package/addon/components/modals/attach-telematic-device.js +3 -0
  33. package/addon/components/modals/driver-assign-order.hbs +7 -58
  34. package/addon/components/modals/driver-assign-vehicle.hbs +10 -2
  35. package/addon/components/modals/fleet-assign-driver.hbs +18 -0
  36. package/addon/components/modals/fleet-assign-driver.js +3 -0
  37. package/addon/components/modals/fleet-assign-vehicle.hbs +18 -0
  38. package/addon/components/modals/fleet-assign-vehicle.js +3 -0
  39. package/addon/components/modals/telematic-connection-diagnostics.hbs +75 -0
  40. package/addon/components/modals/telematic-connection-diagnostics.js +287 -0
  41. package/addon/components/modals/vehicle-details.hbs +6 -1
  42. package/addon/components/modals/vehicle-form.hbs +8 -1
  43. package/addon/components/order/card.hbs +106 -0
  44. package/addon/components/order/card.js +257 -0
  45. package/addon/components/order/form/payload.js +3 -1
  46. package/addon/components/order/form/service-rate.hbs +2 -0
  47. package/addon/components/service-rate/form.hbs +3 -2
  48. package/addon/components/telematic/details.hbs +98 -87
  49. package/addon/components/telematic/details.js +230 -1
  50. package/addon/components/telematic/form.hbs +303 -72
  51. package/addon/components/telematic/form.js +519 -3
  52. package/addon/components/telematic/hub.hbs +149 -0
  53. package/addon/components/telematic/hub.js +142 -0
  54. package/addon/components/telematic/settings.hbs +152 -0
  55. package/addon/components/telematic/settings.js +45 -0
  56. package/addon/components/telematic/tab-empty-state.hbs +29 -0
  57. package/addon/components/telematic/tab-empty-state.js +33 -0
  58. package/addon/components/vehicle/details.hbs +6 -1
  59. package/addon/components/vehicle/form.hbs +2 -1
  60. package/addon/components/widget/fuel-providers.hbs +43 -0
  61. package/addon/components/widget/fuel-providers.js +27 -0
  62. package/addon/controllers/connectivity/devices/index/details.js +27 -1
  63. package/addon/controllers/connectivity/devices/index.js +18 -1
  64. package/addon/controllers/connectivity/fuel-providers/details/sync.js +18 -0
  65. package/addon/controllers/connectivity/fuel-providers/details/transactions.js +24 -0
  66. package/addon/controllers/connectivity/fuel-providers/details.js +69 -0
  67. package/addon/controllers/connectivity/fuel-providers/edit.js +24 -0
  68. package/addon/controllers/connectivity/fuel-providers/index.js +177 -0
  69. package/addon/controllers/connectivity/fuel-providers/new.js +37 -0
  70. package/addon/controllers/connectivity/telematics/details/attachments.js +247 -0
  71. package/addon/controllers/connectivity/telematics/details/devices.js +368 -0
  72. package/addon/controllers/connectivity/telematics/details/events.js +244 -0
  73. package/addon/controllers/connectivity/telematics/details/index.js +3 -0
  74. package/addon/controllers/connectivity/telematics/details/logs.js +43 -0
  75. package/addon/controllers/connectivity/telematics/details/sensors.js +270 -0
  76. package/addon/controllers/connectivity/telematics/details.js +149 -0
  77. package/addon/controllers/connectivity/telematics/{index/edit.js → edit.js} +15 -4
  78. package/addon/controllers/connectivity/telematics/index.js +25 -5
  79. package/addon/controllers/connectivity/telematics/{index/new.js → new.js} +8 -2
  80. package/addon/controllers/maintenance/index.js +100 -0
  81. package/addon/controllers/management/drivers/index/details.js +78 -1
  82. package/addon/controllers/management/drivers/index.js +39 -0
  83. package/addon/controllers/management/fleets/index/details.js +23 -1
  84. package/addon/controllers/management/fleets/index.js +6 -1
  85. package/addon/controllers/management/fuel-reports/index.js +37 -1
  86. package/addon/controllers/management/fuel-transactions/index/details.js +70 -0
  87. package/addon/controllers/management/fuel-transactions/index.js +240 -0
  88. package/addon/controllers/management/index.js +88 -0
  89. package/addon/controllers/management/vehicles/index/details.js +32 -0
  90. package/addon/controllers/management/vehicles/index.js +26 -0
  91. package/addon/controllers/operations/orders/index.js +4 -0
  92. package/addon/controllers/settings/index.js +142 -0
  93. package/addon/controllers/settings/payments/index.js +5 -0
  94. package/addon/extension.js +31 -0
  95. package/addon/routes/analytics/index.js +3 -0
  96. package/addon/routes/connectivity/devices/index.js +3 -0
  97. package/addon/routes/connectivity/fuel-providers/details/index.js +7 -0
  98. package/addon/routes/connectivity/fuel-providers/details/matching.js +7 -0
  99. package/addon/routes/connectivity/fuel-providers/details/settings.js +7 -0
  100. package/addon/routes/connectivity/fuel-providers/details/sync.js +18 -0
  101. package/addon/routes/connectivity/fuel-providers/details/transactions.js +14 -0
  102. package/addon/routes/connectivity/fuel-providers/details.js +18 -0
  103. package/addon/routes/connectivity/fuel-providers/edit.js +18 -0
  104. package/addon/routes/connectivity/fuel-providers/index.js +20 -0
  105. package/addon/routes/connectivity/fuel-providers/new.js +3 -0
  106. package/addon/routes/connectivity/fuel-providers.js +3 -0
  107. package/addon/routes/connectivity/telematics/details/attachments.js +28 -0
  108. package/addon/routes/connectivity/telematics/details/devices.js +30 -0
  109. package/addon/routes/connectivity/telematics/details/events.js +33 -0
  110. package/addon/routes/connectivity/telematics/details/index.js +3 -0
  111. package/addon/routes/connectivity/telematics/details/logs.js +17 -0
  112. package/addon/routes/connectivity/telematics/details/sensors.js +29 -0
  113. package/addon/routes/connectivity/telematics/{index/details.js → details.js} +1 -1
  114. package/addon/routes/connectivity/telematics/{index/edit.js → edit.js} +1 -1
  115. package/addon/routes/connectivity/telematics/new.js +3 -0
  116. package/addon/routes/maintenance/index.js +3 -0
  117. package/addon/routes/maintenance/work-orders/index.js +2 -0
  118. package/addon/routes/management/drivers/index/details/activity.js +3 -0
  119. package/addon/routes/management/fuel-reports/index.js +2 -0
  120. package/addon/routes/management/fuel-transactions/index/details.js +18 -0
  121. package/addon/routes/management/fuel-transactions/index.js +21 -0
  122. package/addon/routes/management/fuel-transactions.js +3 -0
  123. package/addon/routes/settings/index.js +3 -0
  124. package/addon/routes.js +28 -9
  125. package/addon/services/device-actions.js +64 -1
  126. package/addon/services/device-event-actions.js +12 -1
  127. package/addon/services/driver-actions.js +147 -11
  128. package/addon/services/fleet-actions.js +66 -1
  129. package/addon/services/fuel-integration-actions.js +31 -0
  130. package/addon/services/issue-actions.js +1 -1
  131. package/addon/services/telematic-actions.js +9 -3
  132. package/addon/services/vehicle-actions.js +125 -0
  133. package/addon/styles/fleetops-engine.css +2237 -162
  134. package/addon/templates/analytics/index.hbs +14 -0
  135. package/addon/templates/analytics/reports/index.hbs +19 -1
  136. package/addon/templates/connectivity/devices/index.hbs +19 -1
  137. package/addon/templates/connectivity/events/index.hbs +16 -1
  138. package/addon/templates/connectivity/fuel-providers/details/index.hbs +38 -0
  139. package/addon/templates/connectivity/fuel-providers/details/matching.hbs +13 -0
  140. package/addon/templates/connectivity/fuel-providers/details/settings.hbs +11 -0
  141. package/addon/templates/connectivity/fuel-providers/details/sync.hbs +48 -0
  142. package/addon/templates/connectivity/fuel-providers/details/transactions.hbs +21 -0
  143. package/addon/templates/connectivity/fuel-providers/details.hbs +51 -0
  144. package/addon/templates/connectivity/fuel-providers/edit.hbs +24 -0
  145. package/addon/templates/connectivity/fuel-providers/index.hbs +12 -0
  146. package/addon/templates/connectivity/fuel-providers/new.hbs +22 -0
  147. package/addon/templates/connectivity/fuel-providers.hbs +1 -0
  148. package/addon/templates/connectivity/sensors/index.hbs +19 -1
  149. package/addon/templates/connectivity/telematics/details/attachments.hbs +163 -0
  150. package/addon/templates/connectivity/telematics/details/devices.hbs +88 -0
  151. package/addon/templates/connectivity/telematics/details/events.hbs +101 -0
  152. package/addon/templates/connectivity/telematics/{index/details → details}/index.hbs +0 -1
  153. package/addon/templates/connectivity/telematics/details/logs.hbs +69 -0
  154. package/addon/templates/connectivity/telematics/details/sensors.hbs +88 -0
  155. package/addon/templates/connectivity/telematics/details.hbs +53 -0
  156. package/addon/templates/connectivity/telematics/edit.hbs +27 -0
  157. package/addon/templates/connectivity/telematics/index.hbs +6 -8
  158. package/addon/templates/connectivity/telematics/new.hbs +24 -0
  159. package/addon/templates/maintenance/equipment/index.hbs +19 -1
  160. package/addon/templates/maintenance/index.hbs +113 -0
  161. package/addon/templates/maintenance/maintenances/index.hbs +15 -1
  162. package/addon/templates/maintenance/parts/index.hbs +19 -1
  163. package/addon/templates/maintenance/schedules/index.hbs +19 -1
  164. package/addon/templates/maintenance/work-orders/index.hbs +19 -1
  165. package/addon/templates/management/contacts/customers.hbs +15 -1
  166. package/addon/templates/management/contacts/index.hbs +19 -1
  167. package/addon/templates/management/drivers/index/details/activity.hbs +1 -0
  168. package/addon/templates/management/drivers/index.hbs +19 -1
  169. package/addon/templates/management/fleets/index.hbs +19 -1
  170. package/addon/templates/management/fuel-reports/index.hbs +19 -1
  171. package/addon/templates/management/fuel-transactions/index/details.hbs +73 -0
  172. package/addon/templates/management/fuel-transactions/index.hbs +58 -0
  173. package/addon/templates/management/fuel-transactions.hbs +1 -0
  174. package/addon/templates/management/index.hbs +109 -73
  175. package/addon/templates/management/issues/index.hbs +19 -1
  176. package/addon/templates/management/places/index.hbs +19 -1
  177. package/addon/templates/management/vehicles/index.hbs +19 -1
  178. package/addon/templates/management/vendors/index.hbs +19 -1
  179. package/addon/templates/management/vendors/integrated.hbs +13 -1
  180. package/addon/templates/operations/orders/index.hbs +19 -1
  181. package/addon/templates/operations/service-rates/index.hbs +19 -1
  182. package/addon/templates/settings/index.hbs +83 -0
  183. package/addon/templates/settings/payments/index.hbs +15 -1
  184. package/addon/templates/settings/routing.hbs +2 -2
  185. package/addon/utils/fleet-ops-options.js +3 -0
  186. package/app/components/cell/telematic-provider.js +1 -0
  187. package/app/components/cell/telematic-status.js +1 -0
  188. package/app/components/fuel-integration/form.js +1 -0
  189. package/app/components/fuel-integration/hub.js +1 -0
  190. package/app/components/fuel-integration/matching-priority.js +1 -0
  191. package/app/components/modals/assigned-orders.js +1 -0
  192. package/app/components/modals/attach-telematic-device.js +1 -0
  193. package/app/components/modals/fleet-assign-driver.js +1 -0
  194. package/app/components/modals/fleet-assign-vehicle.js +1 -0
  195. package/app/components/modals/telematic-connection-diagnostics.js +1 -0
  196. package/app/components/order/card.js +1 -0
  197. package/app/components/telematic/hub.js +1 -0
  198. package/app/components/telematic/settings.js +1 -0
  199. package/app/components/telematic/tab-empty-state.js +1 -0
  200. package/app/components/widget/fuel-providers.js +1 -0
  201. package/app/controllers/connectivity/fuel-providers/details/sync.js +1 -0
  202. package/app/controllers/connectivity/{telematics/index/details/devices.js → fuel-providers/details/transactions.js} +1 -1
  203. package/app/controllers/connectivity/{telematics/index → fuel-providers}/details.js +1 -1
  204. package/app/controllers/connectivity/{telematics/index → fuel-providers}/edit.js +1 -1
  205. package/app/controllers/connectivity/{telematics/index/details → fuel-providers}/index.js +1 -1
  206. package/app/controllers/connectivity/{telematics/index → fuel-providers}/new.js +1 -1
  207. package/app/controllers/connectivity/telematics/details/attachments.js +1 -0
  208. package/app/controllers/connectivity/telematics/details/devices.js +1 -0
  209. package/app/controllers/connectivity/telematics/details/events.js +1 -0
  210. package/app/controllers/connectivity/telematics/details/index.js +1 -0
  211. package/app/controllers/connectivity/telematics/details/logs.js +1 -0
  212. package/app/controllers/connectivity/telematics/details/sensors.js +1 -0
  213. package/app/controllers/connectivity/telematics/details.js +1 -0
  214. package/app/controllers/connectivity/telematics/edit.js +1 -0
  215. package/app/controllers/connectivity/telematics/new.js +1 -0
  216. package/app/controllers/maintenance/index.js +1 -0
  217. package/app/controllers/management/fuel-transactions/index/details.js +1 -0
  218. package/app/controllers/management/fuel-transactions/index.js +1 -0
  219. package/app/controllers/management/index.js +1 -0
  220. package/app/controllers/settings/index.js +1 -0
  221. package/app/routes/analytics/index.js +1 -0
  222. package/app/routes/connectivity/{telematics/index → fuel-providers}/details/index.js +1 -1
  223. package/app/routes/connectivity/{telematics/index/details/events.js → fuel-providers/details/matching.js} +1 -1
  224. package/app/routes/connectivity/fuel-providers/details/settings.js +1 -0
  225. package/app/routes/connectivity/fuel-providers/details/sync.js +1 -0
  226. package/app/routes/connectivity/{telematics/index/details/devices.js → fuel-providers/details/transactions.js} +1 -1
  227. package/app/routes/connectivity/{telematics/index → fuel-providers}/details.js +1 -1
  228. package/app/routes/connectivity/{telematics/index → fuel-providers}/edit.js +1 -1
  229. package/app/routes/connectivity/fuel-providers/index.js +1 -0
  230. package/app/routes/connectivity/{telematics/index → fuel-providers}/new.js +1 -1
  231. package/app/routes/connectivity/fuel-providers.js +1 -0
  232. package/app/routes/connectivity/telematics/details/attachments.js +1 -0
  233. package/app/routes/connectivity/telematics/details/devices.js +1 -0
  234. package/app/routes/connectivity/telematics/details/events.js +1 -0
  235. package/app/routes/connectivity/telematics/details/index.js +1 -0
  236. package/app/routes/connectivity/telematics/details/logs.js +1 -0
  237. package/app/routes/connectivity/telematics/details/sensors.js +1 -0
  238. package/app/routes/connectivity/telematics/details.js +1 -0
  239. package/app/routes/connectivity/telematics/edit.js +1 -0
  240. package/app/routes/connectivity/telematics/new.js +1 -0
  241. package/app/routes/maintenance/index.js +1 -0
  242. package/app/routes/management/drivers/index/details/activity.js +1 -0
  243. package/app/routes/management/fuel-transactions/index/details.js +1 -0
  244. package/app/routes/management/fuel-transactions/index.js +1 -0
  245. package/app/routes/management/fuel-transactions.js +1 -0
  246. package/app/routes/settings/index.js +1 -0
  247. package/app/services/fuel-integration-actions.js +1 -0
  248. package/app/templates/analytics/index.js +1 -0
  249. package/app/templates/connectivity/{telematics/index → fuel-providers}/details/index.js +1 -1
  250. package/app/templates/connectivity/{telematics/index/details/events.js → fuel-providers/details/matching.js} +1 -1
  251. package/app/templates/connectivity/fuel-providers/details/settings.js +1 -0
  252. package/app/templates/connectivity/fuel-providers/details/sync.js +1 -0
  253. package/app/templates/connectivity/{telematics/index/details/devices.js → fuel-providers/details/transactions.js} +1 -1
  254. package/app/templates/connectivity/{telematics/index → fuel-providers}/details.js +1 -1
  255. package/app/templates/connectivity/{telematics/index → fuel-providers}/edit.js +1 -1
  256. package/app/templates/connectivity/fuel-providers/index.js +1 -0
  257. package/app/templates/connectivity/{telematics/index → fuel-providers}/new.js +1 -1
  258. package/app/templates/connectivity/fuel-providers.js +1 -0
  259. package/app/templates/connectivity/telematics/details/attachments.js +1 -0
  260. package/app/templates/connectivity/telematics/details/devices.js +1 -0
  261. package/app/templates/connectivity/telematics/details/events.js +1 -0
  262. package/app/templates/connectivity/telematics/details/index.js +1 -0
  263. package/app/templates/connectivity/telematics/details/logs.js +1 -0
  264. package/app/templates/connectivity/telematics/details/sensors.js +1 -0
  265. package/app/templates/connectivity/telematics/details.js +1 -0
  266. package/app/templates/connectivity/telematics/edit.js +1 -0
  267. package/app/templates/connectivity/telematics/new.js +1 -0
  268. package/app/templates/maintenance/index.js +1 -0
  269. package/app/templates/management/drivers/index/details/activity.js +1 -0
  270. package/app/templates/management/fuel-transactions/index/details.js +1 -0
  271. package/app/templates/management/fuel-transactions/index.js +1 -0
  272. package/app/templates/management/fuel-transactions.js +1 -0
  273. package/app/templates/management/index.js +1 -0
  274. package/app/templates/settings/index.js +1 -0
  275. package/assets/images/telematics/providers/afaqy.webp +0 -0
  276. package/assets/images/telematics/providers/default.webp +0 -0
  277. package/assets/images/telematics/providers/flespi.webp +0 -0
  278. package/assets/images/telematics/providers/geotab.webp +0 -0
  279. package/assets/images/telematics/providers/safee.webp +0 -0
  280. package/assets/images/telematics/providers/samsara.webp +0 -0
  281. package/composer.json +1 -1
  282. package/extension.json +1 -1
  283. package/package.json +4 -4
  284. package/server/config/fuel-providers.php +42 -0
  285. package/server/config/telematics.php +139 -130
  286. package/server/migrations/2026_06_06_000001_harden_device_events_telematics_contract.php +59 -0
  287. package/server/migrations/2026_06_08_000001_create_fuel_provider_connections_table.php +37 -0
  288. package/server/migrations/2026_06_08_000002_create_fuel_provider_transactions_table.php +53 -0
  289. package/server/migrations/2026_06_08_000003_create_fuel_provider_sync_runs_table.php +40 -0
  290. package/server/migrations/2026_06_10_000001_add_fuel_card_number_to_vehicles_table.php +25 -0
  291. package/server/migrations/2026_06_10_000002_add_vehicle_identity_columns_to_fuel_provider_transactions_table.php +39 -0
  292. package/server/migrations/2026_06_15_000001_normalize_device_attachable_vehicle_morph_types.php +30 -0
  293. package/server/src/Console/Commands/FixInvalidPolymorphicRelationTypeNamespaces.php +1 -0
  294. package/server/src/Contracts/FuelProvider.php +30 -0
  295. package/server/src/Contracts/TelematicProviderDescriptor.php +3 -1
  296. package/server/src/Events/FuelProviderTransactionImported.php +17 -0
  297. package/server/src/Events/FuelProviderTransactionMatched.php +17 -0
  298. package/server/src/Events/FuelProviderTransactionUnmatched.php +17 -0
  299. package/server/src/Events/FuelReportCreatedFromProvider.php +18 -0
  300. package/server/src/Http/Controllers/Internal/v1/AnalyticsController.php +6 -0
  301. package/server/src/Http/Controllers/Internal/v1/DeviceController.php +140 -2
  302. package/server/src/Http/Controllers/Internal/v1/DeviceEventController.php +44 -0
  303. package/server/src/Http/Controllers/Internal/v1/DriverController.php +158 -7
  304. package/server/src/Http/Controllers/Internal/v1/FuelProviderConnectionController.php +124 -0
  305. package/server/src/Http/Controllers/Internal/v1/FuelProviderSyncRunController.php +10 -0
  306. package/server/src/Http/Controllers/Internal/v1/FuelProviderTransactionController.php +76 -0
  307. package/server/src/Http/Controllers/Internal/v1/HubController.php +300 -0
  308. package/server/src/Http/Controllers/Internal/v1/SearchController.php +506 -0
  309. package/server/src/Http/Controllers/Internal/v1/SensorController.php +1 -1
  310. package/server/src/Http/Controllers/Internal/v1/TelematicController.php +179 -16
  311. package/server/src/Http/Controllers/Internal/v1/VehicleController.php +249 -0
  312. package/server/src/Http/Controllers/TelematicWebhookController.php +103 -19
  313. package/server/src/Http/Filter/DeviceFilter.php +74 -0
  314. package/server/src/Http/Filter/DriverFilter.php +6 -0
  315. package/server/src/Http/Filter/FuelProviderConnectionFilter.php +33 -0
  316. package/server/src/Http/Filter/FuelProviderSyncRunFilter.php +28 -0
  317. package/server/src/Http/Filter/FuelProviderTransactionFilter.php +59 -0
  318. package/server/src/Http/Filter/FuelReportFilter.php +10 -0
  319. package/server/src/Http/Filter/VehicleFilter.php +6 -0
  320. package/server/src/Http/Resources/v1/Driver.php +15 -0
  321. package/server/src/Http/Resources/v1/FuelProviderConnection.php +30 -0
  322. package/server/src/Http/Resources/v1/FuelProviderSyncRun.php +36 -0
  323. package/server/src/Http/Resources/v1/FuelProviderTransaction.php +54 -0
  324. package/server/src/Http/Resources/v1/FuelReport.php +28 -22
  325. package/server/src/Http/Resources/v1/Index/Driver.php +26 -20
  326. package/server/src/Http/Resources/v1/Index/Vehicle.php +29 -22
  327. package/server/src/Http/Resources/v1/Vehicle.php +17 -0
  328. package/server/src/Http/Resources/v1/VehicleWithoutDriver.php +2 -0
  329. package/server/src/Jobs/SyncFuelProviderTransactionsJob.php +57 -0
  330. package/server/src/Jobs/SyncTelematicDevicesJob.php +105 -17
  331. package/server/src/Jobs/TestTelematicConnectionJob.php +9 -22
  332. package/server/src/Models/Asset.php +2 -1
  333. package/server/src/Models/Contact.php +2 -1
  334. package/server/src/Models/Device.php +27 -4
  335. package/server/src/Models/DeviceEvent.php +40 -3
  336. package/server/src/Models/Driver.php +3 -2
  337. package/server/src/Models/Equipment.php +2 -1
  338. package/server/src/Models/Fleet.php +2 -1
  339. package/server/src/Models/FuelProviderConnection.php +60 -0
  340. package/server/src/Models/FuelProviderSyncRun.php +58 -0
  341. package/server/src/Models/FuelProviderTransaction.php +119 -0
  342. package/server/src/Models/FuelReport.php +16 -1
  343. package/server/src/Models/Part.php +2 -1
  344. package/server/src/Models/Sensor.php +21 -4
  345. package/server/src/Models/ServiceRate.php +39 -2
  346. package/server/src/Models/Vehicle.php +14 -2
  347. package/server/src/Models/Vendor.php +2 -1
  348. package/server/src/Providers/FleetOpsServiceProvider.php +20 -0
  349. package/server/src/Support/Analytics/FuelProviderSummary.php +42 -0
  350. package/server/src/Support/FuelProviders/FuelProviderDescriptor.php +55 -0
  351. package/server/src/Support/FuelProviders/FuelProviderRegistry.php +75 -0
  352. package/server/src/Support/FuelProviders/FuelProviderService.php +447 -0
  353. package/server/src/Support/FuelProviders/Providers/AbstractFuelProvider.php +98 -0
  354. package/server/src/Support/FuelProviders/Providers/PetroAppFuelProvider.php +167 -0
  355. package/server/src/Support/Telematics/Providers/AbstractProvider.php +27 -6
  356. package/server/src/Support/Telematics/Providers/AfaqyProvider.php +105 -38
  357. package/server/src/Support/Telematics/Providers/FlespiProvider.php +1 -0
  358. package/server/src/Support/Telematics/Providers/GeotabProvider.php +1 -0
  359. package/server/src/Support/Telematics/Providers/SafeeProvider.php +32 -22
  360. package/server/src/Support/Telematics/Providers/SamsaraProvider.php +3 -1
  361. package/server/src/Support/Telematics/TelematicService.php +340 -21
  362. package/server/src/routes.php +50 -4
  363. package/server/tests/FuelProviderRegistryTest.php +416 -0
  364. package/server/tests/HubRoutesTest.php +62 -0
  365. package/server/tests/ServiceRateAlgorithmWeightVariablesTest.php +44 -0
  366. package/server/tests/TelematicsHardeningTest.php +359 -0
  367. package/server/tests/VehicleDriverAssignmentTest.php +51 -0
  368. package/translations/ar-ae.yml +23 -1
  369. package/translations/bg-bg.yaml +72 -0
  370. package/translations/en-us.yaml +83 -0
  371. package/translations/es-pa.yaml +72 -0
  372. package/translations/fr-fr.yaml +72 -0
  373. package/translations/mn-mn.yaml +72 -0
  374. package/translations/pt-br.yaml +72 -0
  375. package/translations/ru-ru.yaml +72 -0
  376. package/translations/vi-vn.yaml +98 -1
  377. package/addon/controllers/connectivity/telematics/index/details/devices.js +0 -3
  378. package/addon/controllers/connectivity/telematics/index/details/events.js +0 -3
  379. package/addon/controllers/connectivity/telematics/index/details/index.js +0 -3
  380. package/addon/controllers/connectivity/telematics/index/details/sensors.js +0 -3
  381. package/addon/controllers/connectivity/telematics/index/details.js +0 -24
  382. package/addon/routes/connectivity/telematics/index/details/devices.js +0 -3
  383. package/addon/routes/connectivity/telematics/index/details/events.js +0 -3
  384. package/addon/routes/connectivity/telematics/index/details/index.js +0 -3
  385. package/addon/routes/connectivity/telematics/index/details/sensors.js +0 -3
  386. package/addon/routes/connectivity/telematics/index/new.js +0 -3
  387. package/addon/templates/connectivity/telematics/index/details/devices.hbs +0 -1
  388. package/addon/templates/connectivity/telematics/index/details/events.hbs +0 -1
  389. package/addon/templates/connectivity/telematics/index/details/sensors.hbs +0 -1
  390. package/addon/templates/connectivity/telematics/index/details.hbs +0 -14
  391. package/addon/templates/connectivity/telematics/index/edit.hbs +0 -12
  392. package/addon/templates/connectivity/telematics/index/new.hbs +0 -12
  393. package/app/controllers/connectivity/telematics/index/details/events.js +0 -1
  394. package/app/controllers/connectivity/telematics/index/details/sensors.js +0 -1
  395. package/app/routes/connectivity/telematics/index/details/sensors.js +0 -1
  396. package/app/templates/connectivity/telematics/index/details/sensors.js +0 -1
@@ -0,0 +1,142 @@
1
+ import Controller from '@ember/controller';
2
+ import { inject as service } from '@ember/service';
3
+ import { action } from '@ember/object';
4
+
5
+ export default class SettingsIndexController extends Controller {
6
+ @service docsPanel;
7
+
8
+ groups = [
9
+ {
10
+ title: 'Driver And Map Experience',
11
+ description: 'Tune what dispatchers and drivers see while work is moving.',
12
+ links: [
13
+ { label: 'Navigator App', route: 'settings.navigator-app', icon: 'location-arrow', description: 'Driver app behavior and workflow defaults.' },
14
+ { label: 'Map', route: 'settings.map', icon: 'map', description: 'Map providers, defaults, and display behavior.' },
15
+ ],
16
+ },
17
+ {
18
+ title: 'Dispatch Automation',
19
+ description: 'Shape route planning, assignment, and scheduling behavior.',
20
+ links: [
21
+ { label: 'Routing', route: 'settings.routing', icon: 'route', description: 'Routing engines and routing defaults.' },
22
+ { label: 'Orchestrator', route: 'settings.orchestrator', icon: 'circle-nodes', description: 'Dispatch orchestration and assignment behavior.' },
23
+ { label: 'Scheduling', route: 'settings.scheduling', icon: 'calendar-days', description: 'Schedule planning and operational timing rules.' },
24
+ ],
25
+ },
26
+ {
27
+ title: 'Business And Data',
28
+ description: 'Keep commerce, metadata, and visual conventions aligned.',
29
+ links: [
30
+ { label: 'Payments', route: 'settings.payments', icon: 'cash-register', description: 'Payment setup for operational commerce workflows.' },
31
+ { label: 'Custom Fields', route: 'settings.custom-fields', icon: 'pen-to-square', description: 'Operational metadata fields for Fleet-Ops records.' },
32
+ { label: 'Avatars', route: 'settings.avatars', icon: 'icons', description: 'Visual assets for driver, vehicle, and map displays.' },
33
+ ],
34
+ },
35
+ {
36
+ title: 'Communication',
37
+ description: 'Control operational alerts and notification behavior.',
38
+ links: [{ label: 'Notifications', route: 'settings.notifications', icon: 'bell', description: 'Operational status alerts and notification rules.' }],
39
+ },
40
+ ];
41
+
42
+ actions = [
43
+ {
44
+ label: 'Start with driver experience',
45
+ description: 'Navigator App and Map settings should be reviewed before operators rely on live dispatch defaults.',
46
+ icon: 'location-arrow',
47
+ route: 'settings.navigator-app',
48
+ tone: 'info',
49
+ },
50
+ {
51
+ label: 'Review automation rules',
52
+ description: 'Routing, orchestration, and scheduling settings affect assignment and planning behavior.',
53
+ icon: 'route',
54
+ route: 'settings.routing',
55
+ tone: 'warning',
56
+ },
57
+ {
58
+ label: 'Keep forms focused',
59
+ description: 'Add custom fields after core workflows are stable so operational screens stay easy to scan.',
60
+ icon: 'pen-to-square',
61
+ route: 'settings.custom-fields',
62
+ tone: 'success',
63
+ },
64
+ ];
65
+
66
+ docs = [
67
+ {
68
+ label: 'Navigator App',
69
+ icon: 'location-arrow',
70
+ slug: 'fleet-ops/settings/navigator-app',
71
+ title: 'Navigator App settings',
72
+ description: 'Configure driver app behavior, onboarding, and live workflow defaults.',
73
+ },
74
+ {
75
+ label: 'Map',
76
+ icon: 'map',
77
+ slug: 'fleet-ops/settings/map',
78
+ title: 'Map settings',
79
+ description: 'Set map providers, display defaults, and operator map behavior.',
80
+ },
81
+ {
82
+ label: 'Payments',
83
+ icon: 'cash-register',
84
+ slug: 'fleet-ops/settings/payments',
85
+ title: 'Payments guide',
86
+ description: 'Connect payment providers and payment behavior for Fleet-Ops workflows.',
87
+ },
88
+ {
89
+ label: 'Notifications',
90
+ icon: 'bell',
91
+ slug: 'fleet-ops/settings/notifications',
92
+ title: 'Notification settings',
93
+ description: 'Tune operational alerts sent to dispatchers, customers, and drivers.',
94
+ },
95
+ {
96
+ label: 'Routing',
97
+ icon: 'route',
98
+ slug: 'fleet-ops/settings/routing',
99
+ title: 'Routing settings',
100
+ description: 'Configure routing engines, tracking defaults, and distance units.',
101
+ },
102
+ {
103
+ label: 'Orchestrator',
104
+ icon: 'circle-nodes',
105
+ slug: 'fleet-ops/settings/orchestrator',
106
+ title: 'Orchestrator settings',
107
+ description: 'Select dispatch automation engines and assignment behavior.',
108
+ },
109
+ {
110
+ label: 'Scheduling',
111
+ icon: 'calendar-days',
112
+ slug: 'fleet-ops/settings/scheduling',
113
+ title: 'Scheduling settings',
114
+ description: 'Manage schedule templates and timing rules for planned work.',
115
+ },
116
+ {
117
+ label: 'Custom Fields',
118
+ icon: 'pen-to-square',
119
+ slug: 'fleet-ops/settings/custom-fields',
120
+ title: 'Custom field settings',
121
+ description: 'Add structured operational metadata to Fleet-Ops records.',
122
+ },
123
+ {
124
+ label: 'Avatars',
125
+ icon: 'icons',
126
+ slug: 'fleet-ops/settings/avatars',
127
+ title: 'Avatar settings',
128
+ description: 'Manage visual markers used across maps and operational screens.',
129
+ },
130
+ ];
131
+
132
+ @action openDocs(link) {
133
+ if (!link?.slug) {
134
+ return;
135
+ }
136
+
137
+ return this.docsPanel.open(link.slug, {
138
+ title: link.title ?? link.label,
139
+ source: 'fleet-ops-settings-hub',
140
+ });
141
+ }
142
+ }
@@ -4,6 +4,7 @@ import { inject as service } from '@ember/service';
4
4
  import { isEmpty } from '@ember/utils';
5
5
  import { task } from 'ember-concurrency';
6
6
  import config from 'ember-get-config';
7
+ import { action } from '@ember/object';
7
8
 
8
9
  export default class SettingsPaymentsIndexController extends Controller {
9
10
  @service fetch;
@@ -57,4 +58,8 @@ export default class SettingsPaymentsIndexController extends Controller {
57
58
  this.hasStripeConnectAccount = false;
58
59
  }
59
60
  }
61
+
62
+ @action refreshPayments() {
63
+ return this.lookupStripeConnectAccount.perform();
64
+ }
60
65
  }
@@ -279,6 +279,16 @@ export default {
279
279
  category: 'Analytics',
280
280
  default: false,
281
281
  }),
282
+ new Widget({
283
+ id: 'fleet-ops-fuel-providers-widget',
284
+ name: 'Fuel Integrations',
285
+ description: 'Provider spend, unmatched transactions, and sync health.',
286
+ icon: 'gas-pump',
287
+ component: new ExtensionComponent('@fleetbase/fleetops-engine', 'widget/fuel-providers'),
288
+ grid_options: { w: 4, h: 5, minW: 4, minH: 5 },
289
+ category: 'Analytics',
290
+ default: false,
291
+ }),
282
292
  new Widget({
283
293
  id: 'fleet-ops-issues-insights-widget',
284
294
  name: 'Issues Insights',
@@ -311,7 +321,28 @@ export default {
311
321
  }),
312
322
  ];
313
323
 
324
+ const defaultWidgets = widgets
325
+ .filter((widget) => (typeof widget.isDefault === 'function' ? widget.isDefault() : widget.default === true))
326
+ .map((widget) => {
327
+ const definition = typeof widget.toObject === 'function' ? widget.toObject() : widget;
328
+
329
+ return {
330
+ ...definition,
331
+ widgetId: definition.widgetId ?? definition.id,
332
+ };
333
+ });
334
+
314
335
  widgetService.registerWidgets('dashboard', widgets);
336
+
337
+ if (typeof widgetService.registerDashboard === 'function') {
338
+ widgetService.registerDashboard('fleet-ops');
339
+ }
340
+
341
+ widgetService.registerWidgets('fleet-ops', widgets);
342
+
343
+ if (typeof widgetService.registerDefaultWidgets === 'function') {
344
+ widgetService.registerDefaultWidgets('fleet-ops', defaultWidgets);
345
+ }
315
346
  },
316
347
 
317
348
  registerHomeComponents(registryService) {
@@ -0,0 +1,3 @@
1
+ import Route from '@ember/routing/route';
2
+
3
+ export default class AnalyticsIndexRoute extends Route {}
@@ -11,6 +11,9 @@ export default class ConnectivityDevicesIndexRoute extends Route {
11
11
  query: { refreshModel: true },
12
12
  name: { refreshModel: true },
13
13
  public_id: { refreshModel: true },
14
+ status: { refreshModel: true },
15
+ attachment_state: { refreshModel: true },
16
+ telematic: { refreshModel: true },
14
17
  created_at: { refreshModel: true },
15
18
  updated_at: { refreshModel: true },
16
19
  };
@@ -0,0 +1,7 @@
1
+ import Route from '@ember/routing/route';
2
+
3
+ export default class ConnectivityFuelProvidersIndexDetailsIndexRoute extends Route {
4
+ model() {
5
+ return this.modelFor('connectivity.fuel-providers.details');
6
+ }
7
+ }
@@ -0,0 +1,7 @@
1
+ import Route from '@ember/routing/route';
2
+
3
+ export default class ConnectivityFuelProvidersIndexDetailsMatchingRoute extends Route {
4
+ model() {
5
+ return this.modelFor('connectivity.fuel-providers.details');
6
+ }
7
+ }
@@ -0,0 +1,7 @@
1
+ import Route from '@ember/routing/route';
2
+
3
+ export default class ConnectivityFuelProvidersIndexDetailsSettingsRoute extends Route {
4
+ model() {
5
+ return this.modelFor('connectivity.fuel-providers.details');
6
+ }
7
+ }
@@ -0,0 +1,18 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+
4
+ export default class ConnectivityFuelProvidersIndexDetailsSyncRoute extends Route {
5
+ @service store;
6
+
7
+ model() {
8
+ const connection = this.modelFor('connectivity.fuel-providers.details');
9
+
10
+ return {
11
+ connection,
12
+ syncRuns: this.store.query('fuel-provider-sync-run', {
13
+ connection: connection.uuid,
14
+ sort: '-created_at',
15
+ }),
16
+ };
17
+ }
18
+ }
@@ -0,0 +1,14 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+
4
+ export default class ConnectivityFuelProvidersIndexDetailsTransactionsRoute extends Route {
5
+ @service store;
6
+
7
+ model() {
8
+ const connection = this.modelFor('connectivity.fuel-providers.details');
9
+ return this.store.query('fuel-provider-transaction', {
10
+ connection: connection.uuid,
11
+ sort: '-transaction_at',
12
+ });
13
+ }
14
+ }
@@ -0,0 +1,18 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+ import { action } from '@ember/object';
4
+
5
+ export default class ConnectivityFuelProvidersIndexDetailsRoute extends Route {
6
+ @service store;
7
+ @service notifications;
8
+ @service hostRouter;
9
+
10
+ @action error(error) {
11
+ this.notifications.serverError(error);
12
+ return this.hostRouter.transitionTo('console.fleet-ops.connectivity.fuel-providers.index');
13
+ }
14
+
15
+ model({ public_id }) {
16
+ return this.store.findRecord('fuel-provider-connection', public_id);
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+ import { action } from '@ember/object';
4
+
5
+ export default class ConnectivityFuelProvidersIndexEditRoute extends Route {
6
+ @service store;
7
+ @service notifications;
8
+ @service hostRouter;
9
+
10
+ @action error(error) {
11
+ this.notifications.serverError(error);
12
+ return this.hostRouter.transitionTo('console.fleet-ops.connectivity.fuel-providers.index');
13
+ }
14
+
15
+ model({ public_id }) {
16
+ return this.store.findRecord('fuel-provider-connection', public_id);
17
+ }
18
+ }
@@ -0,0 +1,20 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+
4
+ export default class ConnectivityFuelProvidersIndexRoute extends Route {
5
+ @service store;
6
+
7
+ queryParams = {
8
+ page: { refreshModel: true },
9
+ limit: { refreshModel: true },
10
+ sort: { refreshModel: true },
11
+ query: { refreshModel: true },
12
+ provider: { refreshModel: true },
13
+ status: { refreshModel: true },
14
+ environment: { refreshModel: true },
15
+ };
16
+
17
+ model(params) {
18
+ return this.store.query('fuel-provider-connection', { sort: '-updated_at', ...params });
19
+ }
20
+ }
@@ -0,0 +1,3 @@
1
+ import Route from '@ember/routing/route';
2
+
3
+ export default class ConnectivityFuelProvidersIndexNewRoute extends Route {}
@@ -0,0 +1,3 @@
1
+ import Route from '@ember/routing/route';
2
+
3
+ export default class ConnectivityFuelProvidersRoute extends Route {}
@@ -0,0 +1,28 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+
4
+ export default class ConnectivityTelematicsDetailsAttachmentsRoute extends Route {
5
+ @service store;
6
+
7
+ queryParams = {
8
+ query: { refreshModel: true },
9
+ status: { refreshModel: true },
10
+ attachment_state: { refreshModel: true },
11
+ vehicle: { refreshModel: true },
12
+ sort: { refreshModel: true },
13
+ };
14
+
15
+ model(params) {
16
+ const telematic = this.modelFor('connectivity.telematics.details');
17
+
18
+ return this.store.query('device', {
19
+ telematic_uuid: telematic.id,
20
+ sort: params.sort,
21
+ });
22
+ }
23
+
24
+ setupController(controller, model) {
25
+ super.setupController(controller, model);
26
+ controller.telematic = this.modelFor('connectivity.telematics.details');
27
+ }
28
+ }
@@ -0,0 +1,30 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+
4
+ export default class ConnectivityTelematicsDetailsDevicesRoute extends Route {
5
+ @service store;
6
+
7
+ queryParams = {
8
+ page: { refreshModel: true },
9
+ limit: { refreshModel: true },
10
+ sort: { refreshModel: true },
11
+ query: { refreshModel: true },
12
+ status: { refreshModel: true },
13
+ provider: { refreshModel: true },
14
+ attachment_state: { refreshModel: true },
15
+ device_id: { refreshModel: true },
16
+ };
17
+
18
+ model(params) {
19
+ const telematic = this.modelFor('connectivity.telematics.details');
20
+ return this.store.query('device', {
21
+ ...params,
22
+ telematic_uuid: telematic.id,
23
+ });
24
+ }
25
+
26
+ setupController(controller, model) {
27
+ super.setupController(controller, model);
28
+ controller.telematic = this.modelFor('connectivity.telematics.details');
29
+ }
30
+ }
@@ -0,0 +1,33 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+
4
+ export default class ConnectivityTelematicsDetailsEventsRoute extends Route {
5
+ @service store;
6
+
7
+ queryParams = {
8
+ page: { refreshModel: true },
9
+ limit: { refreshModel: true },
10
+ sort: { refreshModel: true },
11
+ query: { refreshModel: true },
12
+ event_type: { refreshModel: true },
13
+ severity: { refreshModel: true },
14
+ device_uuid: { refreshModel: true },
15
+ provider: { refreshModel: true },
16
+ processed: { refreshModel: true },
17
+ occurred_at: { refreshModel: true },
18
+ created_at: { refreshModel: true },
19
+ };
20
+
21
+ model(params) {
22
+ const telematic = this.modelFor('connectivity.telematics.details');
23
+ return this.store.query('device-event', {
24
+ ...params,
25
+ telematic: telematic.id,
26
+ });
27
+ }
28
+
29
+ setupController(controller, model) {
30
+ super.setupController(controller, model);
31
+ controller.telematic = this.modelFor('connectivity.telematics.details');
32
+ }
33
+ }
@@ -0,0 +1,3 @@
1
+ import Route from '@ember/routing/route';
2
+
3
+ export default class ConnectivityTelematicsDetailsIndexRoute extends Route {}
@@ -0,0 +1,17 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+
4
+ export default class ConnectivityTelematicsDetailsLogsRoute extends Route {
5
+ @service fetch;
6
+
7
+ model() {
8
+ const telematic = this.modelFor('connectivity.telematics.details');
9
+
10
+ return this.fetch.get(`telematics/${telematic.id}/logs`);
11
+ }
12
+
13
+ setupController(controller, model) {
14
+ super.setupController(controller, model);
15
+ controller.telematic = this.modelFor('connectivity.telematics.details');
16
+ }
17
+ }
@@ -0,0 +1,29 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+
4
+ export default class ConnectivityTelematicsDetailsSensorsRoute extends Route {
5
+ @service store;
6
+
7
+ queryParams = {
8
+ page: { refreshModel: true },
9
+ limit: { refreshModel: true },
10
+ sort: { refreshModel: true },
11
+ query: { refreshModel: true },
12
+ status: { refreshModel: true },
13
+ type: { refreshModel: true },
14
+ device_uuid: { refreshModel: true },
15
+ };
16
+
17
+ model(params) {
18
+ const telematic = this.modelFor('connectivity.telematics.details');
19
+ return this.store.query('sensor', {
20
+ ...params,
21
+ telematic_uuid: telematic.id,
22
+ });
23
+ }
24
+
25
+ setupController(controller, model) {
26
+ super.setupController(controller, model);
27
+ controller.telematic = this.modelFor('connectivity.telematics.details');
28
+ }
29
+ }
@@ -2,7 +2,7 @@ import Route from '@ember/routing/route';
2
2
  import { inject as service } from '@ember/service';
3
3
  import { action } from '@ember/object';
4
4
 
5
- export default class ConnectivityTelematicsIndexDetailsRoute extends Route {
5
+ export default class ConnectivityTelematicsDetailsRoute extends Route {
6
6
  @service store;
7
7
  @service notifications;
8
8
  @service hostRouter;
@@ -2,7 +2,7 @@ import Route from '@ember/routing/route';
2
2
  import { inject as service } from '@ember/service';
3
3
  import { action } from '@ember/object';
4
4
 
5
- export default class ConnectivityTelematicsIndexEditRoute extends Route {
5
+ export default class ConnectivityTelematicsEditRoute extends Route {
6
6
  @service store;
7
7
  @service notifications;
8
8
  @service hostRouter;
@@ -0,0 +1,3 @@
1
+ import Route from '@ember/routing/route';
2
+
3
+ export default class ConnectivityTelematicsNewRoute extends Route {}
@@ -0,0 +1,3 @@
1
+ import Route from '@ember/routing/route';
2
+
3
+ export default class MaintenanceIndexRoute extends Route {}
@@ -11,6 +11,8 @@ export default class MaintenanceWorkOrdersIndexRoute extends Route {
11
11
  query: { refreshModel: true },
12
12
  name: { refreshModel: true },
13
13
  public_id: { refreshModel: true },
14
+ status: { refreshModel: true },
15
+ priority: { refreshModel: true },
14
16
  created_at: { refreshModel: true },
15
17
  updated_at: { refreshModel: true },
16
18
  };
@@ -0,0 +1,3 @@
1
+ import Route from '@ember/routing/route';
2
+
3
+ export default class ManagementDriversIndexDetailsActivityRoute extends Route {}
@@ -13,6 +13,8 @@ export default class ManagementFuelReportsIndexRoute extends Route {
13
13
  reporter: { refreshModel: true },
14
14
  driver: { refreshModel: true },
15
15
  status: { refreshModel: true },
16
+ source: { refreshModel: true },
17
+ provider: { refreshModel: true },
16
18
  createdAt: { refreshModel: true },
17
19
  updatedAt: { refreshModel: true },
18
20
  public_id: { refreshModel: true },
@@ -0,0 +1,18 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+ import { action } from '@ember/object';
4
+
5
+ export default class ManagementFuelTransactionsIndexDetailsRoute extends Route {
6
+ @service store;
7
+ @service notifications;
8
+ @service hostRouter;
9
+
10
+ @action error(error) {
11
+ this.notifications.serverError(error);
12
+ return this.hostRouter.transitionTo('console.fleet-ops.management.fuel-transactions.index');
13
+ }
14
+
15
+ model({ public_id }) {
16
+ return this.store.findRecord('fuel-provider-transaction', public_id);
17
+ }
18
+ }
@@ -0,0 +1,21 @@
1
+ import Route from '@ember/routing/route';
2
+ import { inject as service } from '@ember/service';
3
+
4
+ export default class ManagementFuelTransactionsIndexRoute extends Route {
5
+ @service store;
6
+
7
+ queryParams = {
8
+ page: { refreshModel: true },
9
+ limit: { refreshModel: true },
10
+ sort: { refreshModel: true },
11
+ query: { refreshModel: true },
12
+ provider: { refreshModel: true },
13
+ sync_status: { refreshModel: true },
14
+ vehicle: { refreshModel: true },
15
+ transaction_at: { refreshModel: true },
16
+ };
17
+
18
+ model(params) {
19
+ return this.store.query('fuel-provider-transaction', { sort: '-transaction_at', ...params });
20
+ }
21
+ }
@@ -0,0 +1,3 @@
1
+ import Route from '@ember/routing/route';
2
+
3
+ export default class ManagementFuelTransactionsRoute extends Route {}
@@ -0,0 +1,3 @@
1
+ import Route from '@ember/routing/route';
2
+
3
+ export default class SettingsIndexRoute extends Route {}