@fleetbase/fleetops-engine 0.6.57 → 0.6.59
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.
- package/README.md +3 -0
- package/addon/components/customer/form.hbs +0 -49
- package/addon/components/entity/card.hbs +1 -0
- package/addon/components/modals/order-label.hbs +1 -1
- package/addon/components/place/form.hbs +1 -1
- package/addon/services/entity-actions.js +32 -0
- package/addon/styles/fleetops-engine.css +0 -1
- package/composer.json +15 -3
- package/extension.json +1 -1
- package/index.js +7 -1
- package/package.json +3 -2
- package/phpunit.xml.dist +4 -4
- package/pnpm-workspace.yaml +2 -1
- package/scripts/coverage-file-runner.php +240 -0
- package/scripts/coverage-runner.php +52 -0
- package/scripts/coverage-summary.php +149 -0
- package/scripts/pest-bootstrap.php +411 -0
- package/scripts/pest-file-runner.php +94 -0
- package/scripts/pest-runner.php +119 -0
- package/server/resources/views/labels/entity-label.php +4 -4
- package/server/src/Casts/MultiPolygon.php +8 -3
- package/server/src/Casts/OrderConfigEntities.php +10 -3
- package/server/src/Casts/Point.php +10 -6
- package/server/src/Casts/Polygon.php +5 -2
- package/server/src/Console/Commands/AssignCustomerRoles.php +28 -6
- package/server/src/Console/Commands/AssignDriverRoles.php +36 -6
- package/server/src/Console/Commands/AuditCustomerUserConflicts.php +6 -1
- package/server/src/Console/Commands/DispatchAdhocOrders.php +12 -2
- package/server/src/Console/Commands/FixCustomerCompanies.php +46 -11
- package/server/src/Console/Commands/FixDriverCompanies.php +18 -3
- package/server/src/Console/Commands/FixLegacyOrderConfigs.php +31 -6
- package/server/src/Console/Commands/ProcessMaintenanceTriggers.php +94 -42
- package/server/src/Console/Commands/PurgeUnpurchasedServiceQuotes.php +42 -12
- package/server/src/Console/Commands/ReplayVehicleLocations.php +120 -55
- package/server/src/Console/Commands/SendDriverNotification.php +25 -4
- package/server/src/Console/Commands/SendMaintenanceReminders.php +43 -23
- package/server/src/Console/Commands/SimulateOrderRouteNavigation.php +36 -6
- package/server/src/Console/Commands/TrackOrderDistanceAndTime.php +6 -1
- package/server/src/Events/DriverLocationChanged.php +1 -1
- package/server/src/Events/DriverSimulatedLocationChanged.php +1 -1
- package/server/src/Events/EntityActivityChanged.php +1 -1
- package/server/src/Events/EntityCompleted.php +1 -1
- package/server/src/Events/EntityDriverAssigned.php +1 -1
- package/server/src/Events/FuelProviderTransactionImported.php +1 -1
- package/server/src/Events/FuelProviderTransactionMatched.php +1 -1
- package/server/src/Events/FuelProviderTransactionUnmatched.php +1 -1
- package/server/src/Events/FuelReportCreatedFromProvider.php +1 -1
- package/server/src/Events/GeofenceDwelled.php +1 -1
- package/server/src/Events/GeofenceEntered.php +1 -1
- package/server/src/Events/GeofenceExited.php +1 -1
- package/server/src/Events/VehicleLocationChanged.php +1 -1
- package/server/src/Events/WaypointActivityChanged.php +1 -1
- package/server/src/Events/WaypointCompleted.php +1 -1
- package/server/src/Exceptions/IntegratedVendorException.php +2 -2
- package/server/src/Exceptions/TelematicRateLimitExceededException.php +1 -1
- package/server/src/Http/Controllers/Api/v1/ContactController.php +89 -22
- package/server/src/Http/Controllers/Api/v1/CustomerController.php +296 -97
- package/server/src/Http/Controllers/Api/v1/DeviceController.php +48 -14
- package/server/src/Http/Controllers/Api/v1/DriverController.php +168 -63
- package/server/src/Http/Controllers/Api/v1/EntityController.php +112 -66
- package/server/src/Http/Controllers/Api/v1/EquipmentController.php +40 -10
- package/server/src/Http/Controllers/Api/v1/FleetController.php +54 -14
- package/server/src/Http/Controllers/Api/v1/FuelReportController.php +54 -14
- package/server/src/Http/Controllers/Api/v1/FuelTransactionController.php +36 -11
- package/server/src/Http/Controllers/Api/v1/GeofenceController.php +39 -21
- package/server/src/Http/Controllers/Api/v1/IssueController.php +54 -14
- package/server/src/Http/Controllers/Api/v1/LabelController.php +61 -22
- package/server/src/Http/Controllers/Api/v1/NavigatorController.php +21 -5
- package/server/src/Http/Controllers/Api/v1/OrderConfigController.php +35 -5
- package/server/src/Http/Controllers/Api/v1/OrderController.php +388 -203
- package/server/src/Http/Controllers/Api/v1/PartController.php +40 -10
- package/server/src/Http/Controllers/Api/v1/PayloadController.php +90 -30
- package/server/src/Http/Controllers/Api/v1/PlaceController.php +188 -91
- package/server/src/Http/Controllers/Api/v1/PurchaseRateController.php +100 -36
- package/server/src/Http/Controllers/Api/v1/ServiceAreaController.php +96 -26
- package/server/src/Http/Controllers/Api/v1/ServiceQuoteController.php +169 -81
- package/server/src/Http/Controllers/Api/v1/ServiceRateController.php +104 -75
- package/server/src/Http/Controllers/Api/v1/TrackingNumberController.php +83 -14
- package/server/src/Http/Controllers/Api/v1/TrackingStatusController.php +66 -16
- package/server/src/Http/Controllers/Api/v1/VehicleController.php +121 -67
- package/server/src/Http/Controllers/Api/v1/VendorController.php +54 -14
- package/server/src/Http/Controllers/Api/v1/WorkOrderController.php +47 -12
- package/server/src/Http/Controllers/Api/v1/ZoneController.php +84 -24
- package/server/src/Http/Controllers/Internal/v1/AnalyticsController.php +15 -5
- package/server/src/Http/Controllers/Internal/v1/ContactController.php +113 -28
- package/server/src/Http/Controllers/Internal/v1/CustomerController.php +36 -11
- package/server/src/Http/Controllers/Internal/v1/DeviceController.php +9 -4
- package/server/src/Http/Controllers/Internal/v1/DriverController.php +167 -69
- package/server/src/Http/Controllers/Internal/v1/EquipmentController.php +18 -3
- package/server/src/Http/Controllers/Internal/v1/FleetController.php +137 -60
- package/server/src/Http/Controllers/Internal/v1/FleetOpsLookupController.php +24 -9
- package/server/src/Http/Controllers/Internal/v1/FuelReportController.php +18 -3
- package/server/src/Http/Controllers/Internal/v1/GeocoderController.php +26 -8
- package/server/src/Http/Controllers/Internal/v1/GettingStartedController.php +12 -2
- package/server/src/Http/Controllers/Internal/v1/IntegratedVendorController.php +27 -6
- package/server/src/Http/Controllers/Internal/v1/IssueController.php +82 -29
- package/server/src/Http/Controllers/Internal/v1/MaintenanceController.php +34 -26
- package/server/src/Http/Controllers/Internal/v1/MaintenanceScheduleController.php +141 -97
- package/server/src/Http/Controllers/Internal/v1/ManifestController.php +28 -8
- package/server/src/Http/Controllers/Internal/v1/MetricsController.php +21 -12
- package/server/src/Http/Controllers/Internal/v1/MorphController.php +90 -18
- package/server/src/Http/Controllers/Internal/v1/NavigatorController.php +88 -35
- package/server/src/Http/Controllers/Internal/v1/OrchestrationController.php +149 -39
- package/server/src/Http/Controllers/Internal/v1/OrderConfigController.php +54 -18
- package/server/src/Http/Controllers/Internal/v1/OrderController.php +298 -86
- package/server/src/Http/Controllers/Internal/v1/PartController.php +18 -3
- package/server/src/Http/Controllers/Internal/v1/PaymentController.php +46 -14
- package/server/src/Http/Controllers/Internal/v1/PlaceController.php +31 -5
- package/server/src/Http/Controllers/Internal/v1/ProofController.php +88 -48
- package/server/src/Http/Controllers/Internal/v1/SearchController.php +1 -1
- package/server/src/Http/Controllers/Internal/v1/SensorController.php +6 -1
- package/server/src/Http/Controllers/Internal/v1/ServiceAreaController.php +6 -1
- package/server/src/Http/Controllers/Internal/v1/ServiceQuoteController.php +255 -105
- package/server/src/Http/Controllers/Internal/v1/SettingController.php +88 -35
- package/server/src/Http/Controllers/Internal/v1/TelematicController.php +1 -4
- package/server/src/Http/Controllers/Internal/v1/Traits/DriverSchedulingTrait.php +42 -14
- package/server/src/Http/Controllers/Internal/v1/VendorController.php +103 -33
- package/server/src/Http/Controllers/Internal/v1/WorkOrderController.php +42 -12
- package/server/src/Http/Filter/DriverFilter.php +2 -2
- package/server/src/Http/Filter/OrderFilter.php +1 -1
- package/server/src/Http/Filter/VehicleFilter.php +21 -7
- package/server/src/Http/Middleware/AuthenticateCustomerToken.php +12 -2
- package/server/src/Http/Requests/BulkDispatchRequest.php +3 -9
- package/server/src/Http/Requests/CancelOrderRequest.php +2 -6
- package/server/src/Http/Requests/CreateContactRequest.php +2 -6
- package/server/src/Http/Requests/CreateDeviceRequest.php +2 -2
- package/server/src/Http/Requests/CreateDriverRequest.php +3 -9
- package/server/src/Http/Requests/CreateEntityRequest.php +2 -6
- package/server/src/Http/Requests/CreateEquipmentRequest.php +2 -2
- package/server/src/Http/Requests/CreateFleetRequest.php +2 -6
- package/server/src/Http/Requests/CreateFuelReportRequest.php +2 -6
- package/server/src/Http/Requests/CreateFuelTransactionRequest.php +2 -2
- package/server/src/Http/Requests/CreateIssueRequest.php +2 -6
- package/server/src/Http/Requests/CreateOrderRequest.php +7 -8
- package/server/src/Http/Requests/CreatePartRequest.php +2 -2
- package/server/src/Http/Requests/CreatePayloadRequest.php +7 -9
- package/server/src/Http/Requests/CreatePlaceRequest.php +2 -6
- package/server/src/Http/Requests/CreatePurchaseRateRequest.php +2 -6
- package/server/src/Http/Requests/CreateSensorRequest.php +2 -2
- package/server/src/Http/Requests/CreateServiceAreaRequest.php +2 -6
- package/server/src/Http/Requests/CreateServiceQuoteRequest.php +2 -6
- package/server/src/Http/Requests/CreateServiceRateRequest.php +2 -6
- package/server/src/Http/Requests/CreateTrackingNumberRequest.php +2 -6
- package/server/src/Http/Requests/CreateTrackingStatusRequest.php +2 -6
- package/server/src/Http/Requests/CreateVehicleRequest.php +2 -6
- package/server/src/Http/Requests/CreateVendorRequest.php +2 -6
- package/server/src/Http/Requests/CreateWorkOrderRequest.php +2 -2
- package/server/src/Http/Requests/CreateZoneRequest.php +2 -6
- package/server/src/Http/Requests/DecodeTrackingNumberQR.php +2 -6
- package/server/src/Http/Requests/DriverSimulationRequest.php +2 -6
- package/server/src/Http/Requests/Internal/AssignOrderRequest.php +3 -7
- package/server/src/Http/Requests/Internal/CreateDriverRequest.php +4 -12
- package/server/src/Http/Requests/Internal/CreateOrderConfigRequest.php +2 -6
- package/server/src/Http/Requests/Internal/CreateOrderRequest.php +7 -8
- package/server/src/Http/Requests/Internal/FleetActionRequest.php +18 -12
- package/server/src/Http/Requests/Internal/UpdateDriverRequest.php +6 -3
- package/server/src/Http/Requests/QueryServiceQuotesRequest.php +2 -6
- package/server/src/Http/Requests/ScheduleOrderRequest.php +2 -6
- package/server/src/Http/Requests/UpdateIssueRequest.php +1 -3
- package/server/src/Http/Resources/v1/Customer.php +2 -2
- package/server/src/Http/Resources/v1/Maintenance.php +3 -4
- package/server/src/Http/Resources/v1/MaintenanceSchedule.php +3 -4
- package/server/src/Http/Resources/v1/Order.php +3 -7
- package/server/src/Http/Resources/v1/PurchaseRate.php +4 -6
- package/server/src/Http/Resources/v1/TrackingStatus.php +4 -6
- package/server/src/Http/Resources/v1/WorkOrder.php +3 -4
- package/server/src/Imports/ContactImport.php +10 -1
- package/server/src/Imports/DriverImport.php +10 -1
- package/server/src/Imports/EquipmentImport.php +6 -1
- package/server/src/Imports/FleetImport.php +10 -1
- package/server/src/Imports/FuelReportImport.php +10 -1
- package/server/src/Imports/IssueImport.php +10 -1
- package/server/src/Imports/MaintenanceImport.php +6 -1
- package/server/src/Imports/MaintenanceScheduleImport.php +6 -1
- package/server/src/Imports/PartImport.php +6 -1
- package/server/src/Imports/PlaceImport.php +10 -1
- package/server/src/Imports/VehicleImport.php +10 -1
- package/server/src/Imports/VendorImport.php +10 -1
- package/server/src/Imports/WorkOrderImport.php +6 -1
- package/server/src/Integrations/Lalamove/Lalamove.php +3 -7
- package/server/src/Integrations/Lalamove/LalamoveServiceType.php +5 -8
- package/server/src/Jobs/CheckGeofenceDwell.php +41 -16
- package/server/src/Jobs/FinalizeApiOrderCreation.php +17 -2
- package/server/src/Jobs/FinalizeInternalOrderCreation.php +11 -1
- package/server/src/Jobs/NotifyBulkAssignedDriver.php +29 -16
- package/server/src/Jobs/ProcessAllocationJob.php +59 -25
- package/server/src/Jobs/ReplayPositions.php +17 -10
- package/server/src/Jobs/SendPositionReplay.php +18 -7
- package/server/src/Jobs/SimulateDrivingRoute.php +14 -3
- package/server/src/Jobs/SyncFuelProviderTransactionsJob.php +12 -2
- package/server/src/Listeners/HandleDeliveryCompletion.php +11 -1
- package/server/src/Listeners/HandleGeofenceDwelled.php +6 -1
- package/server/src/Listeners/HandleGeofenceEntered.php +4 -2
- package/server/src/Listeners/HandleGeofenceExited.php +6 -1
- package/server/src/Listeners/HandleOrderCanceled.php +18 -3
- package/server/src/Listeners/HandleOrderDispatchFailed.php +12 -2
- package/server/src/Listeners/HandleOrderDispatched.php +61 -26
- package/server/src/Listeners/HandleOrderDriverAssigned.php +12 -2
- package/server/src/Listeners/HandleUserRemovedFromCompany.php +19 -6
- package/server/src/Listeners/NotifyDriverOnShiftChange.php +24 -4
- package/server/src/Listeners/NotifyOrderEvent.php +11 -6
- package/server/src/Models/Contact.php +6 -7
- package/server/src/Models/Device.php +26 -3
- package/server/src/Models/Driver.php +0 -6
- package/server/src/Models/Entity.php +4 -4
- package/server/src/Models/Equipment.php +1 -1
- package/server/src/Models/FuelReport.php +5 -1
- package/server/src/Models/IntegratedVendor.php +2 -2
- package/server/src/Models/Issue.php +5 -1
- package/server/src/Models/MaintenanceSchedule.php +25 -10
- package/server/src/Models/Order.php +18 -15
- package/server/src/Models/OrderConfig.php +1 -1
- package/server/src/Models/Payload.php +9 -16
- package/server/src/Models/Place.php +20 -13
- package/server/src/Models/ServiceArea.php +3 -6
- package/server/src/Models/ServiceQuote.php +5 -0
- package/server/src/Models/ServiceRate.php +13 -6
- package/server/src/Models/Telematic.php +2 -2
- package/server/src/Models/TrackingNumber.php +55 -10
- package/server/src/Models/TrackingStatus.php +24 -4
- package/server/src/Models/Waypoint.php +44 -10
- package/server/src/Models/Zone.php +3 -6
- package/server/src/Notifications/DriverArrivedAtGeofence.php +1 -1
- package/server/src/Notifications/OrderDispatched.php +3 -9
- package/server/src/Notifications/OrderPing.php +3 -9
- package/server/src/Observers/CategoryObserver.php +6 -1
- package/server/src/Observers/CompanyObserver.php +5 -0
- package/server/src/Observers/CompanyUserObserver.php +12 -2
- package/server/src/Observers/DriverObserver.php +19 -4
- package/server/src/Observers/FleetObserver.php +6 -1
- package/server/src/Observers/PurchaseRateObserver.php +66 -11
- package/server/src/Observers/ServiceAreaObserver.php +12 -2
- package/server/src/Observers/ServiceRateObserver.php +21 -6
- package/server/src/Observers/TrackingNumberObserver.php +19 -4
- package/server/src/Observers/UserObserver.php +6 -1
- package/server/src/Observers/VehicleObserver.php +27 -7
- package/server/src/Observers/WorkOrderObserver.php +27 -7
- package/server/src/Orchestration/Engines/DriverAssignmentEngine.php +8 -3
- package/server/src/Orchestration/Support/OrchestrationPayloadBuilder.php +5 -3
- package/server/src/Providers/FleetOpsServiceProvider.php +12 -0
- package/server/src/Providers/NotificationServiceProvider.php +6 -0
- package/server/src/Support/Ai/Capabilities/AssetStatusCapability.php +36 -26
- package/server/src/Support/Ai/Capabilities/CreateOrderPreviewCapability.php +18 -5
- package/server/src/Support/Ai/Capabilities/OrderInsightsCapability.php +6 -1
- package/server/src/Support/Ai/Capabilities/SearchResourcesCapability.php +26 -6
- package/server/src/Support/Analytics/FuelEfficiency.php +9 -3
- package/server/src/Support/Analytics/FuelProviderSummary.php +14 -5
- package/server/src/Support/Analytics/GeofenceViolations.php +40 -20
- package/server/src/Support/Analytics/IssuesInsights.php +38 -18
- package/server/src/Support/Analytics/MaintenanceOverview.php +51 -21
- package/server/src/Support/Analytics/OnTimeDelivery.php +3 -2
- package/server/src/Support/Analytics/OperationsPulse.php +59 -35
- package/server/src/Support/Analytics/OrdersByStatus.php +12 -7
- package/server/src/Support/Analytics/RevenueTrend.php +16 -6
- package/server/src/Support/Analytics/TopDrivers.php +3 -2
- package/server/src/Support/FleetOps.php +109 -104
- package/server/src/Support/Geocoding.php +52 -14
- package/server/src/Support/GeofenceIntersectionService.php +47 -27
- package/server/src/Support/LiveOrderQuery.php +6 -1
- package/server/src/Support/Metrics/ActiveRevenueQuery.php +3 -2
- package/server/src/Support/Metrics/FuelCostsMetric.php +6 -1
- package/server/src/Support/ResolvesOrderServiceStops.php +10 -0
- package/server/src/Support/Telematics/Providers/GeotabProvider.php +9 -4
- package/server/src/Support/Utils.php +122 -16
- package/server/src/Tracking/Providers/GoogleRoutesTrackingProvider.php +6 -1
- package/server/src/Tracking/Providers/OsrmTrackingProvider.php +11 -6
- package/server/src/Tracking/TrackingOptions.php +6 -1
- package/server/src/Tracking/TrackingProviderManager.php +2 -3
- package/server/src/Tracking/TrackingProviderRegistry.php +8 -4
- package/server/src/Traits/PayloadAccessors.php +6 -1
- package/server/src/routes.php +23 -27
- package/server/tests/AiOperationalQueryCapabilityTest.php +457 -1
- package/server/tests/AiPreviewCapabilityContractsTest.php +180 -0
- package/server/tests/AnalyticsRoutesTest.php +384 -3
- package/server/tests/AnalyticsWidgetContractsTest.php +740 -0
- package/server/tests/ApiContactControllerContractsTest.php +284 -0
- package/server/tests/ApiCustomerControllerContractsTest.php +962 -0
- package/server/tests/ApiDriverControllerContractsTest.php +571 -0
- package/server/tests/ApiEntityControllerContractsTest.php +329 -0
- package/server/tests/ApiEquipmentControllerContractsTest.php +239 -0
- package/server/tests/ApiFleetControllerContractsTest.php +176 -0
- package/server/tests/ApiFuelReportControllerContractsTest.php +217 -0
- package/server/tests/ApiIssueControllerContractsTest.php +217 -0
- package/server/tests/ApiOrderControllerContractsTest.php +1030 -0
- package/server/tests/ApiPartControllerContractsTest.php +251 -0
- package/server/tests/ApiPayloadControllerContractsTest.php +314 -0
- package/server/tests/ApiPlaceControllerContractsTest.php +541 -0
- package/server/tests/ApiPurchaseRateControllerContractsTest.php +283 -0
- package/server/tests/ApiServiceAreaZoneControllerContractsTest.php +442 -0
- package/server/tests/ApiServiceQuoteControllerContractsTest.php +322 -0
- package/server/tests/ApiTrackingNumberControllerContractsTest.php +225 -0
- package/server/tests/ApiTrackingStatusControllerContractsTest.php +254 -0
- package/server/tests/ApiVehicleControllerContractsTest.php +368 -0
- package/server/tests/ApiVendorControllerContractsTest.php +199 -0
- package/server/tests/AssetAndPlaceSearchContractsTest.php +220 -0
- package/server/tests/BackendSmallModelContractsTest.php +354 -0
- package/server/tests/CapacityAllocationEngineTest.php +56 -0
- package/server/tests/CommandContractsTest.php +2695 -0
- package/server/tests/CompactResourceSerializationTest.php +2745 -0
- package/server/tests/ControllerFilterContractsTest.php +1273 -0
- package/server/tests/ControllerHelperContractsTest.php +1740 -0
- package/server/tests/ControllerSerializationContractsTest.php +141 -0
- package/server/tests/CoverageSummaryScriptTest.php +93 -0
- package/server/tests/CustomerContactIdentitySafetyTest.php +1 -6
- package/server/tests/CustomerEndpointTest.php +166 -1
- package/server/tests/DriverFilterExecutionTest.php +263 -0
- package/server/tests/DriverGeofenceProcessingTest.php +153 -0
- package/server/tests/DriverResourceSerializationTest.php +245 -0
- package/server/tests/DriverSchedulingTraitContractsTest.php +259 -0
- package/server/tests/EventContractsTest.php +1259 -0
- package/server/tests/ExceptionContractsTest.php +81 -0
- package/server/tests/ExpansionContractsTest.php +242 -0
- package/server/tests/ExportCoverageTest.php +116 -0
- package/server/tests/Feature/Http/Api/ContactControllerPhotoAndDeleteTest.php +199 -0
- package/server/tests/Feature/Http/Api/CustomerControllerHelperSeamsTest.php +831 -0
- package/server/tests/Feature/Http/Api/DeviceControllerContractsTest.php +347 -0
- package/server/tests/Feature/Http/Api/DeviceControllerCrudTest.php +176 -0
- package/server/tests/Feature/Http/Api/DriverControllerAuthFlowsTest.php +451 -0
- package/server/tests/Feature/Http/Api/DriverControllerHelpersTest.php +240 -0
- package/server/tests/Feature/Http/Api/DriverControllerLookupTest.php +186 -0
- package/server/tests/Feature/Http/Api/DriverControllerOrganizationsTest.php +112 -0
- package/server/tests/Feature/Http/Api/DriverControllerSessionHelpersTest.php +207 -0
- package/server/tests/Feature/Http/Api/DriverControllerSwitchOrgAndGeofenceTest.php +329 -0
- package/server/tests/Feature/Http/Api/DriverControllerTrackTest.php +383 -0
- package/server/tests/Feature/Http/Api/EntityControllerHelpersTest.php +150 -0
- package/server/tests/Feature/Http/Api/FuelTransactionControllerContractsTest.php +352 -0
- package/server/tests/Feature/Http/Api/GeofenceControllerContractsTest.php +364 -0
- package/server/tests/Feature/Http/Api/LabelControllerSubjectsTest.php +148 -0
- package/server/tests/Feature/Http/Api/OrderConfigControllerTest.php +112 -0
- package/server/tests/Feature/Http/Api/OrderControllerCreateTest.php +279 -0
- package/server/tests/Feature/Http/Api/OrderControllerIntegratedVendorTest.php +295 -0
- package/server/tests/Feature/Http/Api/OrderControllerLifecycleActionsTest.php +279 -0
- package/server/tests/Feature/Http/Api/OrderControllerLookupHelpersTest.php +207 -0
- package/server/tests/Feature/Http/Api/OrderControllerNearbyFiltersTest.php +282 -0
- package/server/tests/Feature/Http/Api/OrderControllerPersistenceHelpersTest.php +216 -0
- package/server/tests/Feature/Http/Api/OrderControllerQueryFiltersTest.php +184 -0
- package/server/tests/Feature/Http/Api/OrderControllerStartActivityTest.php +663 -0
- package/server/tests/Feature/Http/Api/PayloadControllerHelpersTest.php +134 -0
- package/server/tests/Feature/Http/Api/PlaceAndServiceQuoteSeamsTest.php +479 -0
- package/server/tests/Feature/Http/Api/PurchaseRateControllerHelpersTest.php +176 -0
- package/server/tests/Feature/Http/Api/PurchaseRateControllerOrderCreationTest.php +268 -0
- package/server/tests/Feature/Http/Api/SensorControllerCrudTest.php +239 -0
- package/server/tests/Feature/Http/Api/ServiceAreaControllerBorderAndSeamsTest.php +187 -0
- package/server/tests/Feature/Http/Api/ServiceQuoteControllerQueryTest.php +405 -0
- package/server/tests/Feature/Http/Api/ServiceQuoteControllerVendorBridgeTest.php +212 -0
- package/server/tests/Feature/Http/Api/ServiceRateControllerContractsTest.php +263 -0
- package/server/tests/Feature/Http/Api/SmallApiControllerHelpersTest.php +272 -0
- package/server/tests/Feature/Http/Api/TrackingNumberControllerHelpersTest.php +154 -0
- package/server/tests/Feature/Http/Api/TrackingStatusControllerHelpersTest.php +165 -0
- package/server/tests/Feature/Http/Api/VehicleControllerTrackingTest.php +483 -0
- package/server/tests/Feature/Http/Api/WorkOrderControllerContractsTest.php +326 -0
- package/server/tests/Feature/Http/Api/WorkOrderControllerHelpersTest.php +130 -0
- package/server/tests/Feature/Http/Api/ZoneControllerBordersAndSeamsTest.php +294 -0
- package/server/tests/Feature/Http/FleetOpsRouteRegistrationTest.php +189 -0
- package/server/tests/Feature/Http/Internal/AnalyticsControllerSeamsTest.php +53 -0
- package/server/tests/Feature/Http/Internal/ContactControllerContractsTest.php +240 -0
- package/server/tests/Feature/Http/Internal/ContactControllerCustomerGuardsTest.php +128 -0
- package/server/tests/Feature/Http/Internal/ContactControllerEndpointsTest.php +294 -0
- package/server/tests/Feature/Http/Internal/CustomerControllerCredentialsTest.php +196 -0
- package/server/tests/Feature/Http/Internal/DeviceControllerContractsTest.php +370 -0
- package/server/tests/Feature/Http/Internal/DeviceControllerExportAndFiltersTest.php +151 -0
- package/server/tests/Feature/Http/Internal/DriverControllerContractsTest.php +1109 -0
- package/server/tests/Feature/Http/Internal/DriverControllerCreateRecordTest.php +233 -0
- package/server/tests/Feature/Http/Internal/DriverControllerExistingUserAdoptionTest.php +710 -0
- package/server/tests/Feature/Http/Internal/DriverControllerHelpersTest.php +218 -0
- package/server/tests/Feature/Http/Internal/FleetAssignmentsAndTriggersTest.php +198 -0
- package/server/tests/Feature/Http/Internal/FleetOpsLookupControllerDbTest.php +90 -0
- package/server/tests/Feature/Http/Internal/HubControllerTest.php +206 -0
- package/server/tests/Feature/Http/Internal/IssueControllerContractsTest.php +404 -0
- package/server/tests/Feature/Http/Internal/IssueControllerExportImportTest.php +118 -0
- package/server/tests/Feature/Http/Internal/LiveControllerEndpointsTest.php +246 -0
- package/server/tests/Feature/Http/Internal/LiveControllerTest.php +778 -0
- package/server/tests/Feature/Http/Internal/MaintenanceScheduleControllerContractsTest.php +263 -0
- package/server/tests/Feature/Http/Internal/MaintenanceScheduleControllerSurfacesTest.php +214 -0
- package/server/tests/Feature/Http/Internal/MetricsControllerContractsTest.php +249 -0
- package/server/tests/Feature/Http/Internal/MetricsControllerHelpersTest.php +66 -0
- package/server/tests/Feature/Http/Internal/MorphControllerHelpersTest.php +125 -0
- package/server/tests/Feature/Http/Internal/NavigatorControllerHelpersTest.php +201 -0
- package/server/tests/Feature/Http/Internal/OrchestrationControllerContractsTest.php +928 -0
- package/server/tests/Feature/Http/Internal/OrchestrationControllerHelpersTest.php +214 -0
- package/server/tests/Feature/Http/Internal/OrchestrationControllerImportOrdersTest.php +340 -0
- package/server/tests/Feature/Http/Internal/OrderConfigControllerContractsTest.php +314 -0
- package/server/tests/Feature/Http/Internal/OrderControllerActivityFlowsTest.php +663 -0
- package/server/tests/Feature/Http/Internal/OrderControllerCapturePhotoTest.php +507 -0
- package/server/tests/Feature/Http/Internal/OrderControllerContractsTest.php +1742 -0
- package/server/tests/Feature/Http/Internal/OrderControllerCreateRecordTest.php +488 -0
- package/server/tests/Feature/Http/Internal/OrderControllerHelperSeamsTest.php +298 -0
- package/server/tests/Feature/Http/Internal/OrderControllerHelpersTest.php +267 -0
- package/server/tests/Feature/Http/Internal/OrderControllerImportFromFilesTest.php +179 -0
- package/server/tests/Feature/Http/Internal/OrderControllerUpstreamNotFoundTest.php +80 -0
- package/server/tests/Feature/Http/Internal/PaymentControllerPaymentsTest.php +154 -0
- package/server/tests/Feature/Http/Internal/PlaceControllerTest.php +252 -0
- package/server/tests/Feature/Http/Internal/PositionControllerReplayMetricsTest.php +163 -0
- package/server/tests/Feature/Http/Internal/ProofControllerContractsTest.php +219 -0
- package/server/tests/Feature/Http/Internal/SearchControllerEndpointTest.php +151 -0
- package/server/tests/Feature/Http/Internal/ServiceQuoteControllerHelpersTest.php +208 -0
- package/server/tests/Feature/Http/Internal/ServiceQuoteControllerQueryRecordTest.php +217 -0
- package/server/tests/Feature/Http/Internal/ServiceQuoteControllerVendorBridgeTest.php +239 -0
- package/server/tests/Feature/Http/Internal/ServiceQuotePreliminaryQueryTest.php +271 -0
- package/server/tests/Feature/Http/Internal/SettingControllerHelpersTest.php +133 -0
- package/server/tests/Feature/Http/Internal/SmallInternalControllersTest.php +180 -0
- package/server/tests/Feature/Http/Internal/TelematicControllerEndpointsTest.php +417 -0
- package/server/tests/Feature/Http/Internal/VehicleControllerEndpointsTest.php +361 -0
- package/server/tests/Feature/Http/Internal/VendorControllerEndpointsTest.php +203 -0
- package/server/tests/Feature/Http/Internal/WorkOrderAndConfigSurfacesTest.php +289 -0
- package/server/tests/Feature/Http/Internal/WorkOrderControllerContractsTest.php +199 -0
- package/server/tests/Feature/Http/TelematicWebhookIngestTest.php +343 -0
- package/server/tests/Feature/Http/Telematics/TelematicWebhookControllerProcessingTest.php +254 -0
- package/server/tests/FleetOpsSupportContractsTest.php +187 -0
- package/server/tests/FlespiProviderContractsTest.php +244 -0
- package/server/tests/FlowResourceTest.php +295 -0
- package/server/tests/FuelProviderConnectionControllerContractsTest.php +303 -0
- package/server/tests/FuelProviderImplementationTest.php +753 -0
- package/server/tests/FuelProviderRegistryTest.php +7 -9
- package/server/tests/FuelProviderResourceContractsTest.php +171 -0
- package/server/tests/FuelProviderTransactionControllerContractsTest.php +181 -0
- package/server/tests/GeofenceIntersectionServiceContractsTest.php +164 -0
- package/server/tests/HOSConstraintContractsTest.php +128 -0
- package/server/tests/HubAndGettingStartedContractsTest.php +158 -0
- package/server/tests/ImportContractsTest.php +191 -0
- package/server/tests/InternalCustomerControllerContractsTest.php +238 -0
- package/server/tests/InternalFleetControllerContractsTest.php +389 -0
- package/server/tests/InternalImportExportControllerContractsTest.php +289 -0
- package/server/tests/InternalMetricsControllerContractsTest.php +69 -0
- package/server/tests/InternalPlaceWorkOrderControllerContractsTest.php +207 -0
- package/server/tests/InternalServiceQuoteCheckoutControllerContractsTest.php +470 -0
- package/server/tests/InternalVendorControllerContractsTest.php +331 -0
- package/server/tests/InventoryTelemetryModelContractsTest.php +516 -0
- package/server/tests/IssueTimelineContractsTest.php +191 -0
- package/server/tests/LabelPdfRenderingTest.php +57 -0
- package/server/tests/LalamoveIntegrationContractsTest.php +167 -0
- package/server/tests/LiveOrderQueryTest.php +140 -19
- package/server/tests/LookupAndGeocoderControllerContractsTest.php +357 -0
- package/server/tests/MaintainableTraitContractsTest.php +245 -0
- package/server/tests/MaintenanceScheduleControllerContractsTest.php +101 -0
- package/server/tests/MaintenanceWarrantyContractsTest.php +237 -0
- package/server/tests/ManifestControllerContractsTest.php +310 -0
- package/server/tests/MetricsRegistryTest.php +596 -10
- package/server/tests/MiddlewareContractsTest.php +150 -0
- package/server/tests/ModelAccessorContractsTest.php +3201 -0
- package/server/tests/MorphControllerContractsTest.php +410 -0
- package/server/tests/NavigatorControllerContractsTest.php +206 -0
- package/server/tests/NotificationAndMailContractsTest.php +677 -0
- package/server/tests/ObserverContractsTest.php +1414 -0
- package/server/tests/OperationalAlgorithmContractsTest.php +852 -0
- package/server/tests/OperationsMonitorEndpointTest.php +2 -1
- package/server/tests/OrchestrationPayloadBuilderTest.php +87 -0
- package/server/tests/OrderActivityFlowRegressionTest.php +354 -7
- package/server/tests/OrderDispatchListenerContractsTest.php +577 -0
- package/server/tests/OrderFilterExecutionTest.php +244 -0
- package/server/tests/OrderQueuedClosureRegressionTest.php +2 -1
- package/server/tests/PaymentControllerContractsTest.php +199 -0
- package/server/tests/PointResolutionTest.php +54 -0
- package/server/tests/ProcessAllocationJobContractsTest.php +224 -0
- package/server/tests/ProofAndSensorControllerContractsTest.php +44 -0
- package/server/tests/ProviderContractsTest.php +409 -0
- package/server/tests/PublicApiControllerInputContractsTest.php +294 -0
- package/server/tests/QueueJobContractsTest.php +764 -0
- package/server/tests/ReportSchemaContractsTest.php +271 -0
- package/server/tests/RequestContractsTest.php +966 -0
- package/server/tests/RouteRegistrationExecutionTest.php +178 -0
- package/server/tests/RouteSequencingEngineTest.php +179 -0
- package/server/tests/RulesAndCastsTest.php +246 -0
- package/server/tests/SamsaraProviderContractsTest.php +272 -0
- package/server/tests/SearchControllerContractsTest.php +311 -0
- package/server/tests/ServiceAreaZoneApiShapeTest.php +8 -9
- package/server/tests/ServiceRateAlgorithmWeightVariablesTest.php +1 -1
- package/server/tests/ServiceRateRouteValidationTest.php +76 -0
- package/server/tests/SettingControllerContractsTest.php +410 -0
- package/server/tests/SmallControllerContractsTest.php +456 -0
- package/server/tests/SupportAnalyticsCustomerAuthContractsTest.php +221 -0
- package/server/tests/SupportJobAndAiCoverageTest.php +812 -0
- package/server/tests/SupportServiceContractsTest.php +287 -0
- package/server/tests/SupportValueObjectsTest.php +155 -0
- package/server/tests/TelematicControllerContractsTest.php +185 -0
- package/server/tests/TelematicProviderRegistryTest.php +167 -0
- package/server/tests/TelematicServiceHelperContractsTest.php +315 -0
- package/server/tests/TelematicWebhookControllerContractsTest.php +253 -0
- package/server/tests/TelematicsHardeningTest.php +666 -105
- package/server/tests/TrackingIntelligenceTest.php +709 -26
- package/server/tests/TrackingNumberTraitContractsTest.php +106 -0
- package/server/tests/Unit/Casts/SpatialCastBranchesTest.php +75 -0
- package/server/tests/Unit/Console/AssignCustomerRolesCommandTest.php +102 -0
- package/server/tests/Unit/Console/AssignDriverRolesCommandTest.php +113 -0
- package/server/tests/Unit/Console/Commands/FixLegacyOrderConfigsHelpersTest.php +108 -0
- package/server/tests/Unit/Console/Commands/ProcessOperationalAlertsCommandTest.php +265 -0
- package/server/tests/Unit/Console/Commands/ReplayVehicleLocationsCommandTest.php +320 -0
- package/server/tests/Unit/Console/Commands/SimulateGeofenceEventsCommandTest.php +207 -0
- package/server/tests/Unit/Console/FixCommandsAndMaintenanceControllerTest.php +256 -0
- package/server/tests/Unit/Console/FleetOpsCommandsTest.php +198 -0
- package/server/tests/Unit/Console/ReplayVehicleLocationsCommandTest.php +252 -0
- package/server/tests/Unit/Console/SendMaintenanceRemindersTest.php +212 -0
- package/server/tests/Unit/Console/SimulateGeofenceEventsCommandTest.php +232 -0
- package/server/tests/Unit/Console/SyncTelematicsCommandTest.php +136 -0
- package/server/tests/Unit/Constraints/HOSConstraintTest.php +158 -0
- package/server/tests/Unit/Events/EventModelRecordTest.php +93 -0
- package/server/tests/Unit/Events/OrderDispatchFailedTest.php +34 -0
- package/server/tests/Unit/Exports/ExportCollectionsTest.php +142 -0
- package/server/tests/Unit/Exports/OperationalExportMappingTest.php +651 -0
- package/server/tests/Unit/Exports/VehicleExportTest.php +284 -0
- package/server/tests/Unit/Flow/EventFiringTest.php +95 -0
- package/server/tests/Unit/Http/Api/QueryWithRequestSeamsTest.php +198 -0
- package/server/tests/Unit/Http/Api/SensorInputTest.php +95 -0
- package/server/tests/Unit/Http/Filter/DeviceFilterTest.php +199 -0
- package/server/tests/Unit/Http/Filter/EmptyValueGuardsTest.php +66 -0
- package/server/tests/Unit/Http/Filter/FilterDateRangesTest.php +72 -0
- package/server/tests/Unit/Http/Filter/FuelProviderTransactionFilterTest.php +172 -0
- package/server/tests/Unit/Http/Filter/InternalRelationUuidLookupTest.php +135 -0
- package/server/tests/Unit/Http/Filter/IssueFilterTest.php +129 -0
- package/server/tests/Unit/Http/Filter/PartFilterTest.php +173 -0
- package/server/tests/Unit/Http/Internal/ControllerDelegationSeamsTest.php +136 -0
- package/server/tests/Unit/Http/Internal/ControllerExcelSeamsTest.php +89 -0
- package/server/tests/Unit/Http/Middleware/SetupDriverSessionTest.php +32 -0
- package/server/tests/Unit/Http/Requests/CreateFuelReportRequestTest.php +47 -0
- package/server/tests/Unit/Http/Requests/FleetActionRequestTest.php +80 -0
- package/server/tests/Unit/Http/Requests/RequestAuthorizationTest.php +50 -0
- package/server/tests/Unit/Http/Resources/CustomerResourceTest.php +108 -0
- package/server/tests/Unit/Http/Resources/EntityCustomerTypeTest.php +35 -0
- package/server/tests/Unit/Http/Resources/FleetResourceTest.php +102 -0
- package/server/tests/Unit/Http/Resources/IndexOrderResourceTest.php +210 -0
- package/server/tests/Unit/Http/Resources/IndexVehicleResourceTest.php +194 -0
- package/server/tests/Unit/Http/Resources/MaintenanceResourcesTest.php +182 -0
- package/server/tests/Unit/Http/Resources/OrderAndDriverResourceTest.php +121 -0
- package/server/tests/Unit/Http/Resources/OrderConfigResourceTest.php +47 -0
- package/server/tests/Unit/Http/Resources/PayloadResourceTest.php +111 -0
- package/server/tests/Unit/Http/Resources/RelationResourceFallbacksTest.php +32 -0
- package/server/tests/Unit/Http/Resources/ResourceRelationResolutionTest.php +55 -0
- package/server/tests/Unit/Http/Resources/TrackingNumberResourceTest.php +174 -0
- package/server/tests/Unit/Http/Resources/WaypointResourceTest.php +295 -0
- package/server/tests/Unit/Http/Resources/WorkOrderResourceTest.php +164 -0
- package/server/tests/Unit/Imports/ImportDelegationTest.php +151 -0
- package/server/tests/Unit/Integrations/Lalamove/LalamoveDeliveryStopTest.php +79 -0
- package/server/tests/Unit/Integrations/Lalamove/LalamoveLifecycleTest.php +211 -0
- package/server/tests/Unit/Integrations/Lalamove/LalamoveQuoteAndServiceOrderTest.php +381 -0
- package/server/tests/Unit/Integrations/Lalamove/LalamoveServiceTypeTest.php +51 -0
- package/server/tests/Unit/Integrations/LalamoveQuotationTest.php +194 -0
- package/server/tests/Unit/Integrations/LalamoveResponseHandlingTest.php +58 -0
- package/server/tests/Unit/Jobs/GeofenceDwellAndBulkNotifyTest.php +183 -0
- package/server/tests/Unit/Jobs/ReplayPositionsTest.php +57 -0
- package/server/tests/Unit/Jobs/SimulateWaypointReachedTest.php +92 -0
- package/server/tests/Unit/Listeners/HandleGeofenceEnteredTest.php +256 -0
- package/server/tests/Unit/Listeners/HandleOrderDispatchFailedListenerTest.php +101 -0
- package/server/tests/Unit/Listeners/HandleOrderDispatchedConcreteTest.php +203 -0
- package/server/tests/Unit/Listeners/HandleOrderDispatchedHelpersTest.php +186 -0
- package/server/tests/Unit/Listeners/HandleUserRemovedFromCompanyTest.php +65 -0
- package/server/tests/Unit/Listeners/ListenerDelegationSeamsTest.php +83 -0
- package/server/tests/Unit/Models/AssetTest.php +469 -0
- package/server/tests/Unit/Models/ContactCustomerUserTest.php +370 -0
- package/server/tests/Unit/Models/ContactTest.php +577 -0
- package/server/tests/Unit/Models/DeviceEventTest.php +481 -0
- package/server/tests/Unit/Models/DeviceLastPositionDefaultTest.php +128 -0
- package/server/tests/Unit/Models/DriverModelHelpersTest.php +268 -0
- package/server/tests/Unit/Models/DriverTest.php +401 -0
- package/server/tests/Unit/Models/EntityTest.php +171 -0
- package/server/tests/Unit/Models/EquipmentTest.php +434 -0
- package/server/tests/Unit/Models/FleetTest.php +153 -0
- package/server/tests/Unit/Models/FuelProviderTransactionTest.php +82 -0
- package/server/tests/Unit/Models/FuelReportImportAndLabelsTest.php +193 -0
- package/server/tests/Unit/Models/ImportRowFallbackSeamsTest.php +100 -0
- package/server/tests/Unit/Models/IntegratedVendorLifecycleTest.php +203 -0
- package/server/tests/Unit/Models/IntegratedVendorTest.php +135 -0
- package/server/tests/Unit/Models/IssueTest.php +160 -0
- package/server/tests/Unit/Models/MaintenanceScheduleTest.php +319 -0
- package/server/tests/Unit/Models/MaintenanceTest.php +277 -0
- package/server/tests/Unit/Models/MaintenanceWorkOrderImportTest.php +161 -0
- package/server/tests/Unit/Models/ManifestStopTest.php +121 -0
- package/server/tests/Unit/Models/ManifestTest.php +163 -0
- package/server/tests/Unit/Models/ModelLookupFallbackSeamsTest.php +149 -0
- package/server/tests/Unit/Models/OrderConfigTest.php +341 -0
- package/server/tests/Unit/Models/OrderDynamicContractsTest.php +190 -0
- package/server/tests/Unit/Models/OrderPayloadConfigAndDistanceTest.php +426 -0
- package/server/tests/Unit/Models/OrderPayloadRouteTest.php +227 -0
- package/server/tests/Unit/Models/OrderPurchaseAndDriversTest.php +188 -0
- package/server/tests/Unit/Models/OrderTest.php +917 -0
- package/server/tests/Unit/Models/PartTest.php +399 -0
- package/server/tests/Unit/Models/PayloadTest.php +710 -0
- package/server/tests/Unit/Models/PayloadWaypointsAndEntitiesTest.php +317 -0
- package/server/tests/Unit/Models/PlaceCreationAndImportTest.php +384 -0
- package/server/tests/Unit/Models/PlaceGeocodingResultsTest.php +253 -0
- package/server/tests/Unit/Models/PlaceSharedAndGeocodingTest.php +271 -0
- package/server/tests/Unit/Models/PlaceTest.php +589 -0
- package/server/tests/Unit/Models/PositionTest.php +49 -0
- package/server/tests/Unit/Models/RouteTest.php +55 -0
- package/server/tests/Unit/Models/SensorReadingsTest.php +168 -0
- package/server/tests/Unit/Models/SensorTest.php +284 -0
- package/server/tests/Unit/Models/ServiceAreaGeometryTest.php +129 -0
- package/server/tests/Unit/Models/ServiceAreaTest.php +125 -0
- package/server/tests/Unit/Models/ServiceQuoteTest.php +617 -0
- package/server/tests/Unit/Models/ServiceRateFeeTest.php +73 -0
- package/server/tests/Unit/Models/ServiceRatePersistenceAndServicabilityTest.php +428 -0
- package/server/tests/Unit/Models/ServiceRateTest.php +533 -0
- package/server/tests/Unit/Models/SmallModelSurfacesTest.php +294 -0
- package/server/tests/Unit/Models/TrackingNumberTest.php +199 -0
- package/server/tests/Unit/Models/TrackingStatusTest.php +131 -0
- package/server/tests/Unit/Models/VehicleDeviceTest.php +115 -0
- package/server/tests/Unit/Models/VehiclePositionsAndImportTest.php +220 -0
- package/server/tests/Unit/Models/VehicleTest.php +266 -0
- package/server/tests/Unit/Models/VendorRelationsAndImportTest.php +107 -0
- package/server/tests/Unit/Models/WarrantyTest.php +187 -0
- package/server/tests/Unit/Models/WaypointTest.php +366 -0
- package/server/tests/Unit/Models/WorkOrderTest.php +272 -0
- package/server/tests/Unit/Models/ZoneTest.php +83 -0
- package/server/tests/Unit/Notifications/MonitoringNotificationsTest.php +136 -0
- package/server/tests/Unit/Notifications/OrderAssignedChannelsTest.php +53 -0
- package/server/tests/Unit/Notifications/OrderDispatchedChannelsTest.php +81 -0
- package/server/tests/Unit/Notifications/OrderFailedChannelsTest.php +73 -0
- package/server/tests/Unit/Notifications/OrderPingChannelsTest.php +69 -0
- package/server/tests/Unit/Notifications/TerminalOrderNotificationsTest.php +185 -0
- package/server/tests/Unit/Observers/FleetOpsCompanyUserAndServiceAreaObserversTest.php +133 -0
- package/server/tests/Unit/Observers/ObserverHelperExecutionTest.php +135 -0
- package/server/tests/Unit/Observers/ObserverListenerSeamsTest.php +267 -0
- package/server/tests/Unit/Observers/PurchaseRateObserverAndOrderJobsTest.php +169 -0
- package/server/tests/Unit/Orchestration/Engines/DriverAssignmentEngineTest.php +393 -0
- package/server/tests/Unit/Orchestration/Engines/VroomOrchestrationEngineLifecycleTest.php +397 -0
- package/server/tests/Unit/Orchestration/OrchestrationEngineRegistryTest.php +45 -0
- package/server/tests/Unit/Orchestration/VroomEngineTransportAndSettingsTest.php +253 -0
- package/server/tests/Unit/Providers/FleetOpsAiRegistrationTest.php +59 -0
- package/server/tests/Unit/Rules/ResolvableVehicleTest.php +85 -0
- package/server/tests/Unit/Support/Ai/AssetStatusCapabilityQueriesTest.php +120 -0
- package/server/tests/Unit/Support/Ai/Capabilities/CreateOrderPreviewCapabilityTest.php +385 -0
- package/server/tests/Unit/Support/Ai/Capabilities/OrderInsightsCapabilityTest.php +226 -0
- package/server/tests/Unit/Support/Ai/Capabilities/SearchResourcesCapabilityTest.php +237 -0
- package/server/tests/Unit/Support/AiCapabilityPermissionsTest.php +124 -0
- package/server/tests/Unit/Support/AlgoEdgeBranchesTest.php +24 -0
- package/server/tests/Unit/Support/Analytics/GeofenceViolationsTest.php +109 -0
- package/server/tests/Unit/Support/Analytics/LiveFleetTest.php +205 -0
- package/server/tests/Unit/Support/Analytics/MaintenanceOverviewTest.php +236 -0
- package/server/tests/Unit/Support/Analytics/OnTimeDeliveryAndTopDriversTest.php +250 -0
- package/server/tests/Unit/Support/CreateOrderPreviewDraftingTest.php +235 -0
- package/server/tests/Unit/Support/CustomerAuthTest.php +132 -0
- package/server/tests/Unit/Support/FuelEfficiencyAndCanceledHandlersTest.php +164 -0
- package/server/tests/Unit/Support/FuelProviderRegistryResolutionTest.php +51 -0
- package/server/tests/Unit/Support/FuelProviderServiceMatchingTest.php +280 -0
- package/server/tests/Unit/Support/GeocodingInjectedClientTest.php +268 -0
- package/server/tests/Unit/Support/GeocodingLocateTest.php +32 -0
- package/server/tests/Unit/Support/GeofenceIntersectionServiceTest.php +188 -0
- package/server/tests/Unit/Support/GettingStartedTest.php +164 -0
- package/server/tests/Unit/Support/GuardReturnSeamsTest.php +172 -0
- package/server/tests/Unit/Support/IntegratedVendorsResolverTest.php +250 -0
- package/server/tests/Unit/Support/IssuesInsightsAndAllocationJobTest.php +156 -0
- package/server/tests/Unit/Support/MagicAccessorSeamsTest.php +54 -0
- package/server/tests/Unit/Support/MaintainableAndOperationalAlertsTest.php +215 -0
- package/server/tests/Unit/Support/Metrics/AvgOrderValueMetricTest.php +308 -0
- package/server/tests/Unit/Support/Metrics/CountMetricsTest.php +280 -0
- package/server/tests/Unit/Support/Metrics/FuelCostsMetricTest.php +102 -0
- package/server/tests/Unit/Support/Metrics/MetricQuerySeamsTest.php +129 -0
- package/server/tests/Unit/Support/Metrics/OrdersScheduledMetricTest.php +146 -0
- package/server/tests/Unit/Support/MoreQuerySeamsTest.php +410 -0
- package/server/tests/Unit/Support/OperationalQueryDistributionTest.php +152 -0
- package/server/tests/Unit/Support/OperationsPulseTest.php +130 -0
- package/server/tests/Unit/Support/OptimizeOrderRouteCapabilityTest.php +147 -0
- package/server/tests/Unit/Support/OrchestrationPayloadBuilderTest.php +135 -0
- package/server/tests/Unit/Support/OrchestrationRouteAndVehicleTasksTest.php +254 -0
- package/server/tests/Unit/Support/OsrmProofAndIssueFilterTest.php +247 -0
- package/server/tests/Unit/Support/PetroAppFuelProviderTest.php +165 -0
- package/server/tests/Unit/Support/PlaceSearchRankingTest.php +191 -0
- package/server/tests/Unit/Support/QuerySeamsTest.php +309 -0
- package/server/tests/Unit/Support/ResolvesOrderServiceStopsDbTest.php +303 -0
- package/server/tests/Unit/Support/ResolvesOrderServiceStopsTest.php +382 -0
- package/server/tests/Unit/Support/SkipAndFallbackGuardsTest.php +70 -0
- package/server/tests/Unit/Support/TelematicCredentialResolutionTest.php +31 -0
- package/server/tests/Unit/Support/TelematicServiceTest.php +256 -0
- package/server/tests/Unit/Support/Telematics/Providers/AbstractProviderTest.php +154 -0
- package/server/tests/Unit/Support/Telematics/Providers/AfaqyProviderTest.php +191 -0
- package/server/tests/Unit/Support/Telematics/Providers/AfaqyProviderTransportTest.php +138 -0
- package/server/tests/Unit/Support/Telematics/Providers/GeotabProviderTest.php +329 -0
- package/server/tests/Unit/Support/Telematics/Providers/ProviderTransportSeamsTest.php +133 -0
- package/server/tests/Unit/Support/Telematics/Providers/SafeeProviderTest.php +487 -0
- package/server/tests/Unit/Support/Telematics/TelematicProviderRegistryTest.php +39 -0
- package/server/tests/Unit/Support/Telematics/TelematicServiceLifecycleTest.php +711 -0
- package/server/tests/Unit/Support/Telematics/TelematicServiceTelemetryTest.php +364 -0
- package/server/tests/Unit/Support/UtilsAdditionalTest.php +256 -0
- package/server/tests/Unit/Support/UtilsGeoMatrixAndVendorTest.php +382 -0
- package/server/tests/Unit/Tracking/TrackingContextTest.php +114 -0
- package/server/tests/Unit/Tracking/TrackingIntelligenceAndContextTest.php +477 -0
- package/server/tests/Unit/Tracking/TrackingProviderManagerFallbacksTest.php +208 -0
- package/server/tests/Unit/Traits/HasTrackingNumberTest.php +303 -0
- package/server/tests/Unit/Traits/PayloadAccessorsTest.php +150 -0
- package/server/tests/UtilsContractsTest.php +244 -0
- package/server/tests/VehicleControllerHelperContractsTest.php +488 -0
- package/server/tests/VehicleDataParsingTest.php +45 -0
- package/server/tests/VehicleDriverAssignmentTest.php +8 -9
- package/server/tests/VehicleResourceContractsTest.php +313 -0
- package/translations/bg-bg.yaml +2 -0
- package/translations/en-us.yaml +2 -0
- package/translations/es-pa.yaml +2 -0
- package/translations/fr-fr.yaml +2 -0
- package/translations/mn-mn.yaml +2 -0
- package/translations/pt-br.yaml +2 -0
- package/translations/ru-ru.yaml +2 -0
- package/server/src/Http/Controllers/Api/v1/OrganizationController.php +0 -45
- package/server/tests/DeviceFilterTest.php +0 -45
- package/server/tests/LiveControllerViewportTest.php +0 -60
|
@@ -44,7 +44,7 @@ class VendorController extends FleetOpsController
|
|
|
44
44
|
*/
|
|
45
45
|
public function getAsFacilitator($id)
|
|
46
46
|
{
|
|
47
|
-
$vendor =
|
|
47
|
+
$vendor = $this->findVendorWithTrashedByUuid($id);
|
|
48
48
|
|
|
49
49
|
if (!$vendor) {
|
|
50
50
|
return response()->error('Facilitator not found.');
|
|
@@ -62,7 +62,7 @@ class VendorController extends FleetOpsController
|
|
|
62
62
|
*/
|
|
63
63
|
public function getAsCustomer($id)
|
|
64
64
|
{
|
|
65
|
-
$vendor =
|
|
65
|
+
$vendor = $this->findVendorWithTrashedByUuid($id);
|
|
66
66
|
|
|
67
67
|
if (!$vendor) {
|
|
68
68
|
return response()->error('Customer not found.');
|
|
@@ -94,14 +94,7 @@ class VendorController extends FleetOpsController
|
|
|
94
94
|
*/
|
|
95
95
|
public function statuses()
|
|
96
96
|
{
|
|
97
|
-
$statuses =
|
|
98
|
-
->select('status')
|
|
99
|
-
->where('company_uuid', session('company'))
|
|
100
|
-
->distinct()
|
|
101
|
-
->get()
|
|
102
|
-
->pluck('status')
|
|
103
|
-
->filter()
|
|
104
|
-
->values();
|
|
97
|
+
$statuses = $this->vendorStatuses();
|
|
105
98
|
|
|
106
99
|
return response()->json($statuses);
|
|
107
100
|
}
|
|
@@ -119,8 +112,8 @@ class VendorController extends FleetOpsController
|
|
|
119
112
|
|
|
120
113
|
foreach ($files as $file) {
|
|
121
114
|
try {
|
|
122
|
-
$import =
|
|
123
|
-
|
|
115
|
+
$import = $this->newVendorImport();
|
|
116
|
+
$this->importVendorFile($import, $file->path, $disk);
|
|
124
117
|
$importedCount += $import->imported;
|
|
125
118
|
} catch (\Throwable $e) {
|
|
126
119
|
return response()->error('Invalid file, unable to proccess.');
|
|
@@ -143,13 +136,13 @@ class VendorController extends FleetOpsController
|
|
|
143
136
|
}
|
|
144
137
|
|
|
145
138
|
// Find driver
|
|
146
|
-
$driver =
|
|
139
|
+
$driver = $this->findDriverByUuid($request->input('driver'));
|
|
147
140
|
if (!$driver) {
|
|
148
141
|
return response()->error('Selected driver cannot be found.');
|
|
149
142
|
}
|
|
150
143
|
|
|
151
144
|
// Validate vendor
|
|
152
|
-
$vendor =
|
|
145
|
+
$vendor = $this->findVendorByUuid($id);
|
|
153
146
|
if (!$vendor) {
|
|
154
147
|
return response()->error('Vendor attempting to assign driver to is invalid.');
|
|
155
148
|
}
|
|
@@ -175,13 +168,13 @@ class VendorController extends FleetOpsController
|
|
|
175
168
|
}
|
|
176
169
|
|
|
177
170
|
// Find driver
|
|
178
|
-
$driver =
|
|
171
|
+
$driver = $this->findDriverByUuid($request->input('driver'));
|
|
179
172
|
if (!$driver) {
|
|
180
173
|
return response()->error('Selected driver cannot be found.');
|
|
181
174
|
}
|
|
182
175
|
|
|
183
176
|
// Validate vendor
|
|
184
|
-
$vendor =
|
|
177
|
+
$vendor = $this->findVendorByUuid($id);
|
|
185
178
|
if (!$vendor) {
|
|
186
179
|
return response()->error('Vendor attempting to remove driver from is invalid.');
|
|
187
180
|
}
|
|
@@ -196,12 +189,9 @@ class VendorController extends FleetOpsController
|
|
|
196
189
|
|
|
197
190
|
public function vendorPersonnels(string $vendorId)
|
|
198
191
|
{
|
|
199
|
-
$vendor =
|
|
192
|
+
$vendor = $this->findVendorByIdOrFail($vendorId);
|
|
200
193
|
|
|
201
|
-
$personnels =
|
|
202
|
-
->with('contact')
|
|
203
|
-
->latest()
|
|
204
|
-
->get()
|
|
194
|
+
$personnels = $this->queryVendorPersonnel($vendor->uuid)
|
|
205
195
|
->map(fn (VendorPersonnel $personnel) => $this->vendorPersonnelPayload($personnel));
|
|
206
196
|
|
|
207
197
|
return response()->json(['personnels' => $personnels->values()]);
|
|
@@ -209,10 +199,10 @@ class VendorController extends FleetOpsController
|
|
|
209
199
|
|
|
210
200
|
public function addVendorPersonnel(Request $request, string $vendorId)
|
|
211
201
|
{
|
|
212
|
-
$vendor =
|
|
202
|
+
$vendor = $this->findVendorByIdOrFail($vendorId);
|
|
213
203
|
$contact = $this->resolveOrCreatePersonnelContact($request);
|
|
214
204
|
|
|
215
|
-
$personnel =
|
|
205
|
+
$personnel = $this->updateOrCreateVendorPersonnel(
|
|
216
206
|
['vendor_uuid' => $vendor->uuid, 'contact_uuid' => $contact->uuid],
|
|
217
207
|
[
|
|
218
208
|
'role' => $request->input('role', 'member'),
|
|
@@ -232,10 +222,10 @@ class VendorController extends FleetOpsController
|
|
|
232
222
|
|
|
233
223
|
public function removeVendorPersonnel(string $vendorId, string $contactId)
|
|
234
224
|
{
|
|
235
|
-
$vendor =
|
|
236
|
-
$contact =
|
|
225
|
+
$vendor = $this->findVendorByIdOrFail($vendorId);
|
|
226
|
+
$contact = $this->findContactByIdOrFail($contactId);
|
|
237
227
|
|
|
238
|
-
|
|
228
|
+
$this->deleteVendorPersonnel($vendor->uuid, $contact->uuid);
|
|
239
229
|
|
|
240
230
|
return response()->json(['status' => 'ok']);
|
|
241
231
|
}
|
|
@@ -244,14 +234,10 @@ class VendorController extends FleetOpsController
|
|
|
244
234
|
{
|
|
245
235
|
$contactId = $request->input('contact');
|
|
246
236
|
if ($contactId) {
|
|
247
|
-
return
|
|
248
|
-
->where(function ($query) use ($contactId) {
|
|
249
|
-
$query->where('uuid', $contactId)->orWhere('public_id', $contactId);
|
|
250
|
-
})
|
|
251
|
-
->firstOrFail();
|
|
237
|
+
return $this->findPersonnelContact($contactId);
|
|
252
238
|
}
|
|
253
239
|
|
|
254
|
-
return
|
|
240
|
+
return $this->createPersonnelContact([
|
|
255
241
|
'company_uuid' => session('company'),
|
|
256
242
|
'name' => $request->input('name'),
|
|
257
243
|
'email' => $request->input('email'),
|
|
@@ -276,7 +262,91 @@ class VendorController extends FleetOpsController
|
|
|
276
262
|
'role' => $personnel->role ?? 'member',
|
|
277
263
|
'status' => $personnel->status ?? 'active',
|
|
278
264
|
'invited_by_uuid' => $personnel->invited_by_uuid,
|
|
279
|
-
'contact' => $contact ? (
|
|
265
|
+
'contact' => $contact ? $this->contactResourcePayload($contact) : null,
|
|
280
266
|
];
|
|
281
267
|
}
|
|
268
|
+
|
|
269
|
+
protected function contactResourcePayload(Contact $contact): array
|
|
270
|
+
{
|
|
271
|
+
return (new ContactResource($contact))->resolve();
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
protected function findVendorWithTrashedByUuid(string $id): ?Vendor
|
|
275
|
+
{
|
|
276
|
+
return Vendor::where('uuid', $id)->withTrashed()->first();
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
protected function vendorStatuses()
|
|
280
|
+
{
|
|
281
|
+
return DB::table('vendors')
|
|
282
|
+
->select('status')
|
|
283
|
+
->where('company_uuid', session('company'))
|
|
284
|
+
->distinct()
|
|
285
|
+
->get()
|
|
286
|
+
->pluck('status')
|
|
287
|
+
->filter()
|
|
288
|
+
->values();
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
protected function newVendorImport(): mixed
|
|
292
|
+
{
|
|
293
|
+
return new VendorImport();
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
protected function importVendorFile(mixed $import, string $path, string $disk): void
|
|
297
|
+
{
|
|
298
|
+
Excel::import($import, $path, $disk);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
protected function findDriverByUuid(string $uuid): ?Driver
|
|
302
|
+
{
|
|
303
|
+
return Driver::where('uuid', $uuid)->first();
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
protected function findVendorByUuid(string $uuid): ?Vendor
|
|
307
|
+
{
|
|
308
|
+
return Vendor::where('uuid', $uuid)->first();
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
protected function findVendorByIdOrFail(string $id): Vendor
|
|
312
|
+
{
|
|
313
|
+
return Vendor::findByIdOrFail($id);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
protected function findContactByIdOrFail(string $id): Contact
|
|
317
|
+
{
|
|
318
|
+
return Contact::findByIdOrFail($id);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
protected function queryVendorPersonnel(string $vendorUuid)
|
|
322
|
+
{
|
|
323
|
+
return VendorPersonnel::where('vendor_uuid', $vendorUuid)
|
|
324
|
+
->with('contact')
|
|
325
|
+
->latest()
|
|
326
|
+
->get();
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
protected function updateOrCreateVendorPersonnel(array $where, array $attributes): VendorPersonnel
|
|
330
|
+
{
|
|
331
|
+
return VendorPersonnel::updateOrCreate($where, $attributes);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
protected function deleteVendorPersonnel(string $vendorUuid, string $contactUuid): void
|
|
335
|
+
{
|
|
336
|
+
VendorPersonnel::where(['vendor_uuid' => $vendorUuid, 'contact_uuid' => $contactUuid])->delete();
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
protected function findPersonnelContact(string $contactId): Contact
|
|
340
|
+
{
|
|
341
|
+
return Contact::where('company_uuid', session('company'))
|
|
342
|
+
->where(function ($query) use ($contactId) {
|
|
343
|
+
$query->where('uuid', $contactId)->orWhere('public_id', $contactId);
|
|
344
|
+
})
|
|
345
|
+
->firstOrFail();
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
protected function createPersonnelContact(array $attributes): Contact
|
|
349
|
+
{
|
|
350
|
+
return Contact::create($attributes);
|
|
351
|
+
}
|
|
282
352
|
}
|
|
@@ -34,7 +34,7 @@ class WorkOrderController extends FleetOpsController
|
|
|
34
34
|
$selections = $request->array('selections');
|
|
35
35
|
$fileName = trim(Str::slug('work-orders-' . date('Y-m-d-H:i')) . '.' . $format);
|
|
36
36
|
|
|
37
|
-
return
|
|
37
|
+
return $this->downloadExport(new WorkOrderExport($selections), $fileName);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
/**
|
|
@@ -50,8 +50,8 @@ class WorkOrderController extends FleetOpsController
|
|
|
50
50
|
|
|
51
51
|
foreach ($files as $file) {
|
|
52
52
|
try {
|
|
53
|
-
$import =
|
|
54
|
-
|
|
53
|
+
$import = $this->createImport();
|
|
54
|
+
$this->importFile($import, $file->path, $disk);
|
|
55
55
|
$importedCount += $import->imported;
|
|
56
56
|
} catch (\Throwable $e) {
|
|
57
57
|
return response()->error('Invalid file, unable to process.');
|
|
@@ -61,16 +61,28 @@ class WorkOrderController extends FleetOpsController
|
|
|
61
61
|
return response()->json(['status' => 'ok', 'message' => 'Import completed', 'imported' => $importedCount]);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
protected function downloadExport(WorkOrderExport $export, string $fileName)
|
|
65
|
+
{
|
|
66
|
+
return Excel::download($export, $fileName);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
protected function createImport(): WorkOrderImport
|
|
70
|
+
{
|
|
71
|
+
return new WorkOrderImport();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
protected function importFile(WorkOrderImport $import, string $path, string $disk): void
|
|
75
|
+
{
|
|
76
|
+
Excel::import($import, $path, $disk);
|
|
77
|
+
}
|
|
78
|
+
|
|
64
79
|
/**
|
|
65
80
|
* Send a work order email to the assigned vendor.
|
|
66
81
|
* POST /work-orders/{id}/send.
|
|
67
82
|
*/
|
|
68
83
|
public function sendEmail(string $id): JsonResponse
|
|
69
84
|
{
|
|
70
|
-
$workOrder =
|
|
71
|
-
->orWhere('public_id', $id)
|
|
72
|
-
->with(['assignee', 'target'])
|
|
73
|
-
->firstOrFail();
|
|
85
|
+
$workOrder = $this->workOrderForEmail($id);
|
|
74
86
|
|
|
75
87
|
// Resolve recipient email from the assignee (vendor or contact)
|
|
76
88
|
$assignee = $workOrder->assignee;
|
|
@@ -85,16 +97,34 @@ class WorkOrderController extends FleetOpsController
|
|
|
85
97
|
return response()->json(['error' => 'The assigned vendor has no email address on file.'], 422);
|
|
86
98
|
}
|
|
87
99
|
|
|
88
|
-
|
|
100
|
+
$this->sendWorkOrderDispatchedMail($email, $workOrder);
|
|
89
101
|
|
|
90
|
-
|
|
91
|
-
->performedOn($workOrder)
|
|
92
|
-
->withProperties(['sent_to' => $email])
|
|
93
|
-
->log('Work order emailed to vendor');
|
|
102
|
+
$this->recordWorkOrderSentActivity($workOrder, $email);
|
|
94
103
|
|
|
95
104
|
return response()->json([
|
|
96
105
|
'status' => 'ok',
|
|
97
106
|
'message' => 'Work order successfully sent to ' . $email,
|
|
98
107
|
]);
|
|
99
108
|
}
|
|
109
|
+
|
|
110
|
+
protected function workOrderForEmail(string $id): WorkOrder
|
|
111
|
+
{
|
|
112
|
+
return WorkOrder::where('uuid', $id)
|
|
113
|
+
->orWhere('public_id', $id)
|
|
114
|
+
->with(['assignee', 'target'])
|
|
115
|
+
->firstOrFail();
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
protected function sendWorkOrderDispatchedMail(string $email, WorkOrder $workOrder): void
|
|
119
|
+
{
|
|
120
|
+
Mail::to($email)->send(new WorkOrderDispatched($workOrder));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
protected function recordWorkOrderSentActivity(WorkOrder $workOrder, string $email): void
|
|
124
|
+
{
|
|
125
|
+
activity('work_order_sent')
|
|
126
|
+
->performedOn($workOrder)
|
|
127
|
+
->withProperties(['sent_to' => $email])
|
|
128
|
+
->log('Work order emailed to vendor');
|
|
129
|
+
}
|
|
100
130
|
}
|
|
@@ -172,7 +172,7 @@ class DriverFilter extends Filter
|
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
// if wants to find nearby place or coordinates
|
|
175
|
-
if (Utils::
|
|
175
|
+
if (Utils::isCoordinatesStrict($nearby)) {
|
|
176
176
|
$location = Utils::getPointFromMixed($nearby);
|
|
177
177
|
|
|
178
178
|
$this->builder->whereNotNull('location')->whereRaw('
|
|
@@ -191,7 +191,7 @@ class DriverFilter extends Filter
|
|
|
191
191
|
if ($addedNearbyQuery === false && is_string($nearby)) {
|
|
192
192
|
$place = Place::createFromMixed($nearby, [], false);
|
|
193
193
|
|
|
194
|
-
if ($
|
|
194
|
+
if ($place instanceof Place) {
|
|
195
195
|
$this->builder->whereNotNull('location')->whereRaw('
|
|
196
196
|
ST_Y(location) BETWEEN -90 AND 90
|
|
197
197
|
AND ST_X(location) BETWEEN -180 AND 180
|
|
@@ -354,7 +354,7 @@ class OrderFilter extends Filter
|
|
|
354
354
|
{
|
|
355
355
|
$exclude = Utils::arrayFrom($exclude);
|
|
356
356
|
if (is_array($exclude)) {
|
|
357
|
-
$isUuids =
|
|
357
|
+
$isUuids = collect($exclude)->every(function ($id) {
|
|
358
358
|
return Str::isUuid($id);
|
|
359
359
|
});
|
|
360
360
|
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Http\Filter;
|
|
4
4
|
|
|
5
5
|
use Fleetbase\FleetOps\Models\Vehicle;
|
|
6
|
+
use Fleetbase\FleetOps\Models\Vendor;
|
|
6
7
|
use Fleetbase\FleetOps\Support\Utils;
|
|
7
8
|
use Fleetbase\Http\Filter\Filter;
|
|
9
|
+
use Fleetbase\Support\Http;
|
|
8
10
|
|
|
9
11
|
class VehicleFilter extends Filter
|
|
10
12
|
{
|
|
@@ -74,14 +76,26 @@ class VehicleFilter extends Filter
|
|
|
74
76
|
);
|
|
75
77
|
}
|
|
76
78
|
|
|
77
|
-
public function vendor(?string $
|
|
79
|
+
public function vendor(?string $vendor)
|
|
78
80
|
{
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
if (!$vendor) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
$this->builder->whereIn('vendor_uuid', Vendor::query()
|
|
86
|
+
->where('company_uuid', $this->session->get('company'))
|
|
87
|
+
->where(function ($query) use ($vendor) {
|
|
88
|
+
$query->where('public_id', $vendor);
|
|
89
|
+
|
|
90
|
+
if (in_array('internal_id', (new Vendor())->getFillable())) {
|
|
91
|
+
$query->orWhere('internal_id', $vendor);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (Http::isInternalRequest($this->request)) {
|
|
95
|
+
$query->orWhere('uuid', $vendor);
|
|
96
|
+
}
|
|
97
|
+
})
|
|
98
|
+
->pluck('uuid'));
|
|
85
99
|
}
|
|
86
100
|
|
|
87
101
|
public function driverUuid(?string $driverId)
|
|
@@ -17,7 +17,7 @@ class AuthenticateCustomerToken
|
|
|
17
17
|
{
|
|
18
18
|
public function handle(Request $request, \Closure $next)
|
|
19
19
|
{
|
|
20
|
-
$customer =
|
|
20
|
+
$customer = $this->resolveCustomerFromHeader($request);
|
|
21
21
|
if (!$customer) {
|
|
22
22
|
return response()->apiError('Customer token is missing or invalid.', 401);
|
|
23
23
|
}
|
|
@@ -27,8 +27,18 @@ class AuthenticateCustomerToken
|
|
|
27
27
|
return response()->apiError('Customer does not belong to this company.', 403);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
$this->setCurrentCustomer($customer);
|
|
31
31
|
|
|
32
32
|
return $next($request);
|
|
33
33
|
}
|
|
34
|
+
|
|
35
|
+
protected function resolveCustomerFromHeader(Request $request): mixed
|
|
36
|
+
{
|
|
37
|
+
return CustomerAuth::resolveFromHeader($request);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
protected function setCurrentCustomer(mixed $customer): void
|
|
41
|
+
{
|
|
42
|
+
CustomerAuth::setCurrent($customer);
|
|
43
|
+
}
|
|
34
44
|
}
|
|
@@ -8,20 +8,16 @@ class BulkDispatchRequest extends FleetbaseRequest
|
|
|
8
8
|
{
|
|
9
9
|
/**
|
|
10
10
|
* Determine if the user is authorized to make this request.
|
|
11
|
-
*
|
|
12
|
-
* @return bool
|
|
13
11
|
*/
|
|
14
|
-
public function authorize()
|
|
12
|
+
public function authorize(): bool
|
|
15
13
|
{
|
|
16
14
|
return $this->session()->has('user');
|
|
17
15
|
}
|
|
18
16
|
|
|
19
17
|
/**
|
|
20
18
|
* Get the validation rules that apply to the request.
|
|
21
|
-
*
|
|
22
|
-
* @return array
|
|
23
19
|
*/
|
|
24
|
-
public function rules()
|
|
20
|
+
public function rules(): array
|
|
25
21
|
{
|
|
26
22
|
return [
|
|
27
23
|
'ids' => ['required', 'array'],
|
|
@@ -30,10 +26,8 @@ class BulkDispatchRequest extends FleetbaseRequest
|
|
|
30
26
|
|
|
31
27
|
/**
|
|
32
28
|
* Get the validation rules error messages.
|
|
33
|
-
*
|
|
34
|
-
* @return array
|
|
35
29
|
*/
|
|
36
|
-
public function messages()
|
|
30
|
+
public function messages(): array
|
|
37
31
|
{
|
|
38
32
|
return [
|
|
39
33
|
'ids.required' => 'Please provide a resource ID.',
|
|
@@ -8,20 +8,16 @@ class CancelOrderRequest extends FleetbaseRequest
|
|
|
8
8
|
{
|
|
9
9
|
/**
|
|
10
10
|
* Determine if the user is authorized to make this request.
|
|
11
|
-
*
|
|
12
|
-
* @return bool
|
|
13
11
|
*/
|
|
14
|
-
public function authorize()
|
|
12
|
+
public function authorize(): bool
|
|
15
13
|
{
|
|
16
14
|
return request()->session()->has('api_credential');
|
|
17
15
|
}
|
|
18
16
|
|
|
19
17
|
/**
|
|
20
18
|
* Get the validation rules that apply to the request.
|
|
21
|
-
*
|
|
22
|
-
* @return array
|
|
23
19
|
*/
|
|
24
|
-
public function rules()
|
|
20
|
+
public function rules(): array
|
|
25
21
|
{
|
|
26
22
|
return [
|
|
27
23
|
'order' => 'required|exists:orders,uuid',
|
|
@@ -9,20 +9,16 @@ class CreateContactRequest extends FleetbaseRequest
|
|
|
9
9
|
{
|
|
10
10
|
/**
|
|
11
11
|
* Determine if the user is authorized to make this request.
|
|
12
|
-
*
|
|
13
|
-
* @return bool
|
|
14
12
|
*/
|
|
15
|
-
public function authorize()
|
|
13
|
+
public function authorize(): bool
|
|
16
14
|
{
|
|
17
15
|
return request()->session()->has('storefront_key') || request()->session()->has('api_credential') || request()->session()->has('is_sanctum_token');
|
|
18
16
|
}
|
|
19
17
|
|
|
20
18
|
/**
|
|
21
19
|
* Get the validation rules that apply to the request.
|
|
22
|
-
*
|
|
23
|
-
* @return array
|
|
24
20
|
*/
|
|
25
|
-
public function rules()
|
|
21
|
+
public function rules(): array
|
|
26
22
|
{
|
|
27
23
|
return [
|
|
28
24
|
'name' => [new RequiredIf($this->isMethod('POST'))],
|
|
@@ -8,12 +8,12 @@ use Illuminate\Validation\Rule;
|
|
|
8
8
|
|
|
9
9
|
class CreateDeviceRequest extends FleetbaseRequest
|
|
10
10
|
{
|
|
11
|
-
public function authorize()
|
|
11
|
+
public function authorize(): bool
|
|
12
12
|
{
|
|
13
13
|
return request()->session()->has('api_credential') || request()->session()->has('is_sanctum_token');
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
public function rules()
|
|
16
|
+
public function rules(): array
|
|
17
17
|
{
|
|
18
18
|
return [
|
|
19
19
|
'name' => [Rule::requiredIf($this->isMethod('POST')), 'string'],
|
|
@@ -10,20 +10,16 @@ class CreateDriverRequest extends FleetbaseRequest
|
|
|
10
10
|
{
|
|
11
11
|
/**
|
|
12
12
|
* Determine if the user is authorized to make this request.
|
|
13
|
-
*
|
|
14
|
-
* @return bool
|
|
15
13
|
*/
|
|
16
|
-
public function authorize()
|
|
14
|
+
public function authorize(): bool
|
|
17
15
|
{
|
|
18
16
|
return request()->is('navigator/v1/*') || request()->session()->has('api_credential') || request()->session()->has('is_sanctum_token');
|
|
19
17
|
}
|
|
20
18
|
|
|
21
19
|
/**
|
|
22
20
|
* Get the validation rules that apply to the request.
|
|
23
|
-
*
|
|
24
|
-
* @return array
|
|
25
21
|
*/
|
|
26
|
-
public function rules()
|
|
22
|
+
public function rules(): array
|
|
27
23
|
{
|
|
28
24
|
$isCreating = $this->isMethod('POST');
|
|
29
25
|
|
|
@@ -47,10 +43,8 @@ class CreateDriverRequest extends FleetbaseRequest
|
|
|
47
43
|
|
|
48
44
|
/**
|
|
49
45
|
* Get custom attributes for validator errors.
|
|
50
|
-
*
|
|
51
|
-
* @return array
|
|
52
46
|
*/
|
|
53
|
-
public function attributes()
|
|
47
|
+
public function attributes(): array
|
|
54
48
|
{
|
|
55
49
|
return [
|
|
56
50
|
'email' => 'email address',
|
|
@@ -9,20 +9,16 @@ class CreateEntityRequest extends FleetbaseRequest
|
|
|
9
9
|
{
|
|
10
10
|
/**
|
|
11
11
|
* Determine if the user is authorized to make this request.
|
|
12
|
-
*
|
|
13
|
-
* @return bool
|
|
14
12
|
*/
|
|
15
|
-
public function authorize()
|
|
13
|
+
public function authorize(): bool
|
|
16
14
|
{
|
|
17
15
|
return request()->session()->has('api_credential') || request()->session()->has('is_sanctum_token');
|
|
18
16
|
}
|
|
19
17
|
|
|
20
18
|
/**
|
|
21
19
|
* Get the validation rules that apply to the request.
|
|
22
|
-
*
|
|
23
|
-
* @return array
|
|
24
20
|
*/
|
|
25
|
-
public function rules()
|
|
21
|
+
public function rules(): array
|
|
26
22
|
{
|
|
27
23
|
return [
|
|
28
24
|
'name' => [Rule::requiredIf($this->isMethod('POST'))],
|
|
@@ -7,12 +7,12 @@ use Illuminate\Validation\Rule;
|
|
|
7
7
|
|
|
8
8
|
class CreateEquipmentRequest extends FleetbaseRequest
|
|
9
9
|
{
|
|
10
|
-
public function authorize()
|
|
10
|
+
public function authorize(): bool
|
|
11
11
|
{
|
|
12
12
|
return request()->session()->has('api_credential') || request()->session()->has('is_sanctum_token');
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
public function rules()
|
|
15
|
+
public function rules(): array
|
|
16
16
|
{
|
|
17
17
|
return [
|
|
18
18
|
'name' => [Rule::requiredIf($this->isMethod('POST')), 'string'],
|
|
@@ -9,20 +9,16 @@ class CreateFleetRequest extends FleetbaseRequest
|
|
|
9
9
|
{
|
|
10
10
|
/**
|
|
11
11
|
* Determine if the user is authorized to make this request.
|
|
12
|
-
*
|
|
13
|
-
* @return bool
|
|
14
12
|
*/
|
|
15
|
-
public function authorize()
|
|
13
|
+
public function authorize(): bool
|
|
16
14
|
{
|
|
17
15
|
return request()->session()->has('api_credential');
|
|
18
16
|
}
|
|
19
17
|
|
|
20
18
|
/**
|
|
21
19
|
* Get the validation rules that apply to the request.
|
|
22
|
-
*
|
|
23
|
-
* @return array
|
|
24
20
|
*/
|
|
25
|
-
public function rules()
|
|
21
|
+
public function rules(): array
|
|
26
22
|
{
|
|
27
23
|
return [
|
|
28
24
|
'name' => [Rule::requiredIf($this->isMethod('POST'))],
|
|
@@ -8,20 +8,16 @@ class CreateFuelReportRequest extends FleetbaseRequest
|
|
|
8
8
|
{
|
|
9
9
|
/**
|
|
10
10
|
* Determine if the user is authorized to make this request.
|
|
11
|
-
*
|
|
12
|
-
* @return bool
|
|
13
11
|
*/
|
|
14
|
-
public function authorize()
|
|
12
|
+
public function authorize(): bool
|
|
15
13
|
{
|
|
16
14
|
return request()->session()->has('api_credential') || request()->session()->has('is_sanctum_token');
|
|
17
15
|
}
|
|
18
16
|
|
|
19
17
|
/**
|
|
20
18
|
* Get the validation rules that apply to the request.
|
|
21
|
-
*
|
|
22
|
-
* @return array
|
|
23
19
|
*/
|
|
24
|
-
public function rules()
|
|
20
|
+
public function rules(): array
|
|
25
21
|
{
|
|
26
22
|
return [
|
|
27
23
|
'driver' => ['required'],
|
|
@@ -7,12 +7,12 @@ use Illuminate\Validation\Rule;
|
|
|
7
7
|
|
|
8
8
|
class CreateFuelTransactionRequest extends FleetbaseRequest
|
|
9
9
|
{
|
|
10
|
-
public function authorize()
|
|
10
|
+
public function authorize(): bool
|
|
11
11
|
{
|
|
12
12
|
return request()->session()->has('api_credential') || request()->session()->has('is_sanctum_token');
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
public function rules()
|
|
15
|
+
public function rules(): array
|
|
16
16
|
{
|
|
17
17
|
return [
|
|
18
18
|
'provider' => [Rule::requiredIf($this->isMethod('POST')), 'string'],
|