@fleetbase/fleetops-engine 0.2.5 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +14 -0
- package/.php-cs-fixer.cache +1 -0
- package/.php-cs-fixer.php +29 -0
- package/LICENSE.md +16 -4
- package/README.md +103 -13
- package/addon/components/admin/visibility-controls.hbs +12 -0
- package/addon/components/admin/visibility-controls.js +82 -0
- package/addon/components/fleet-panel.js +13 -4
- package/addon/components/fleet-vehicle-listing.hbs +1 -1
- package/addon/components/layout/fleet-ops-sidebar.hbs +26 -0
- package/addon/components/layout/fleet-ops-sidebar.js +129 -0
- package/addon/engine.js +19 -0
- package/addon/helpers/is-section-visible.js +5 -0
- package/addon/routes/application.js +6 -2
- package/addon/routes/virtual.js +10 -0
- package/addon/routes.js +1 -0
- package/addon/templates/application.hbs +1 -19
- package/addon/templates/virtual.hbs +9 -0
- package/app/components/admin/visibility-controls.js +1 -0
- package/app/components/layout/fleet-ops-sidebar.js +1 -0
- package/app/helpers/is-section-visible.js +1 -0
- package/app/routes/virtual.js +1 -0
- package/app/templates/virtual.js +1 -0
- package/composer.json +85 -0
- package/extension.json +10 -0
- package/package.json +6 -6
- package/phpstan.neon.dist +8 -0
- package/phpunit.xml.dist +16 -0
- package/server/config/api.php +765 -0
- package/server/config/cache.stores.php +18 -0
- package/server/config/dompdf.php +242 -0
- package/server/config/fleetops.php +19 -0
- package/server/config/geocoder.php +108 -0
- package/server/data/globe.json +261 -0
- package/server/migrations/2023_04_27_053456_create_contacts_table.php +49 -0
- package/server/migrations/2023_04_27_053456_create_drivers_table.php +62 -0
- package/server/migrations/2023_04_27_053456_create_entities_table.php +67 -0
- package/server/migrations/2023_04_27_053456_create_fleet_drivers_table.php +39 -0
- package/server/migrations/2023_04_27_053456_create_fleets_table.php +47 -0
- package/server/migrations/2023_04_27_053456_create_fuel_reports_table.php +50 -0
- package/server/migrations/2023_04_27_053456_create_integrated_vendors_table.php +44 -0
- package/server/migrations/2023_04_27_053456_create_issues_table.php +53 -0
- package/server/migrations/2023_04_27_053456_create_orders_table.php +70 -0
- package/server/migrations/2023_04_27_053456_create_payloads_table.php +51 -0
- package/server/migrations/2023_04_27_053456_create_places_table.php +62 -0
- package/server/migrations/2023_04_27_053456_create_positions_table.php +46 -0
- package/server/migrations/2023_04_27_053456_create_proofs_table.php +44 -0
- package/server/migrations/2023_04_27_053456_create_purchase_rates_table.php +46 -0
- package/server/migrations/2023_04_27_053456_create_routes_table.php +40 -0
- package/server/migrations/2023_04_27_053456_create_service_areas_table.php +47 -0
- package/server/migrations/2023_04_27_053456_create_service_quote_items_table.php +42 -0
- package/server/migrations/2023_04_27_053456_create_service_quotes_table.php +47 -0
- package/server/migrations/2023_04_27_053456_create_service_rate_fees_table.php +45 -0
- package/server/migrations/2023_04_27_053456_create_service_rate_parcel_fees_table.php +47 -0
- package/server/migrations/2023_04_27_053456_create_service_rates_table.php +61 -0
- package/server/migrations/2023_04_27_053456_create_tracking_numbers_table.php +46 -0
- package/server/migrations/2023_04_27_053456_create_tracking_statuses_table.php +54 -0
- package/server/migrations/2023_04_27_053456_create_vehicles_table.php +84 -0
- package/server/migrations/2023_04_27_053456_create_vendors_table.php +56 -0
- package/server/migrations/2023_04_27_053456_create_waypoints_table.php +45 -0
- package/server/migrations/2023_04_27_053456_create_zones_table.php +46 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_companies_table.php +32 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_contacts_table.php +34 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_drivers_table.php +40 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_entities_table.php +40 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fleet_drivers_table.php +34 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fleets_table.php +36 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_fuel_reports_table.php +36 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_integrated_vendors_table.php +34 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_issues_table.php +38 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_orders_table.php +48 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_payloads_table.php +40 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_places_table.php +32 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_positions_table.php +36 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_proofs_table.php +34 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_purchase_rates_table.php +38 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_routes_table.php +34 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_areas_table.php +34 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_quote_items_table.php +32 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_quotes_table.php +38 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rate_fees_table.php +32 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rate_parcel_fees_table.php +32 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_service_rates_table.php +36 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_tracking_numbers_table.php +34 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_tracking_statuses_table.php +34 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_vehicles_table.php +36 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_vendors_table.php +40 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_waypoints_table.php +38 -0
- package/server/migrations/2023_04_27_053459_add_foreign_keys_to_zones_table.php +34 -0
- package/server/migrations/2023_09_14_074512_update_vehicles_table.php +100 -0
- package/server/migrations/2023_09_14_074619_create_vehicle_devices_table.php +44 -0
- package/server/migrations/2023_09_26_071205_add_online_column_to_vehicles_table.php +32 -0
- package/server/migrations/2023_09_26_083957_create_fleet_vehicles_table.php +45 -0
- package/server/migrations/2023_09_27_023757_add_column_to_fleets_table.php +46 -0
- package/server/migrations/2023_10_05_074811_update_vehicle.php +42 -0
- package/server/resources/views/labels/default.php +165 -0
- package/server/src/Auth/Schemas/FleetOps.php +75 -0
- package/server/src/Casts/MultiPolygon.php +50 -0
- package/server/src/Casts/Point.php +109 -0
- package/server/src/Casts/Polygon.php +46 -0
- package/server/src/Console/Commands/DispatchAdhocOrders.php +137 -0
- package/server/src/Console/Commands/DispatchOrders.php +71 -0
- package/server/src/Console/Commands/TrackOrderDistanceAndTime.php +62 -0
- package/server/src/Events/DriverLocationChanged.php +174 -0
- package/server/src/Events/DriverSimulatedLocationChanged.php +183 -0
- package/server/src/Events/EntityDriverAssigned.php +36 -0
- package/server/src/Events/OrderCanceled.php +15 -0
- package/server/src/Events/OrderCompleted.php +15 -0
- package/server/src/Events/OrderDispatchFailed.php +42 -0
- package/server/src/Events/OrderDispatched.php +15 -0
- package/server/src/Events/OrderDriverAssigned.php +15 -0
- package/server/src/Events/OrderReady.php +15 -0
- package/server/src/Events/OrderStarted.php +15 -0
- package/server/src/Exceptions/IntegratedVendorException.php +18 -0
- package/server/src/Expansions/UserExpansion.php +63 -0
- package/server/src/Exports/ContactExport.php +56 -0
- package/server/src/Exports/DriverExport.php +61 -0
- package/server/src/Exports/FleetExport.php +53 -0
- package/server/src/Exports/PlaceExport.php +55 -0
- package/server/src/Exports/ServiceAreaExport.php +58 -0
- package/server/src/Exports/VehicleExport.php +57 -0
- package/server/src/Exports/VendorExport.php +57 -0
- package/server/src/Http/Controllers/Api/v1/ContactController.php +133 -0
- package/server/src/Http/Controllers/Api/v1/DriverController.php +691 -0
- package/server/src/Http/Controllers/Api/v1/EntityController.php +230 -0
- package/server/src/Http/Controllers/Api/v1/FleetController.php +146 -0
- package/server/src/Http/Controllers/Api/v1/LabelController.php +63 -0
- package/server/src/Http/Controllers/Api/v1/OrderController.php +1114 -0
- package/server/src/Http/Controllers/Api/v1/PayloadController.php +195 -0
- package/server/src/Http/Controllers/Api/v1/PlaceController.php +333 -0
- package/server/src/Http/Controllers/Api/v1/PurchaseRateController.php +199 -0
- package/server/src/Http/Controllers/Api/v1/ServiceAreaController.php +133 -0
- package/server/src/Http/Controllers/Api/v1/ServiceQuoteController.php +381 -0
- package/server/src/Http/Controllers/Api/v1/ServiceRateController.php +223 -0
- package/server/src/Http/Controllers/Api/v1/TrackingNumberController.php +146 -0
- package/server/src/Http/Controllers/Api/v1/TrackingStatusController.php +138 -0
- package/server/src/Http/Controllers/Api/v1/VehicleController.php +191 -0
- package/server/src/Http/Controllers/Api/v1/VendorController.php +159 -0
- package/server/src/Http/Controllers/Api/v1/ZoneController.php +146 -0
- package/server/src/Http/Controllers/FleetOpsController.php +13 -0
- package/server/src/Http/Controllers/Internal/v1/ContactController.php +69 -0
- package/server/src/Http/Controllers/Internal/v1/DriverController.php +261 -0
- package/server/src/Http/Controllers/Internal/v1/EntityController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/FleetController.php +152 -0
- package/server/src/Http/Controllers/Internal/v1/FleetOpsLookupController.php +80 -0
- package/server/src/Http/Controllers/Internal/v1/FuelReportController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/GeocoderController.php +96 -0
- package/server/src/Http/Controllers/Internal/v1/IntegratedVendorController.php +63 -0
- package/server/src/Http/Controllers/Internal/v1/IssueController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/LiveController.php +127 -0
- package/server/src/Http/Controllers/Internal/v1/MetricsController.php +75 -0
- package/server/src/Http/Controllers/Internal/v1/MorphController.php +77 -0
- package/server/src/Http/Controllers/Internal/v1/OrderConfigController.php +269 -0
- package/server/src/Http/Controllers/Internal/v1/OrderController.php +564 -0
- package/server/src/Http/Controllers/Internal/v1/PayloadController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/PlaceController.php +163 -0
- package/server/src/Http/Controllers/Internal/v1/ProofController.php +139 -0
- package/server/src/Http/Controllers/Internal/v1/PurchaseRateController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/RouteController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/ServiceAreaController.php +32 -0
- package/server/src/Http/Controllers/Internal/v1/ServiceQuoteController.php +345 -0
- package/server/src/Http/Controllers/Internal/v1/ServiceRateController.php +47 -0
- package/server/src/Http/Controllers/Internal/v1/SettingController.php +30 -0
- package/server/src/Http/Controllers/Internal/v1/TrackingNumberController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/TrackingStatusController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/VehicleController.php +65 -0
- package/server/src/Http/Controllers/Internal/v1/VehicleDeviceController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/VendorController.php +120 -0
- package/server/src/Http/Controllers/Internal/v1/ZoneController.php +15 -0
- package/server/src/Http/Filter/ContactFilter.php +86 -0
- package/server/src/Http/Filter/DriverFilter.php +148 -0
- package/server/src/Http/Filter/FleetFilter.php +108 -0
- package/server/src/Http/Filter/IntegratedVendorFilter.php +13 -0
- package/server/src/Http/Filter/OrderFilter.php +242 -0
- package/server/src/Http/Filter/PlaceFilter.php +111 -0
- package/server/src/Http/Filter/ServiceAreaFilter.php +13 -0
- package/server/src/Http/Filter/ServiceQuoteFilter.php +13 -0
- package/server/src/Http/Filter/ServiceRateFilter.php +33 -0
- package/server/src/Http/Filter/TrackingStatusFilter.php +43 -0
- package/server/src/Http/Filter/VehicleFilter.php +91 -0
- package/server/src/Http/Filter/VendorFilter.php +83 -0
- package/server/src/Http/Filter/ZoneFilter.php +13 -0
- package/server/src/Http/Requests/CancelOrderRequest.php +31 -0
- package/server/src/Http/Requests/CreateContactRequest.php +33 -0
- package/server/src/Http/Requests/CreateDriverRequest.php +55 -0
- package/server/src/Http/Requests/CreateEntityRequest.php +43 -0
- package/server/src/Http/Requests/CreateFleetRequest.php +32 -0
- package/server/src/Http/Requests/CreateOrderRequest.php +66 -0
- package/server/src/Http/Requests/CreatePayloadRequest.php +37 -0
- package/server/src/Http/Requests/CreatePlaceRequest.php +38 -0
- package/server/src/Http/Requests/CreatePurchaseRateRequest.php +33 -0
- package/server/src/Http/Requests/CreateServiceAreaRequest.php +35 -0
- package/server/src/Http/Requests/CreateServiceQuoteRequest.php +29 -0
- package/server/src/Http/Requests/CreateServiceRateRequest.php +56 -0
- package/server/src/Http/Requests/CreateTrackingNumberRequest.php +34 -0
- package/server/src/Http/Requests/CreateTrackingStatusRequest.php +42 -0
- package/server/src/Http/Requests/CreateVehicleRequest.php +32 -0
- package/server/src/Http/Requests/CreateVendorRequest.php +35 -0
- package/server/src/Http/Requests/CreateZoneRequest.php +35 -0
- package/server/src/Http/Requests/DecodeTrackingNumberQR.php +30 -0
- package/server/src/Http/Requests/DriverSimulationRequest.php +46 -0
- package/server/src/Http/Requests/Internal/AssignOrderRequest.php +31 -0
- package/server/src/Http/Requests/Internal/CreateDriverRequest.php +42 -0
- package/server/src/Http/Requests/Internal/FleetActionRequest.php +32 -0
- package/server/src/Http/Requests/Internal/UpdateDriverRequest.php +7 -0
- package/server/src/Http/Requests/QueryServiceQuotesRequest.php +41 -0
- package/server/src/Http/Requests/UpdateContactRequest.php +20 -0
- package/server/src/Http/Requests/UpdateDriverRequest.php +7 -0
- package/server/src/Http/Requests/UpdateEntityRequest.php +7 -0
- package/server/src/Http/Requests/UpdateFleetRequest.php +7 -0
- package/server/src/Http/Requests/UpdateOrderRequest.php +7 -0
- package/server/src/Http/Requests/UpdatePayloadRequest.php +7 -0
- package/server/src/Http/Requests/UpdatePlaceRequest.php +7 -0
- package/server/src/Http/Requests/UpdatePurchaseRateRequest.php +7 -0
- package/server/src/Http/Requests/UpdateServiceAreaRequest.php +29 -0
- package/server/src/Http/Requests/UpdateServiceQuoteRequest.php +29 -0
- package/server/src/Http/Requests/UpdateServiceRateRequest.php +29 -0
- package/server/src/Http/Requests/UpdateTrackingNumberRequest.php +7 -0
- package/server/src/Http/Requests/UpdateTrackingStatusRequest.php +32 -0
- package/server/src/Http/Requests/UpdateVehicleRequest.php +7 -0
- package/server/src/Http/Requests/UpdateVendorRequest.php +7 -0
- package/server/src/Http/Requests/UpdateZoneRequest.php +7 -0
- package/server/src/Http/Resources/Internal/v1/IntegratedVendorFacilitator.php +37 -0
- package/server/src/Http/Resources/Internal/v1/Vehicle.php +33 -0
- package/server/src/Http/Resources/Internal/v1/Waypoint.php +34 -0
- package/server/src/Http/Resources/v1/Contact.php +62 -0
- package/server/src/Http/Resources/v1/CurrentJob.php +36 -0
- package/server/src/Http/Resources/v1/DeletedResource.php +61 -0
- package/server/src/Http/Resources/v1/Driver.php +89 -0
- package/server/src/Http/Resources/v1/Entity.php +107 -0
- package/server/src/Http/Resources/v1/Fleet.php +60 -0
- package/server/src/Http/Resources/v1/FuelReport.php +67 -0
- package/server/src/Http/Resources/v1/Order.php +131 -0
- package/server/src/Http/Resources/v1/Payload.php +94 -0
- package/server/src/Http/Resources/v1/Place.php +84 -0
- package/server/src/Http/Resources/v1/Proof.php +36 -0
- package/server/src/Http/Resources/v1/PurchaseRate.php +77 -0
- package/server/src/Http/Resources/v1/ServiceArea.php +55 -0
- package/server/src/Http/Resources/v1/ServiceQuote.php +57 -0
- package/server/src/Http/Resources/v1/ServiceRate.php +94 -0
- package/server/src/Http/Resources/v1/ServiceRateFee.php +58 -0
- package/server/src/Http/Resources/v1/ServiceRateParcelFee.php +48 -0
- package/server/src/Http/Resources/v1/TrackingNumber.php +62 -0
- package/server/src/Http/Resources/v1/TrackingStatus.php +84 -0
- package/server/src/Http/Resources/v1/Vehicle.php +75 -0
- package/server/src/Http/Resources/v1/VehicleDevice.php +44 -0
- package/server/src/Http/Resources/v1/VehicleWithoutDriver.php +72 -0
- package/server/src/Http/Resources/v1/Vendor.php +72 -0
- package/server/src/Http/Resources/v1/Zone.php +60 -0
- package/server/src/Imports/OrdersImport.php +18 -0
- package/server/src/Integrations/Lalamove/Lalamove.php +678 -0
- package/server/src/Integrations/Lalamove/LalamoveDeliveryStop.php +97 -0
- package/server/src/Integrations/Lalamove/LalamoveMarket.php +123 -0
- package/server/src/Integrations/Lalamove/LalamoveServiceType.php +161 -0
- package/server/src/Jobs/SimulateDrivingRoute.php +81 -0
- package/server/src/Jobs/SimulateWaypointReached.php +79 -0
- package/server/src/Listeners/HandleOrderCanceled.php +46 -0
- package/server/src/Listeners/HandleOrderCreated.php +23 -0
- package/server/src/Listeners/HandleOrderDispatchFailed.php +35 -0
- package/server/src/Listeners/HandleOrderDispatched.php +108 -0
- package/server/src/Listeners/HandleOrderDriverAssigned.php +42 -0
- package/server/src/Listeners/HandleOrderReady.php +27 -0
- package/server/src/Listeners/HandleUserRemovedFromCompany.php +31 -0
- package/server/src/Models/Contact.php +239 -0
- package/server/src/Models/Driver.php +543 -0
- package/server/src/Models/Entity.php +416 -0
- package/server/src/Models/Fleet.php +203 -0
- package/server/src/Models/FleetDriver.php +73 -0
- package/server/src/Models/FleetVehicle.php +73 -0
- package/server/src/Models/FuelReport.php +125 -0
- package/server/src/Models/IntegratedVendor.php +219 -0
- package/server/src/Models/Issue.php +111 -0
- package/server/src/Models/Order.php +1132 -0
- package/server/src/Models/Payload.php +699 -0
- package/server/src/Models/Place.php +656 -0
- package/server/src/Models/Position.php +119 -0
- package/server/src/Models/Proof.php +94 -0
- package/server/src/Models/PurchaseRate.php +208 -0
- package/server/src/Models/Route.php +128 -0
- package/server/src/Models/ServiceArea.php +161 -0
- package/server/src/Models/ServiceQuote.php +207 -0
- package/server/src/Models/ServiceQuoteItem.php +46 -0
- package/server/src/Models/ServiceRate.php +953 -0
- package/server/src/Models/ServiceRateFee.php +96 -0
- package/server/src/Models/ServiceRateParcelFee.php +116 -0
- package/server/src/Models/TrackingNumber.php +310 -0
- package/server/src/Models/TrackingStatus.php +177 -0
- package/server/src/Models/Vehicle.php +452 -0
- package/server/src/Models/VehicleDevice.php +79 -0
- package/server/src/Models/Vendor.php +244 -0
- package/server/src/Models/Waypoint.php +226 -0
- package/server/src/Models/Zone.php +95 -0
- package/server/src/Notifications/OrderAssigned.php +140 -0
- package/server/src/Notifications/OrderCanceled.php +129 -0
- package/server/src/Notifications/OrderDispatchFailed.php +81 -0
- package/server/src/Notifications/OrderDispatched.php +173 -0
- package/server/src/Notifications/OrderPing.php +162 -0
- package/server/src/Notifications/OrderSplit.php +56 -0
- package/server/src/Observers/DriverObserver.php +34 -0
- package/server/src/Observers/OrderObserver.php +34 -0
- package/server/src/Observers/PayloadObserver.php +30 -0
- package/server/src/Observers/PlaceObserver.php +26 -0
- package/server/src/Observers/PurchaseRateObserver.php +61 -0
- package/server/src/Observers/ServiceAreaObserver.php +35 -0
- package/server/src/Observers/ServiceRateObserver.php +78 -0
- package/server/src/Observers/TrackingNumberObserver.php +44 -0
- package/server/src/Observers/UserObserver.php +20 -0
- package/server/src/Observers/VehicleObserver.php +66 -0
- package/server/src/Providers/EventServiceProvider.php +30 -0
- package/server/src/Providers/FleetOpsServiceProvider.php +94 -0
- package/server/src/Rules/ResolvablePoint.php +37 -0
- package/server/src/Scopes/DriverScope.php +21 -0
- package/server/src/Support/Algo.php +55 -0
- package/server/src/Support/DistanceMatrix.php +27 -0
- package/server/src/Support/Encoding/Polyline.php +168 -0
- package/server/src/Support/Flow.php +622 -0
- package/server/src/Support/Geocoding.php +216 -0
- package/server/src/Support/IntegratedVendors.php +287 -0
- package/server/src/Support/Metrics.php +305 -0
- package/server/src/Support/OSRM.php +191 -0
- package/server/src/Support/ParsePhone.php +21 -0
- package/server/src/Support/Utils.php +1145 -0
- package/server/src/Traits/HasTrackingNumber.php +185 -0
- package/server/src/routes.php +381 -0
- package/server/tests/Feature.php +5 -0
package/.gitattributes
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/art export-ignore
|
|
2
|
+
/docs export-ignore
|
|
3
|
+
/tests export-ignore
|
|
4
|
+
/scripts export-ignore
|
|
5
|
+
/.github export-ignore
|
|
6
|
+
/.php_cs export-ignore
|
|
7
|
+
.editorconfig export-ignore
|
|
8
|
+
.gitattributes export-ignore
|
|
9
|
+
.gitignore export-ignore
|
|
10
|
+
phpstan.neon.dist export-ignore
|
|
11
|
+
phpunit.xml.dist export-ignore
|
|
12
|
+
CHANGELOG.md export-ignore
|
|
13
|
+
CONTRIBUTING.md export-ignore
|
|
14
|
+
README.md export-ignore
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"php":"7.4.33","version":"3.34.1:v3.34.1#98bf1b1068b4ceddbbc2a2b70b67a5e380add9e3","indent":" ","lineEnding":"\n","rules":{"align_multiline_comment":true,"array_syntax":{"syntax":"short"},"backtick_to_shell_exec":true,"binary_operator_spaces":{"operators":{"=>":"align","=":"align"}},"blank_line_before_statement":{"statements":["return"]},"braces_position":{"allow_single_line_anonymous_functions":true,"allow_single_line_empty_anonymous_classes":true},"cast_spaces":true,"class_attributes_separation":{"elements":{"method":"one"}},"class_definition":{"single_line":true},"class_reference_name_casing":true,"clean_namespace":true,"concat_space":{"spacing":"one"},"declare_parentheses":true,"echo_tag_syntax":true,"empty_loop_body":{"style":"braces"},"empty_loop_condition":true,"fully_qualified_strict_types":true,"general_phpdoc_tag_rename":{"replacements":{"inheritDocs":"inheritDoc"}},"global_namespace_import":{"import_classes":false,"import_constants":false,"import_functions":false},"include":true,"increment_style":{"style":"post"},"integer_literal_case":true,"lambda_not_used_import":true,"linebreak_after_opening_tag":true,"long_to_shorthand_operator":true,"magic_constant_casing":true,"magic_method_casing":true,"method_argument_space":{"on_multiline":"ignore"},"native_function_casing":true,"native_type_declaration_casing":true,"no_alias_language_construct_call":true,"no_alternative_syntax":true,"no_binary_string":true,"no_blank_lines_after_phpdoc":true,"no_empty_comment":true,"no_empty_phpdoc":true,"no_empty_statement":true,"no_extra_blank_lines":{"tokens":["attribute","case","continue","curly_brace_block","default","extra","parenthesis_brace_block","square_brace_block","switch","throw","use"]},"no_leading_namespace_whitespace":true,"no_mixed_echo_print":true,"no_multiline_whitespace_around_double_arrow":true,"no_null_property_initialization":true,"no_short_bool_cast":true,"no_singleline_whitespace_before_semicolons":true,"no_spaces_around_offset":true,"no_superfluous_phpdoc_tags":{"remove_inheritdoc":true},"no_trailing_comma_in_singleline":true,"no_unneeded_braces":{"namespaces":true},"no_unneeded_control_parentheses":{"statements":["break","clone","continue","echo_print","others","return","switch_case","yield","yield_from"]},"no_unneeded_import_alias":true,"no_unset_cast":true,"no_unused_imports":true,"no_useless_concat_operator":true,"no_useless_nullsafe_operator":true,"no_whitespace_before_comma_in_array":true,"normalize_index_brace":true,"nullable_type_declaration_for_default_null_value":{"use_nullable_type_declaration":false},"object_operator_without_whitespace":true,"operator_linebreak":{"only_booleans":true},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"alpha"},"php_unit_fqcn_annotation":true,"php_unit_method_casing":true,"phpdoc_align":true,"phpdoc_annotation_without_dot":true,"phpdoc_indent":true,"phpdoc_inline_tag_normalizer":true,"phpdoc_no_access":true,"phpdoc_no_alias_tag":true,"phpdoc_no_package":true,"phpdoc_no_useless_inheritdoc":true,"phpdoc_order":{"order":["param","return","throws"]},"phpdoc_return_self_reference":true,"phpdoc_scalar":true,"phpdoc_separation":true,"phpdoc_single_line_var_spacing":true,"phpdoc_summary":true,"phpdoc_tag_type":{"tags":{"inheritDoc":"inline"}},"phpdoc_to_comment":true,"phpdoc_trim":true,"phpdoc_trim_consecutive_blank_line_separation":true,"phpdoc_types":true,"phpdoc_types_order":{"null_adjustment":"always_last","sort_algorithm":"none"},"phpdoc_var_without_name":true,"semicolon_after_instruction":true,"simple_to_complex_string_variable":true,"single_class_element_per_statement":true,"single_import_per_statement":true,"single_line_comment_spacing":true,"single_line_comment_style":{"comment_types":["hash"]},"single_line_throw":true,"single_quote":true,"single_space_around_construct":true,"space_after_semicolon":{"remove_in_empty_for_expressions":true},"standardize_increment":true,"standardize_not_equals":true,"switch_continue_to_break":true,"trailing_comma_in_multiline":true,"trim_array_spaces":true,"type_declaration_spaces":true,"types_spaces":true,"unary_operator_spaces":true,"whitespace_after_comma_in_array":true,"blank_line_after_opening_tag":true,"blank_line_between_import_groups":true,"blank_lines_before_namespace":true,"compact_nullable_type_declaration":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_parentheses":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"return_type_declaration":true,"short_scalar_cast":true,"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"control_structure_braces":true,"control_structure_continuation_position":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"no_break_comment":true,"no_closing_tag":true,"no_multiple_statements_per_line":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_line_after_imports":true,"spaces_inside_parentheses":true,"statement_indentation":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"server\/tests\/Feature.php":"9c85d3fc3571920ba5e59e6d460c5220","server\/src\/Auth\/Schemas\/FleetOps.php":"bb5dadf8cb0fffa0505ce017c318014c","server\/src\/Casts\/MultiPolygon.php":"961fff6a78ccd4cd4d8cf7d2ee59adb9","server\/src\/Casts\/Point.php":"e188bce3838c4f5d6bead242caf3d34b","server\/src\/Casts\/Polygon.php":"d1ec89a15e397274abaf8846c773e7ef","server\/src\/Console\/Commands\/DispatchAdhocOrders.php":"a5f92cc8e6b04e494e720a612b155801","server\/src\/Console\/Commands\/DispatchOrders.php":"6ad26baa662e0cd5457931834c3e7b07","server\/src\/Console\/Commands\/TrackOrderDistanceAndTime.php":"0e065ce250d75dce3559f7a037137910","server\/src\/Events\/DriverLocationChanged.php":"23b5ef056b4bbff75a40f62943a1f9cf","server\/src\/Events\/DriverSimulatedLocationChanged.php":"10e85931cc52635281320e95deeecb7c","server\/src\/Events\/EntityDriverAssigned.php":"efb4a97ea7b92025276223a384d23923","server\/src\/Events\/OrderCanceled.php":"0324d68597737f491548e83e6d3a6af8","server\/src\/Events\/OrderCompleted.php":"6077e0f076f54c11d03d64b40a047407","server\/src\/Events\/OrderDispatchFailed.php":"3042f6bb6f1fb4dccd6ec26d49794961","server\/src\/Events\/OrderDispatched.php":"881423b317722291a9de1c84172247bf","server\/src\/Events\/OrderDriverAssigned.php":"cc17ad971da0365d4196d35cf58d5f48","server\/src\/Events\/OrderReady.php":"4788715888cfd34384f67fc11d3c41ff","server\/src\/Events\/OrderStarted.php":"ccaa89925d7919c8b4fde7b5f1a34fd0","server\/src\/Exceptions\/IntegratedVendorException.php":"eb0bf42cd549f51bccb4e29efac79d08","server\/src\/Expansions\/UserExpansion.php":"4ff53579e24ec9485556a1d3d279ed36","server\/src\/Exports\/ContactExport.php":"9a3204f675eb6e55261b9da2dc2b3e05","server\/src\/Exports\/DriverExport.php":"c2f2e88a5f1b9e9df1e19754bda0a619","server\/src\/Exports\/FleetExport.php":"969a75492e3ece283fb3815591f1e54c","server\/src\/Exports\/PlaceExport.php":"b242fbc8c98cd6c4c6444aa76edb7990","server\/src\/Exports\/ServiceAreaExport.php":"eb39062da3459d3c7d4a6ceb8ce1fcea","server\/src\/Exports\/VehicleExport.php":"dd767667c3e486f1ef36e92fe5e7c1d5","server\/src\/Exports\/VendorExport.php":"f05347e1db7b3a7641f0888ab81ef06f","server\/src\/Http\/Controllers\/Api\/v1\/ContactController.php":"49e9de435ca71989805cab366c6986c3","server\/src\/Http\/Controllers\/Api\/v1\/DriverController.php":"0a5286a603ea49d6ad4eeb551ee47370","server\/src\/Http\/Controllers\/Api\/v1\/EntityController.php":"095dfb6a17a98441313a7d86c8b4a2dc","server\/src\/Http\/Controllers\/Api\/v1\/FleetController.php":"b6f5caae1923bdd5151fa1f409549c3d","server\/src\/Http\/Controllers\/Api\/v1\/LabelController.php":"e3590c8859b2bad6d46de166385b1905","server\/src\/Http\/Controllers\/Api\/v1\/OrderController.php":"0ee5f29d369bf8903e9767702b824ce8","server\/src\/Http\/Controllers\/Api\/v1\/PayloadController.php":"85b05d8ead1f893edfc435c447f6d7b1","server\/src\/Http\/Controllers\/Api\/v1\/PlaceController.php":"254eb834662a57ca116459d14b019074","server\/src\/Http\/Controllers\/Api\/v1\/PurchaseRateController.php":"8d157f5fe559c903e6923a25e24975c6","server\/src\/Http\/Controllers\/Api\/v1\/ServiceAreaController.php":"6cfc3a9bb942a6ff75f05066ce89c63b","server\/src\/Http\/Controllers\/Api\/v1\/ServiceQuoteController.php":"5454844d96efb1b1870a8affff074ad9","server\/src\/Http\/Controllers\/Api\/v1\/ServiceRateController.php":"16e21952f2ab75b6dceea38a15c63708","server\/src\/Http\/Controllers\/Api\/v1\/TrackingNumberController.php":"28e47cca8cefd54ab9ae07964ca24ba0","server\/src\/Http\/Controllers\/Api\/v1\/TrackingStatusController.php":"927aeebd5eb9a7915e35092851a216b7","server\/src\/Http\/Controllers\/Api\/v1\/VehicleController.php":"8429fec35026aa728d73f514e95eaf1e","server\/src\/Http\/Controllers\/Api\/v1\/VendorController.php":"3bc94a56869f6d8f15eca682faac9f1c","server\/src\/Http\/Controllers\/Api\/v1\/ZoneController.php":"19915a76ff0fc16b99e29f44daee4686","server\/src\/Http\/Controllers\/FleetOpsController.php":"df0a0c0671f8aa9f8454a40d5035c2f0","server\/src\/Http\/Controllers\/Internal\/v1\/ContactController.php":"255b8177a512ae6a028ef8c4e5e8d21c","server\/src\/Http\/Controllers\/Internal\/v1\/DriverController.php":"c116347ff38f0ca0749d007a530a5af2","server\/src\/Http\/Controllers\/Internal\/v1\/EntityController.php":"ca345cd27cb2785c6395fc468797d81e","server\/src\/Http\/Controllers\/Internal\/v1\/FleetController.php":"990855aeb01e0051e9e9e651494351c6","server\/src\/Http\/Controllers\/Internal\/v1\/FleetOpsLookupController.php":"d1f60741df87e6e0b20ab2e03c962263","server\/src\/Http\/Controllers\/Internal\/v1\/FuelReportController.php":"26d370fae8057c1a7f7877794dfbeffb","server\/src\/Http\/Controllers\/Internal\/v1\/GeocoderController.php":"e115e0934da014aad6af3a9f83e3e952","server\/src\/Http\/Controllers\/Internal\/v1\/IntegratedVendorController.php":"45475498050adf1b345f34e9951bb2c2","server\/src\/Http\/Controllers\/Internal\/v1\/IssueController.php":"0273e14b841bdb35e3ede1d51f35346b","server\/src\/Http\/Controllers\/Internal\/v1\/LiveController.php":"d13bfa94ace9d8f53472d112be01389a","server\/src\/Http\/Controllers\/Internal\/v1\/MetricsController.php":"28d9587562250205a3881fe03a030810","server\/src\/Http\/Controllers\/Internal\/v1\/MorphController.php":"2f51b33bbb80ca735e34b506396ffe6f","server\/src\/Http\/Controllers\/Internal\/v1\/OrderConfigController.php":"1b893553e91cf80df411a5ee83b0b8f3","server\/src\/Http\/Controllers\/Internal\/v1\/OrderController.php":"b8b4036d530a0333e7710f35997f7baa","server\/src\/Http\/Controllers\/Internal\/v1\/PayloadController.php":"508bb666e4e1b8c7f61bfb0f74a15b5e","server\/src\/Http\/Controllers\/Internal\/v1\/PlaceController.php":"ac824ab939a996ae85f21d19c91c30c5","server\/src\/Http\/Controllers\/Internal\/v1\/ProofController.php":"720967e252e571a40278b48e86c65f33","server\/src\/Http\/Controllers\/Internal\/v1\/PurchaseRateController.php":"1bf1a997bffef6add6b078a3ff85c4c4","server\/src\/Http\/Controllers\/Internal\/v1\/RouteController.php":"63f06a92416bf20147fe87ef622f1980","server\/src\/Http\/Controllers\/Internal\/v1\/ServiceAreaController.php":"897caa9512634b496e72ef39cef664e1","server\/src\/Http\/Controllers\/Internal\/v1\/ServiceQuoteController.php":"a1b5358f2b2901239a437760005cc15d","server\/src\/Http\/Controllers\/Internal\/v1\/ServiceRateController.php":"1ecc9080dae83f7b596eb65f10a0ce77","server\/src\/Http\/Controllers\/Internal\/v1\/SettingController.php":"5ac7539521e2b3627a47baeda172b6c7","server\/src\/Http\/Controllers\/Internal\/v1\/TrackingNumberController.php":"8ce51737577da90f7383453785ac89dd","server\/src\/Http\/Controllers\/Internal\/v1\/TrackingStatusController.php":"e0a62db1ecac9bfc05f47f5cee0c55a3","server\/src\/Http\/Controllers\/Internal\/v1\/VehicleController.php":"cfdff585069b182ae00c7af28b582a1e","server\/src\/Http\/Controllers\/Internal\/v1\/VehicleDeviceController.php":"f346ff56d4ef0c398033a430207d9861","server\/src\/Http\/Controllers\/Internal\/v1\/VendorController.php":"c11e5a900487792c62705f74a030d0a5","server\/src\/Http\/Controllers\/Internal\/v1\/ZoneController.php":"a42475b59af5945dcc640a7c9cd3f2cc","server\/src\/Http\/Filter\/ContactFilter.php":"03259ce736f8bc37dfdad52f5576a89b","server\/src\/Http\/Filter\/DriverFilter.php":"13c7a6f9b671c5742e005d71d70e2ba6","server\/src\/Http\/Filter\/FleetFilter.php":"2edf85a370e23dfb0a46df842f22e567","server\/src\/Http\/Filter\/IntegratedVendorFilter.php":"53fd86aed2f07f27262f6f8a57f7e754","server\/src\/Http\/Filter\/OrderFilter.php":"75d23a90a20108e41f993a274e63fc94","server\/src\/Http\/Filter\/PlaceFilter.php":"c9a7ea7705a792ecfaca6cf331f63756","server\/src\/Http\/Filter\/ServiceAreaFilter.php":"e7cd14bd28b603c7660cb88f2196d524","server\/src\/Http\/Filter\/ServiceQuoteFilter.php":"8ad99521f3816f0730b7dc3cd1d859dc","server\/src\/Http\/Filter\/ServiceRateFilter.php":"b7c758916e5e640fbcd02a8ffaa7888e","server\/src\/Http\/Filter\/TrackingStatusFilter.php":"f89a88208e3d9c510e32f0194633703f","server\/src\/Http\/Filter\/VehicleFilter.php":"291f7edd3161de0267166ad364ef8a18","server\/src\/Http\/Filter\/VendorFilter.php":"85af82bb29726deb1fa76ceae8fc7583","server\/src\/Http\/Filter\/ZoneFilter.php":"e262158b0c8f73efc906e540965afa61","server\/src\/Http\/Requests\/CancelOrderRequest.php":"30fd2ca51a34be85313698af296d2bff","server\/src\/Http\/Requests\/CreateContactRequest.php":"6994395781320beed5287d596249a241","server\/src\/Http\/Requests\/CreateDriverRequest.php":"669c371cf010f8032e81c7ea2d5e2858","server\/src\/Http\/Requests\/CreateEntityRequest.php":"129b28f69e44eb10ca5bbc01bb1a803c","server\/src\/Http\/Requests\/CreateFleetRequest.php":"a0d8729f29bb2673bb19da654e9322b6","server\/src\/Http\/Requests\/CreateOrderRequest.php":"9a301c4dc8a50b9824c49ef8dd343734","server\/src\/Http\/Requests\/CreatePayloadRequest.php":"693500caa9a5fbf0fc52073831afa56a","server\/src\/Http\/Requests\/CreatePlaceRequest.php":"67d586e5d16e2ca2bf178574a41bfb58","server\/src\/Http\/Requests\/CreatePurchaseRateRequest.php":"c135faffb7958d58312473b85b3ffb6b","server\/src\/Http\/Requests\/CreateServiceAreaRequest.php":"78f44e0cb56368ba6cf1dd2484984d82","server\/src\/Http\/Requests\/CreateServiceQuoteRequest.php":"834896b31fce6e9bccd7bd6d49eeafe7","server\/src\/Http\/Requests\/CreateServiceRateRequest.php":"ae1283ec5f93ab4e40e6595f4f094f00","server\/src\/Http\/Requests\/CreateTrackingNumberRequest.php":"1029618dda606495a69194f24dbae736","server\/src\/Http\/Requests\/CreateTrackingStatusRequest.php":"5ffad2d4a7c286f25a9c2cd1141bceda","server\/src\/Http\/Requests\/CreateVehicleRequest.php":"33ef6aef0fc901be56be89ce8b720ddc","server\/src\/Http\/Requests\/CreateVendorRequest.php":"b043235163c43c4220bbd1daca3d15d8","server\/src\/Http\/Requests\/CreateZoneRequest.php":"4025494c15a341245aa623869a9cf647","server\/src\/Http\/Requests\/DecodeTrackingNumberQR.php":"c035c092faeafd81ef34354e55ed706c","server\/src\/Http\/Requests\/DriverSimulationRequest.php":"dd7b6027397bebac7590e27c33316847","server\/src\/Http\/Requests\/Internal\/AssignOrderRequest.php":"9d8d58ef7ce89fae3ca7bab536b83410","server\/src\/Http\/Requests\/Internal\/CreateDriverRequest.php":"9502b591cdafb457b5ec88f98e8f966c","server\/src\/Http\/Requests\/Internal\/FleetActionRequest.php":"843b7286299e6708b96de67852776e03","server\/src\/Http\/Requests\/Internal\/UpdateDriverRequest.php":"98dc67a0e6d2f0a959eccb748e8dc073","server\/src\/Http\/Requests\/QueryServiceQuotesRequest.php":"dd1a3b19e50b7061ac770b70055a1a51","server\/src\/Http\/Requests\/UpdateContactRequest.php":"abcfd3804aa88911aa2c879957472636","server\/src\/Http\/Requests\/UpdateDriverRequest.php":"e9153e1b2fd91343ff6250ee86a0fa12","server\/src\/Http\/Requests\/UpdateEntityRequest.php":"9184246e2cb7af61961d8981d8dd42d9","server\/src\/Http\/Requests\/UpdateFleetRequest.php":"6b54402080f8a673e30e2badb02d6c9f","server\/src\/Http\/Requests\/UpdateOrderRequest.php":"1214b8a268a0b46e408aa9a2c6755e7a","server\/src\/Http\/Requests\/UpdatePayloadRequest.php":"22638b0617e45be64cfb3f983a9162d4","server\/src\/Http\/Requests\/UpdatePlaceRequest.php":"40ca77913d5fb5224171c5ecf044b384","server\/src\/Http\/Requests\/UpdatePurchaseRateRequest.php":"c19fe57a052b37bbffd4a72578127fd7","server\/src\/Http\/Requests\/UpdateServiceAreaRequest.php":"c3980842d556327c4b2c4b70e477129d","server\/src\/Http\/Requests\/UpdateServiceQuoteRequest.php":"4bbf675e908b71396b9918e49cc144d4","server\/src\/Http\/Requests\/UpdateServiceRateRequest.php":"64f085a9252bfe88295ef351c817e108","server\/src\/Http\/Requests\/UpdateTrackingNumberRequest.php":"27a44d43609b0bff7eed4d6dc5c3a133","server\/src\/Http\/Requests\/UpdateTrackingStatusRequest.php":"2ab7575762fa0b8e632d2821e667e08a","server\/src\/Http\/Requests\/UpdateVehicleRequest.php":"ba204da78914ce570e91d541280199f4","server\/src\/Http\/Requests\/UpdateVendorRequest.php":"d184c8508e8da4a8a9399967588d329c","server\/src\/Http\/Requests\/UpdateZoneRequest.php":"a5fbd55d859a8b770aa523bb263495bf","server\/src\/Http\/Resources\/Internal\/v1\/IntegratedVendorFacilitator.php":"db8931ceb9b38ffdb0b81af69ac5dd88","server\/src\/Http\/Resources\/Internal\/v1\/Vehicle.php":"a2d6df634ffada14f6e5507f4e31b471","server\/src\/Http\/Resources\/Internal\/v1\/Waypoint.php":"0bef4e52ce6ab351bbf1c15e0b9e8cf1","server\/src\/Http\/Resources\/v1\/Contact.php":"a3ec1a6ea8b4546f3318fbfc623988cc","server\/src\/Http\/Resources\/v1\/CurrentJob.php":"04123eabe5d931769d85ab0b166c06c1","server\/src\/Http\/Resources\/v1\/DeletedResource.php":"fa54de53967ff96f9c51173db69db43e","server\/src\/Http\/Resources\/v1\/Driver.php":"14bb9f421023aba98ddc85f080397360","server\/src\/Http\/Resources\/v1\/Entity.php":"2a1a04d14120e2fc37f99c58a06cbff5","server\/src\/Http\/Resources\/v1\/Fleet.php":"344f5ef007db8b602321de2674728f9d","server\/src\/Http\/Resources\/v1\/FuelReport.php":"1e3bc70a08646ebd18236d988d328866","server\/src\/Http\/Resources\/v1\/Order.php":"0a5cd65ef879fc840e1a43ca0cf3a087","server\/src\/Http\/Resources\/v1\/Payload.php":"7b2f570cbbbbaeab35b66b522aeb940b","server\/src\/Http\/Resources\/v1\/Place.php":"cc65582c774fd068084d7debb56f1d9c","server\/src\/Http\/Resources\/v1\/Proof.php":"791ff315d266c1f81c4765affc71d919","server\/src\/Http\/Resources\/v1\/PurchaseRate.php":"9fbda3e3ade28969d066427fbf9e9ce7","server\/src\/Http\/Resources\/v1\/ServiceArea.php":"fda686e47da8add1343ddd1dbe0c558d","server\/src\/Http\/Resources\/v1\/ServiceQuote.php":"ba058cc1099bdac763a882e4880a2288","server\/src\/Http\/Resources\/v1\/ServiceRate.php":"040144b27c38eda60d6dc4bb19d2d587","server\/src\/Http\/Resources\/v1\/ServiceRateFee.php":"35ab9d7d1423cd03918a06b6771c764c","server\/src\/Http\/Resources\/v1\/ServiceRateParcelFee.php":"175c5d23ef9e788aff083d373d0eeda6","server\/src\/Http\/Resources\/v1\/TrackingNumber.php":"1e19bf22f7865befee7d742cc5f0cf98","server\/src\/Http\/Resources\/v1\/TrackingStatus.php":"c2e24be67d3108d0090fb69064053c23","server\/src\/Http\/Resources\/v1\/Vehicle.php":"ec0f8650bb469bcc4bfa688334a433dd","server\/src\/Http\/Resources\/v1\/VehicleDevice.php":"995fbb448133d645d1527e8051367090","server\/src\/Http\/Resources\/v1\/VehicleWithoutDriver.php":"4836acc533c14911b3c40d635f01d0aa","server\/src\/Http\/Resources\/v1\/Vendor.php":"4b6b04001b915c9d2b4bf2f3b7f27683","server\/src\/Http\/Resources\/v1\/Zone.php":"ee400437a7b1a217609029827787ca3c","server\/src\/Imports\/OrdersImport.php":"d452258ecbf26e9cc9d15b293385986e","server\/src\/Integrations\/Lalamove\/Lalamove.php":"c4f7948abdc94a5734916ba35f91493e","server\/src\/Integrations\/Lalamove\/LalamoveDeliveryStop.php":"fc21ef0ade2eced6f9b3de7ba938a0e0","server\/src\/Integrations\/Lalamove\/LalamoveMarket.php":"5c28861544f3831aaccbb62076fe0dac","server\/src\/Integrations\/Lalamove\/LalamoveServiceType.php":"4ff37c7eaa1a35b4f93aa4fc6a056d90","server\/src\/Jobs\/SimulateDrivingRoute.php":"f5f993787bd010fee074190b030495aa","server\/src\/Jobs\/SimulateWaypointReached.php":"5b0eeabba0a05d0260b9003e08e2ec94","server\/src\/Listeners\/HandleOrderCanceled.php":"9f6f493e9f95a3323adcaf17db93366b","server\/src\/Listeners\/HandleOrderCreated.php":"b61fd8c33341e88473ce6c88efdc9609","server\/src\/Listeners\/HandleOrderDispatchFailed.php":"c5dbe8de974983516aedd0b6b652e126","server\/src\/Listeners\/HandleOrderDispatched.php":"7acc9183c7551710bb9dae9aa2936bab","server\/src\/Listeners\/HandleOrderDriverAssigned.php":"f5fe2f9572e8226bc8b7173db30374b9","server\/src\/Listeners\/HandleOrderReady.php":"c5f3c97a0d58b375c0a3d8d30dad2706","server\/src\/Listeners\/HandleUserRemovedFromCompany.php":"fd6cf16654c31530e81713ababd9cf2e","server\/src\/Models\/Contact.php":"ab09e2cf4c43057ec4c0f37c41a02981","server\/src\/Models\/Driver.php":"4353207e51d90e8154fa70b8199df513","server\/src\/Models\/Entity.php":"12f472f06a2a5dc58f2eda2a86803ff0","server\/src\/Models\/Fleet.php":"7d4d2e3317a959d94fc5eb1b283d83f6","server\/src\/Models\/FleetDriver.php":"46cc4e90b90c0f1e9828f66c2a0be487","server\/src\/Models\/FleetVehicle.php":"08ddc3698e7423570a4e4b7f21116046","server\/src\/Models\/FuelReport.php":"4db6bee1fdeaa19b8e7b5143d255f7ec","server\/src\/Models\/IntegratedVendor.php":"875ca14f395892245346985cbe93ba43","server\/src\/Models\/Issue.php":"e3c61eb4cd36e5adfc8827c5a1db90fd","server\/src\/Models\/Order.php":"66912dd3ba848c5c0c6b87c7b52b9952","server\/src\/Models\/Payload.php":"dbcdcddcc3241e152484254b7796d6f7","server\/src\/Models\/Place.php":"fd68fd5f8af4cd8b2d47e92d1bbb0d8b","server\/src\/Models\/Position.php":"7b58977f6922c6e7469515760756e829","server\/src\/Models\/Proof.php":"49ed6e125536d54e97c29523b58547d6","server\/src\/Models\/PurchaseRate.php":"53ca67fd48c5dfc5e51a267759e1df37","server\/src\/Models\/Route.php":"a90f920bf2e7b606ed9df07e00ef7f10","server\/src\/Models\/ServiceArea.php":"174d064379f534df3fee36da549e0636","server\/src\/Models\/ServiceQuote.php":"924bc76e55a1bb9e890710c5c94f9d99","server\/src\/Models\/ServiceQuoteItem.php":"3f27bb5b80249181874591411c946f42","server\/src\/Models\/ServiceRate.php":"a465d7b6bed4099678322747935f1ee6","server\/src\/Models\/ServiceRateFee.php":"925ed246c6a325aff83d8919c374985d","server\/src\/Models\/ServiceRateParcelFee.php":"48681a6341e5e1b25d04b773daf5bd52","server\/src\/Models\/TrackingNumber.php":"eb4d7d9f728c449d05c53f9b3c0f288c","server\/src\/Models\/TrackingStatus.php":"ccd5713b20bb0e26f080d79de4557743","server\/src\/Models\/Vehicle.php":"5135bd79f85b0688d0f6edcd87c96a80","server\/src\/Models\/VehicleDevice.php":"2794158563a8f1a8af010b2286d2f73e","server\/src\/Models\/Vendor.php":"321ecb0c145dfb514247a4f96c37741c","server\/src\/Models\/Waypoint.php":"00f317df1eb1101254b831e8c82b9aeb","server\/src\/Models\/Zone.php":"ed09ca0f4865496a32d8240a0e28c1c4","server\/src\/Notifications\/OrderAssigned.php":"a72864bf608bc82bf7ba5b2c3bb9028e","server\/src\/Notifications\/OrderCanceled.php":"da52e1f72cbec406d6afcf87194df079","server\/src\/Notifications\/OrderDispatchFailed.php":"f5576853d850481697d7e751a975b5e5","server\/src\/Notifications\/OrderDispatched.php":"7e2ff9676a455c9df978c2c20a841209","server\/src\/Notifications\/OrderPing.php":"c084d005538ff3efa9a605522ad49778","server\/src\/Notifications\/OrderSplit.php":"977e36036ffa5a07f205301e76f2f7e9","server\/src\/Observers\/DriverObserver.php":"e9552b316e6edf26dee1943ac9ec2b0e","server\/src\/Observers\/OrderObserver.php":"3d7515e9b13cb194276ce90768d2c81d","server\/src\/Observers\/PayloadObserver.php":"90f8982f0e7a308755339bb299d6b918","server\/src\/Observers\/PlaceObserver.php":"af70b1462a9ebec53a247ba53609027e","server\/src\/Observers\/PurchaseRateObserver.php":"ae72dc17fd923a1ce0a66f2b272a1cea","server\/src\/Observers\/ServiceAreaObserver.php":"e3b8d7bfa9e60f792f0ef69ef7314f3c","server\/src\/Observers\/ServiceRateObserver.php":"2ddb88d66478da65abff59a9c99f2d59","server\/src\/Observers\/TrackingNumberObserver.php":"da8d0ced2474adc404e960e67c255c4f","server\/src\/Observers\/UserObserver.php":"361569be035dce4e6150256221d37c2b","server\/src\/Observers\/VehicleObserver.php":"40d60fac7d4389ac97f91eb8e73193cd","server\/src\/Providers\/EventServiceProvider.php":"4f1de31729dfb4ee92767ecf7f3a7453","server\/src\/Providers\/FleetOpsServiceProvider.php":"40c991a01691363666f72624f0104c67","server\/src\/Rules\/ResolvablePoint.php":"8cb3dbd26af7bad30d34efde34850591","server\/src\/Scopes\/DriverScope.php":"a0eef7e2e1e2a800ca57fd46508a592c","server\/src\/Support\/Algo.php":"388c4355a5a8683ff153393304622fc6","server\/src\/Support\/DistanceMatrix.php":"99f60475548651651fb3534c512f4396","server\/src\/Support\/Encoding\/Polyline.php":"611bb9642ec239bc7b90e56dd64257f7","server\/src\/Support\/Flow.php":"027df53b10377346fcdd0c95753052ba","server\/src\/Support\/Geocoding.php":"7be23ff5b5aed94b812bc509a38b8c13","server\/src\/Support\/IntegratedVendors.php":"a4a2866f3d25215170f30312dbf898e3","server\/src\/Support\/Metrics.php":"2b6fa44fe95b5bd7a6e5be1f999381a7","server\/src\/Support\/OSRM.php":"076625020670219b2effbe80a6eca8a7","server\/src\/Support\/ParsePhone.php":"1175df80d8cc93eaf4549af7f022c921","server\/src\/Support\/Utils.php":"5c22ced8541bef521113cf2528133aa0","server\/src\/Traits\/HasTrackingNumber.php":"5cc14345844cee74c0a9089ebc80f442","server\/src\/routes.php":"126804b870d25a5f346f79222ed3170c",".php-cs-fixer.php":"97d0e7d944ae71fb5a3344df8ae2cd44"}}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
$finder = PhpCsFixer\Finder::create()
|
|
4
|
+
->in(__DIR__ . DIRECTORY_SEPARATOR . 'server' . DIRECTORY_SEPARATOR . 'tests')
|
|
5
|
+
->in(__DIR__ . DIRECTORY_SEPARATOR . 'server' . DIRECTORY_SEPARATOR . 'src')
|
|
6
|
+
->append(['.php-cs-fixer.php']);
|
|
7
|
+
|
|
8
|
+
$rules = [
|
|
9
|
+
'@Symfony' => true,
|
|
10
|
+
'phpdoc_no_empty_return' => false,
|
|
11
|
+
'array_syntax' => ['syntax' => 'short'],
|
|
12
|
+
'yoda_style' => false,
|
|
13
|
+
'binary_operator_spaces' => [
|
|
14
|
+
'operators' => [
|
|
15
|
+
'=>' => 'align',
|
|
16
|
+
'=' => 'align',
|
|
17
|
+
],
|
|
18
|
+
],
|
|
19
|
+
'concat_space' => ['spacing' => 'one'],
|
|
20
|
+
'not_operator_with_space' => false,
|
|
21
|
+
'increment_style' => ['style' => 'post'],
|
|
22
|
+
'indentation_type' => true,
|
|
23
|
+
'single_quote' => true,
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
return (new PhpCsFixer\Config())
|
|
27
|
+
->setUsingCache(true)
|
|
28
|
+
->setRules($rules)
|
|
29
|
+
->setFinder($finder);
|
package/LICENSE.md
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2023 Fleetbase
|
|
4
4
|
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
6
11
|
|
|
7
|
-
The above copyright notice and this permission notice shall be included in all
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
8
14
|
|
|
9
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,32 +1,122 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://flb-assets.s3.ap-southeast-1.amazonaws.com/static/fleetbase-logo-svg.svg" width="380" height="100" />
|
|
3
|
+
</p>
|
|
4
|
+
<p align="center">
|
|
5
|
+
Open-source Fleet & Transport Management Extension for Fleetbase
|
|
6
|
+
</p>
|
|
2
7
|
|
|
3
|
-
|
|
8
|
+
---
|
|
4
9
|
|
|
10
|
+
## Overview
|
|
5
11
|
|
|
6
|
-
|
|
12
|
+
This monorepo contains both the frontend and backend components of the FleetOps extension for Fleetbase. The frontend is built using Ember.js and the backend is implemented in PHP.
|
|
7
13
|
|
|
8
|
-
|
|
9
|
-
* Ember CLI v3.24 or above
|
|
10
|
-
* Node.js v14 or above
|
|
14
|
+
### Requirements
|
|
11
15
|
|
|
16
|
+
- PHP 7.3.0 or above
|
|
17
|
+
- Ember.js v3.24 or above
|
|
18
|
+
- Ember CLI v3.24 or above
|
|
19
|
+
- Node.js v14 or above
|
|
12
20
|
|
|
13
|
-
##
|
|
21
|
+
## Structure
|
|
14
22
|
|
|
15
23
|
```
|
|
16
|
-
|
|
24
|
+
├── addon
|
|
25
|
+
├── app
|
|
26
|
+
├── assets
|
|
27
|
+
├── translations
|
|
28
|
+
├── config
|
|
29
|
+
├── node_modules
|
|
30
|
+
├── server
|
|
31
|
+
│ ├── config
|
|
32
|
+
│ ├── data
|
|
33
|
+
│ ├── migrations
|
|
34
|
+
│ ├── resources
|
|
35
|
+
│ ├── src
|
|
36
|
+
│ ├── tests
|
|
37
|
+
│ └── vendor
|
|
38
|
+
├── tests
|
|
39
|
+
├── testem.js
|
|
40
|
+
├── index.js
|
|
41
|
+
├── package.json
|
|
42
|
+
├── phpstan.neon.dist
|
|
43
|
+
├── phpunit.xml.dist
|
|
44
|
+
├── pnpm-lock.yaml
|
|
45
|
+
├── ember-cli-build.js
|
|
46
|
+
├── composer.json
|
|
47
|
+
├── CONTRIBUTING.md
|
|
48
|
+
├── LICENSE.md
|
|
49
|
+
├── README.md
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Installation
|
|
53
|
+
|
|
54
|
+
### Backend
|
|
55
|
+
|
|
56
|
+
Install the PHP packages using Composer:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
composer require fleetbase/core-api
|
|
60
|
+
composer require fleetbase/fleetops
|
|
17
61
|
```
|
|
62
|
+
### Frontend
|
|
18
63
|
|
|
64
|
+
Install the Ember.js Engine/Addon:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pnpm install @fleetbase/fleetops
|
|
68
|
+
```
|
|
19
69
|
|
|
20
70
|
## Usage
|
|
21
71
|
|
|
22
|
-
|
|
72
|
+
### Backend
|
|
73
|
+
|
|
74
|
+
🧹 Keep a modern codebase with **PHP CS Fixer**:
|
|
75
|
+
```bash
|
|
76
|
+
composer lint
|
|
77
|
+
```
|
|
23
78
|
|
|
79
|
+
⚗️ Run static analysis using **PHPStan**:
|
|
80
|
+
```bash
|
|
81
|
+
composer test:types
|
|
82
|
+
```
|
|
24
83
|
|
|
25
|
-
|
|
84
|
+
✅ Run unit tests using **PEST**
|
|
85
|
+
```bash
|
|
86
|
+
composer test:unit
|
|
87
|
+
```
|
|
26
88
|
|
|
27
|
-
|
|
89
|
+
🚀 Run the entire test suite:
|
|
90
|
+
```bash
|
|
91
|
+
composer test
|
|
92
|
+
```
|
|
28
93
|
|
|
94
|
+
### Frontend
|
|
29
95
|
|
|
30
|
-
|
|
96
|
+
🧹 Keep a modern codebase with **ESLint**:
|
|
97
|
+
```bash
|
|
98
|
+
pnpm lint
|
|
99
|
+
```
|
|
31
100
|
|
|
32
|
-
|
|
101
|
+
✅ Run unit tests using **Ember/QUnit**
|
|
102
|
+
```bash
|
|
103
|
+
pnpm test
|
|
104
|
+
pnpm test:ember
|
|
105
|
+
pnpm test:ember-compatibility
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
🚀 Start the Ember Addon/Engine
|
|
109
|
+
```bash
|
|
110
|
+
pnpm start
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
🔨 Build the Ember Addon/Engine
|
|
114
|
+
```bash
|
|
115
|
+
pnpm build
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Contributing
|
|
119
|
+
See the Contributing Guide for details on how to contribute to this project.
|
|
120
|
+
|
|
121
|
+
## License
|
|
122
|
+
This project is licensed under the MIT License.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<ContentPanel @title="Visibility Controls" @open={{true}} @pad={{true}} @panelBodyClass="bg-white dark:bg-gray-800">
|
|
2
|
+
<p class="mb-4 dark:text-white text-gray-800">Visibility controls allow you to disable sections of Fleet-Ops. Toggle the checkbox to enable or disable sections to hide in Fleet-ops.</p>
|
|
3
|
+
{{#each this.visibilitySettings as |visibilityControl|}}
|
|
4
|
+
<InputGroup @wrapperClass="mb-1i">
|
|
5
|
+
<Checkbox @value={{visibilityControl.visible}} @label={{concat visibilityControl.name " Visible"}} @onToggle={{fn (mut visibilityControl.visible)}} @helpText="Enable or disable visibility for this section in Fleet-Ops." />
|
|
6
|
+
</InputGroup>
|
|
7
|
+
{{/each}}
|
|
8
|
+
</ContentPanel>
|
|
9
|
+
|
|
10
|
+
<div class="mt-3 flex items-center justify-end">
|
|
11
|
+
<Button @type="primary" @size="lg" @icon="save" @text="Save Changes" @onClick={{this.saveVisibilitySettings}} @disabled={{this.isLoading}} @isLoading={{this.isLoading}} />
|
|
12
|
+
</div>
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import Component from '@glimmer/component';
|
|
2
|
+
import { tracked } from '@glimmer/tracking';
|
|
3
|
+
import { inject as service } from '@ember/service';
|
|
4
|
+
import { action } from '@ember/object';
|
|
5
|
+
import { isArray } from '@ember/array';
|
|
6
|
+
|
|
7
|
+
export default class AdminVisibilityControlsComponent extends Component {
|
|
8
|
+
@service fetch;
|
|
9
|
+
@tracked visibilitySettings = [
|
|
10
|
+
{ name: 'Dashboard', route: 'operations.orders', visible: true },
|
|
11
|
+
{ name: 'Service Rates', route: 'operations.service-rates', visible: true },
|
|
12
|
+
{ name: 'Drivers', route: 'management.drivers', visible: true },
|
|
13
|
+
{ name: 'Vehicles', route: 'management.vehicles', visible: true },
|
|
14
|
+
{ name: 'Fleets', route: 'management.fleets', visible: true },
|
|
15
|
+
{ name: 'Vendors', route: 'management.vendors', visible: true },
|
|
16
|
+
{ name: 'Contacts', route: 'management.contacts', visible: true },
|
|
17
|
+
{ name: 'Places', route: 'management.places', visible: true },
|
|
18
|
+
{ name: 'Fuel Reports', route: 'management.fuel-reports', visible: true },
|
|
19
|
+
{ name: 'Issues', route: 'management.issues', visible: true },
|
|
20
|
+
];
|
|
21
|
+
@tracked isLoading = false;
|
|
22
|
+
|
|
23
|
+
constructor() {
|
|
24
|
+
super(...arguments);
|
|
25
|
+
this.loadVisibilitySettings();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@action mutateVisibility(route, visible) {
|
|
29
|
+
this.visibilitySettings = [...this.visibilitySettings].map((visibilityControl) => {
|
|
30
|
+
if (visibilityControl.route === route) {
|
|
31
|
+
return {
|
|
32
|
+
...visibilityControl,
|
|
33
|
+
visible,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return visibilityControl;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@action loadVisibilitySettings() {
|
|
42
|
+
this.isLoading = true;
|
|
43
|
+
|
|
44
|
+
this.fetch
|
|
45
|
+
.get('fleet-ops/settings/visibility')
|
|
46
|
+
.then(({ visibilitySettings }) => {
|
|
47
|
+
if (isArray(visibilitySettings)) {
|
|
48
|
+
for (let i = 0; i < visibilitySettings.length; i++) {
|
|
49
|
+
const visibilityControl = visibilitySettings.objectAt(i);
|
|
50
|
+
this.mutateVisibility(visibilityControl.route, visibilityControl.visible);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
})
|
|
54
|
+
.catch((error) => {
|
|
55
|
+
this.notifications.serverError(error);
|
|
56
|
+
})
|
|
57
|
+
.finally(() => {
|
|
58
|
+
this.isLoading = false;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@action saveVisibilitySettings() {
|
|
63
|
+
this.isLoading = true;
|
|
64
|
+
|
|
65
|
+
this.fetch
|
|
66
|
+
.post('fleet-ops/settings/visibility', { visibilitySettings: this.visibilitySettings })
|
|
67
|
+
.then(({ visibilitySettings }) => {
|
|
68
|
+
if (isArray(visibilitySettings)) {
|
|
69
|
+
for (let i = 0; i < visibilitySettings.length; i++) {
|
|
70
|
+
const visibilityControl = visibilitySettings.objectAt(i);
|
|
71
|
+
this.mutateVisibility(visibilityControl.route, visibilityControl.visible);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
})
|
|
75
|
+
.catch((error) => {
|
|
76
|
+
this.notifications.serverError(error);
|
|
77
|
+
})
|
|
78
|
+
.finally(() => {
|
|
79
|
+
this.isLoading = false;
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -6,6 +6,7 @@ import { inject as service } from '@ember/service';
|
|
|
6
6
|
export default class FleetPanelComponent extends Component {
|
|
7
7
|
@service fetch;
|
|
8
8
|
@service modalsManager;
|
|
9
|
+
@service universe;
|
|
9
10
|
@service store;
|
|
10
11
|
@service fetch;
|
|
11
12
|
@tracked currentTab;
|
|
@@ -26,18 +27,26 @@ export default class FleetPanelComponent extends Component {
|
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
@action addDriver(driver) {
|
|
29
|
-
this.fetch.post('fleets/assign-driver', { driver: driver.id, fleet: this.fleet.id })
|
|
30
|
+
this.fetch.post('fleets/assign-driver', { driver: driver.id, fleet: this.fleet.id }).then(() => {
|
|
31
|
+
this.universe.trigger('fleet.driver.assigned', this.fleet, driver);
|
|
32
|
+
});
|
|
30
33
|
}
|
|
31
34
|
|
|
32
35
|
@action removeDriver(driver) {
|
|
33
|
-
this.fetch.post('fleets/remove-driver', { driver: driver.id, fleet: this.fleet.id })
|
|
36
|
+
this.fetch.post('fleets/remove-driver', { driver: driver.id, fleet: this.fleet.id }).then(() => {
|
|
37
|
+
this.universe.trigger('fleet.driver.unassigned', this.fleet, driver);
|
|
38
|
+
});
|
|
34
39
|
}
|
|
35
40
|
|
|
36
41
|
@action addVehicle(vehicle) {
|
|
37
|
-
this.fetch.post('fleets/assign-vehicle', { vehicle: vehicle.id, fleet: this.fleet.id })
|
|
42
|
+
this.fetch.post('fleets/assign-vehicle', { vehicle: vehicle.id, fleet: this.fleet.id }).then(() => {
|
|
43
|
+
this.universe.trigger('fleet.vehicle.assigned', this.fleet, vehicle);
|
|
44
|
+
});
|
|
38
45
|
}
|
|
39
46
|
|
|
40
47
|
@action removeVehicle(vehicle) {
|
|
41
|
-
this.fetch.post('fleets/remove-vehicle', { vehicle: vehicle.id, fleet: this.fleet.id })
|
|
48
|
+
this.fetch.post('fleets/remove-vehicle', { vehicle: vehicle.id, fleet: this.fleet.id }).then(() => {
|
|
49
|
+
this.universe.trigger('fleet.vehicle.unassigned', this.fleet, vehicle);
|
|
50
|
+
});
|
|
42
51
|
}
|
|
43
52
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
<div class="fleet-vehicle-listing" {{did-insert this.setupComponent}} ...attributes>
|
|
2
2
|
<div class="mb-2 flex items-center justify-between">
|
|
3
3
|
<div class="flex items-center">
|
|
4
4
|
<div class="fleet-vehicle-listing-search">
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<div class="mb-2">
|
|
2
|
+
<Button @text="Create new order" @type="primary" @size="xs" @icon="paper-plane" @iconPrefix="fas" @iconSize="sm" @wrapperClass="w-full" class="w-full" @onClick={{this.onClickCreateOrder}} />
|
|
3
|
+
</div>
|
|
4
|
+
{{#each this.universeMenuItems as |menuItem|}}
|
|
5
|
+
{{#if menuItem.renderComponentInPlace}}
|
|
6
|
+
{{component menuItem.component}}
|
|
7
|
+
{{else}}
|
|
8
|
+
<Layout::Sidebar::Item @onClick={{fn this.universe.transitionMenuItem (concat this.routePrefix "virtual") menuItem}} @item={{menuItem}} @icon={{menuItem.icon}}>{{menuItem.title}}</Layout::Sidebar::Item>
|
|
9
|
+
{{/if}}
|
|
10
|
+
{{/each}}
|
|
11
|
+
{{#each this.menuPanels as |menuPanel|}}
|
|
12
|
+
<Layout::Sidebar::Panel @open={{menuPanel.open}} @title={{menuPanel.title}}>
|
|
13
|
+
{{#each menuPanel.items as |item|}}
|
|
14
|
+
<Layout::Sidebar::Item @route={{concat this.routePrefix item.route}} @icon={{item.icon}}>{{item.title}}</Layout::Sidebar::Item>
|
|
15
|
+
{{/each}}
|
|
16
|
+
</Layout::Sidebar::Panel>
|
|
17
|
+
{{/each}}
|
|
18
|
+
{{#each this.universeMenuPanels as |menuPanel|}}
|
|
19
|
+
<Layout::Sidebar::Panel @open={{menuPanel.open}} @title={{menuPanel.title}}>
|
|
20
|
+
{{#each menuPanel.items as |menuItem|}}
|
|
21
|
+
<Layout::Sidebar::Item @onClick={{fn this.universe.transitionMenuItem (concat this.routePrefix "virtual") menuItem}} @item={{menuItem}} @icon={{menuItem.icon}}>{{menuItem.title}}</Layout::Sidebar::Item>
|
|
22
|
+
{{/each}}
|
|
23
|
+
</Layout::Sidebar::Panel>
|
|
24
|
+
{{/each}}
|
|
25
|
+
<Layout::Sidebar::Item @onClick={{this.onClickSettings}} @icon="cogs">Settings</Layout::Sidebar::Item>
|
|
26
|
+
{{yield}}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import Component from '@glimmer/component';
|
|
2
|
+
import { tracked } from '@glimmer/tracking';
|
|
3
|
+
import { inject as service } from '@ember/service';
|
|
4
|
+
import { action } from '@ember/object';
|
|
5
|
+
import { isArray } from '@ember/array';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* LayoutFleetOpsSidebarComponent
|
|
9
|
+
*
|
|
10
|
+
* This component manages the sidebar layout for Fleet Ops, including visibility and actions.
|
|
11
|
+
*/
|
|
12
|
+
export default class LayoutFleetOpsSidebarComponent extends Component {
|
|
13
|
+
@service universe;
|
|
14
|
+
@tracked routePrefix = 'console.fleet-ops.';
|
|
15
|
+
@tracked menuPanels = [];
|
|
16
|
+
@tracked universeMenuItems = [];
|
|
17
|
+
@tracked universeMenuPanels = [];
|
|
18
|
+
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
this.createMenuItemsFromUniverseRegistry();
|
|
22
|
+
this.createMenuPanels();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
createMenuItemsFromUniverseRegistry() {
|
|
26
|
+
this.universeMenuItems = this.universe.getMenuItemsFromRegistry('engine:fleet-ops');
|
|
27
|
+
this.universeMenuPanels = this.universe.getMenuPanelsFromRegistry('engine:fleet-ops');
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Initialize menu panels with visibility settings.
|
|
32
|
+
*/
|
|
33
|
+
createMenuPanels() {
|
|
34
|
+
const operationsItems = [
|
|
35
|
+
{ title: 'Dashboard', icon: 'home', route: 'operations.orders' },
|
|
36
|
+
{ title: 'Service Rates', icon: 'file-invoice-dollar', route: 'operations.service-rates' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const resourcesItems = [
|
|
40
|
+
{ title: 'Drivers', icon: 'route', route: 'management.drivers' },
|
|
41
|
+
{ title: 'Vehicles', icon: 'truck', route: 'management.vehicles' },
|
|
42
|
+
{ title: 'Fleets', icon: 'user-group', route: 'management.fleets' },
|
|
43
|
+
{ title: 'Vendors', icon: 'warehouse', route: 'management.vendors' },
|
|
44
|
+
{ title: 'Contacts', icon: 'address-book', route: 'management.contacts' },
|
|
45
|
+
{ title: 'Places', icon: 'location-dot', route: 'management.places' },
|
|
46
|
+
{ title: 'Fuel Reports', icon: 'gas-pump', route: 'management.fuel-reports' },
|
|
47
|
+
{ title: 'Issues', icon: 'triangle-exclamation', route: 'management.issues' },
|
|
48
|
+
];
|
|
49
|
+
|
|
50
|
+
const createPanel = (title, routePrefix, items = []) => ({
|
|
51
|
+
title,
|
|
52
|
+
open: true,
|
|
53
|
+
visible: this.isPanelVisible(routePrefix),
|
|
54
|
+
items: items
|
|
55
|
+
.map((item) => ({
|
|
56
|
+
...item,
|
|
57
|
+
visible: this.isItemVisible(item.route),
|
|
58
|
+
}))
|
|
59
|
+
.filter((item) => item.visible),
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
this.menuPanels = [createPanel('Operations', 'operations', operationsItems), createPanel('Resources', 'management', resourcesItems)].filter((panel) => {
|
|
63
|
+
const isVisible = panel.visible && panel.items.length > 0;
|
|
64
|
+
return isVisible;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Check if a panel should be visible based on visibility settings.
|
|
70
|
+
*
|
|
71
|
+
* @param {string} routePrefix - The route prefix to check for visibility.
|
|
72
|
+
* @returns {boolean} - Whether the panel should be visible.
|
|
73
|
+
*/
|
|
74
|
+
isPanelVisible(routePrefix) {
|
|
75
|
+
return this.isVisible(routePrefix, false);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Check if a menu item should be visible based on visibility settings.
|
|
80
|
+
*
|
|
81
|
+
* @param {string} routePrefix - The route prefix to check for visibility.
|
|
82
|
+
* @returns {boolean} - Whether the menu item should be visible.
|
|
83
|
+
*/
|
|
84
|
+
isItemVisible(routePrefix) {
|
|
85
|
+
return this.isVisible(routePrefix, true);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Utility function to check visibility based on route prefix.
|
|
90
|
+
*
|
|
91
|
+
* @param {string} routePrefix - The route prefix to check for visibility.
|
|
92
|
+
* @param {boolean} exactMatch - Whether to match the route exactly or just the prefix.
|
|
93
|
+
* @returns {boolean} - Whether the item should be visible.
|
|
94
|
+
*/
|
|
95
|
+
isVisible(routePrefix, exactMatch) {
|
|
96
|
+
const { visibilitySettings } = this.args;
|
|
97
|
+
|
|
98
|
+
if (!isArray(visibilitySettings)) {
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return visibilitySettings.some((visibilityControl) => {
|
|
103
|
+
const match = exactMatch ? visibilityControl.route === routePrefix : visibilityControl.route.startsWith(routePrefix);
|
|
104
|
+
return match && visibilityControl.visible;
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Action handler for creating an order.
|
|
110
|
+
*/
|
|
111
|
+
@action onClickCreateOrder() {
|
|
112
|
+
const { onClickCreateOrder } = this.args;
|
|
113
|
+
|
|
114
|
+
if (typeof onClickCreateOrder === 'function') {
|
|
115
|
+
onClickCreateOrder();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Action handler for opening settings.
|
|
121
|
+
*/
|
|
122
|
+
@action onClickSettings() {
|
|
123
|
+
const { onClickSettings } = this.args;
|
|
124
|
+
|
|
125
|
+
if (typeof onClickSettings === 'function') {
|
|
126
|
+
onClickSettings();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
package/addon/engine.js
CHANGED
|
@@ -3,6 +3,7 @@ import loadInitializers from 'ember-load-initializers';
|
|
|
3
3
|
import Resolver from 'ember-resolver';
|
|
4
4
|
import config from './config/environment';
|
|
5
5
|
import services from '@fleetbase/ember-core/exports/services';
|
|
6
|
+
import AdminVisibilityControlsComponent from './components/admin/visibility-controls';
|
|
6
7
|
|
|
7
8
|
const { modulePrefix } = config;
|
|
8
9
|
const externalRoutes = ['console', 'extensions'];
|
|
@@ -18,6 +19,24 @@ export default class FleetOpsEngine extends Engine {
|
|
|
18
19
|
// register menu item in header
|
|
19
20
|
universe.registerHeaderMenuItem('Fleet-Ops', 'console.fleet-ops', { icon: 'route', priority: 0 });
|
|
20
21
|
|
|
22
|
+
// register admin settings -- create a fleet-ops menu panel with it's own setting options
|
|
23
|
+
universe.registerAdminMenuPanel(
|
|
24
|
+
'Fleet-Ops Config',
|
|
25
|
+
[
|
|
26
|
+
{
|
|
27
|
+
title: 'Visibility Controls',
|
|
28
|
+
icon: 'eye',
|
|
29
|
+
component: AdminVisibilityControlsComponent,
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
{
|
|
33
|
+
slug: 'fleet-ops',
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
// create primary registry for engine
|
|
38
|
+
universe.createRegistry('engine:fleet-ops');
|
|
39
|
+
|
|
21
40
|
// register the vehicle panel
|
|
22
41
|
universe.createRegistry('component:vehicle-panel');
|
|
23
42
|
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import Route from '@ember/routing/route';
|
|
2
2
|
import { inject as service } from '@ember/service';
|
|
3
|
-
import { action } from '@ember/object';
|
|
4
3
|
|
|
5
4
|
export default class ApplicationRoute extends Route {
|
|
6
5
|
@service loader;
|
|
6
|
+
@service fetch;
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
loading(transition) {
|
|
9
9
|
const resourceName = this.getResouceName(transition);
|
|
10
10
|
this.loader.showOnInitialTransition(transition, 'section.next-view-section', resourceName ? `Loading ${resourceName}...` : `Loading...`);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
model() {
|
|
14
|
+
return this.fetch.get('fleet-ops/settings/visibility');
|
|
15
|
+
}
|
|
16
|
+
|
|
13
17
|
getResouceName(transition) {
|
|
14
18
|
const { to } = transition;
|
|
15
19
|
|