@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
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Integrations\Lalamove;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Models\Place;
|
|
6
|
+
use Grimzy\LaravelMysqlSpatial\Eloquent\SpatialExpression;
|
|
7
|
+
use Grimzy\LaravelMysqlSpatial\Types\Point;
|
|
8
|
+
use Illuminate\Support\Str;
|
|
9
|
+
|
|
10
|
+
class LalamoveDeliveryStop
|
|
11
|
+
{
|
|
12
|
+
public $latitude;
|
|
13
|
+
public $longitude;
|
|
14
|
+
public $address;
|
|
15
|
+
public $stopId;
|
|
16
|
+
|
|
17
|
+
public function __construct($latitude, $longitude = null, ?string $address = '')
|
|
18
|
+
{
|
|
19
|
+
$this->stopId = (string) Str::uuid();
|
|
20
|
+
|
|
21
|
+
if ($latitude instanceof Place) {
|
|
22
|
+
$place = $latitude;
|
|
23
|
+
|
|
24
|
+
$this->address = $place->address;
|
|
25
|
+
|
|
26
|
+
if ($place->location instanceof SpatialExpression) {
|
|
27
|
+
$wkt = $place->location->getSpatialValue();
|
|
28
|
+
$point = Point::fromWKT($wkt);
|
|
29
|
+
|
|
30
|
+
$this->latitude = $point->getLat();
|
|
31
|
+
$this->longitude = $point->getLng();
|
|
32
|
+
} else {
|
|
33
|
+
$this->latitude = $place->location->getLat();
|
|
34
|
+
$this->longitude = $place->location->getLng();
|
|
35
|
+
}
|
|
36
|
+
} elseif ($latitude instanceof Point) {
|
|
37
|
+
$point = $latitude;
|
|
38
|
+
|
|
39
|
+
$this->latitude = $point->getLat();
|
|
40
|
+
$this->longitude = $point->getLng();
|
|
41
|
+
$this->address = $address ?? '';
|
|
42
|
+
} else {
|
|
43
|
+
$this->latitude = $latitude;
|
|
44
|
+
$this->longitude = $longitude;
|
|
45
|
+
$this->address = $address;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
public function __get(string $key)
|
|
50
|
+
{
|
|
51
|
+
$key = strtolower($key);
|
|
52
|
+
|
|
53
|
+
if (isset($this->{$key})) {
|
|
54
|
+
return $this->{$key};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
public static function createFromPlace(Place $place)
|
|
61
|
+
{
|
|
62
|
+
$latitude = $place->location->getLat();
|
|
63
|
+
$longitude = $place->location->getLng();
|
|
64
|
+
$address = $place->address;
|
|
65
|
+
|
|
66
|
+
return new static($latitude, $longitude, $address);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
public static function createFromPoint(Point $point, string $address = '')
|
|
70
|
+
{
|
|
71
|
+
$latitude = $point->getLat();
|
|
72
|
+
$longitude = $point->getLng();
|
|
73
|
+
|
|
74
|
+
return new static($latitude, $longitude, $address);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
public function toPoint()
|
|
78
|
+
{
|
|
79
|
+
return new Point($this->latitude, $this->longitude);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
public function toJson()
|
|
83
|
+
{
|
|
84
|
+
return json_encode($this->toArray());
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
public function toArray()
|
|
88
|
+
{
|
|
89
|
+
return [
|
|
90
|
+
'coordinates' => [
|
|
91
|
+
'lat' => (string) $this->latitude,
|
|
92
|
+
'lng' => (string) $this->longitude,
|
|
93
|
+
],
|
|
94
|
+
'address' => $this->address,
|
|
95
|
+
];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Integrations\Lalamove;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Support\Utils;
|
|
6
|
+
|
|
7
|
+
class LalamoveMarket
|
|
8
|
+
{
|
|
9
|
+
/**
|
|
10
|
+
* Available Markets for Lalamove.
|
|
11
|
+
*
|
|
12
|
+
* @var array
|
|
13
|
+
*/
|
|
14
|
+
public const markets = [
|
|
15
|
+
[
|
|
16
|
+
'key' => 'brazil',
|
|
17
|
+
'code' => 'BR',
|
|
18
|
+
'languages' => ['en_BR', 'pr_BR'],
|
|
19
|
+
],
|
|
20
|
+
[
|
|
21
|
+
'key' => 'hong_kong',
|
|
22
|
+
'code' => 'HK',
|
|
23
|
+
'languages' => ['en_HK', 'zh_HK'],
|
|
24
|
+
],
|
|
25
|
+
[
|
|
26
|
+
'key' => 'indonesia',
|
|
27
|
+
'code' => 'ID',
|
|
28
|
+
'languages' => ['en_ID', 'id_ID'],
|
|
29
|
+
],
|
|
30
|
+
[
|
|
31
|
+
'key' => 'malaysia',
|
|
32
|
+
'code' => 'MY',
|
|
33
|
+
'languages' => ['en_MY', 'ms_MY'],
|
|
34
|
+
],
|
|
35
|
+
[
|
|
36
|
+
'key' => 'mexico',
|
|
37
|
+
'code' => 'MX',
|
|
38
|
+
'languages' => ['en_MX', 'es_MX'],
|
|
39
|
+
],
|
|
40
|
+
[
|
|
41
|
+
'key' => 'philippines',
|
|
42
|
+
'code' => 'PH',
|
|
43
|
+
'languages' => ['en_PH'],
|
|
44
|
+
],
|
|
45
|
+
[
|
|
46
|
+
'key' => 'singapore',
|
|
47
|
+
'code' => 'SG',
|
|
48
|
+
'languages' => ['en_SG'],
|
|
49
|
+
],
|
|
50
|
+
[
|
|
51
|
+
'key' => 'taiwan',
|
|
52
|
+
'code' => 'TW',
|
|
53
|
+
'languages' => ['zh_TW'],
|
|
54
|
+
],
|
|
55
|
+
[
|
|
56
|
+
'key' => 'thailand',
|
|
57
|
+
'code' => 'TH',
|
|
58
|
+
'languages' => ['th_TH', 'en_TH'],
|
|
59
|
+
],
|
|
60
|
+
[
|
|
61
|
+
'key' => 'vietnam',
|
|
62
|
+
'code' => 'VN',
|
|
63
|
+
'languages' => ['en_VN', 'vi_VN'],
|
|
64
|
+
],
|
|
65
|
+
];
|
|
66
|
+
|
|
67
|
+
public function __construct(array $details)
|
|
68
|
+
{
|
|
69
|
+
foreach ($details as $key => $value) {
|
|
70
|
+
$this->{$key} = $value;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
public function __get(string $key)
|
|
75
|
+
{
|
|
76
|
+
$key = strtolower($key);
|
|
77
|
+
|
|
78
|
+
if (isset($this->{$key})) {
|
|
79
|
+
return $this->{$key};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
public function getCode()
|
|
86
|
+
{
|
|
87
|
+
return $this->code;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
public function getLanguages()
|
|
91
|
+
{
|
|
92
|
+
return $this->languages;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
public static function all()
|
|
96
|
+
{
|
|
97
|
+
return collect(static::markets)->mapInto(LalamoveMarket::class);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
public static function find($key)
|
|
101
|
+
{
|
|
102
|
+
if (is_callable($key)) {
|
|
103
|
+
return static::all()->first($key);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (is_string($key)) {
|
|
107
|
+
return static::all()->first(
|
|
108
|
+
function ($detail) use ($key) {
|
|
109
|
+
return isset($detail->key) && strtolower($detail->key) === strtolower($key) || isset($detail->code) && strtolower($detail->code) === strtolower($key);
|
|
110
|
+
}
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
public static function codes()
|
|
116
|
+
{
|
|
117
|
+
return static::all()->map(
|
|
118
|
+
function ($market) {
|
|
119
|
+
return Utils::get($market, 'code');
|
|
120
|
+
}
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Integrations\Lalamove;
|
|
4
|
+
|
|
5
|
+
class LalamoveServiceType
|
|
6
|
+
{
|
|
7
|
+
/**
|
|
8
|
+
* Available Service types for Lalamove.
|
|
9
|
+
*/
|
|
10
|
+
private static array $serviceTypes = [
|
|
11
|
+
// [
|
|
12
|
+
// 'key' => 'WALKER',
|
|
13
|
+
// 'description' => 'Walker',
|
|
14
|
+
// 'restrictions' => [
|
|
15
|
+
// 'length' => '40cm',
|
|
16
|
+
// 'width' => '40cm',
|
|
17
|
+
// 'height' => '40cm',
|
|
18
|
+
// 'weight' => '10kg',
|
|
19
|
+
// ],
|
|
20
|
+
// ],
|
|
21
|
+
[
|
|
22
|
+
'key' => 'MOTORCYCLE',
|
|
23
|
+
'description' => 'Motorcycle',
|
|
24
|
+
'restrictions' => [
|
|
25
|
+
'length' => '40cm',
|
|
26
|
+
'width' => '40cm',
|
|
27
|
+
'height' => '40cm',
|
|
28
|
+
'weight' => '10kg',
|
|
29
|
+
],
|
|
30
|
+
],
|
|
31
|
+
[
|
|
32
|
+
'key' => 'CAR',
|
|
33
|
+
'description' => 'Car',
|
|
34
|
+
'restrictions' => [
|
|
35
|
+
'length' => '70cm',
|
|
36
|
+
'width' => '50cm',
|
|
37
|
+
'height' => '50cm',
|
|
38
|
+
'weight' => '20kg',
|
|
39
|
+
],
|
|
40
|
+
],
|
|
41
|
+
// [
|
|
42
|
+
// 'key' => 'SEDAN',
|
|
43
|
+
// 'description' => 'Sedan',
|
|
44
|
+
// 'restrictions' => [
|
|
45
|
+
// 'length' => '150cm',
|
|
46
|
+
// 'width' => '80cm',
|
|
47
|
+
// 'height' => '80cm',
|
|
48
|
+
// 'weight' => '100kg',
|
|
49
|
+
// ],
|
|
50
|
+
// ],
|
|
51
|
+
[
|
|
52
|
+
'key' => 'VAN',
|
|
53
|
+
'description' => 'Van',
|
|
54
|
+
'restrictions' => [
|
|
55
|
+
'length' => '182cm',
|
|
56
|
+
'width' => '121cm',
|
|
57
|
+
'height' => '121cm',
|
|
58
|
+
'weight' => '800kg',
|
|
59
|
+
],
|
|
60
|
+
],
|
|
61
|
+
[
|
|
62
|
+
'key' => 'SUV',
|
|
63
|
+
'description' => 'SUV',
|
|
64
|
+
'restrictions' => [
|
|
65
|
+
'length' => '182cm',
|
|
66
|
+
'width' => '121cm',
|
|
67
|
+
'height' => '121cm',
|
|
68
|
+
'weight' => '800kg',
|
|
69
|
+
],
|
|
70
|
+
],
|
|
71
|
+
// [
|
|
72
|
+
// 'key' => 'TRUCK175',
|
|
73
|
+
// 'description' => 'Pickup Truck',
|
|
74
|
+
// 'restrictions' => [
|
|
75
|
+
// 'length' => '200cm',
|
|
76
|
+
// 'width' => '160cm',
|
|
77
|
+
// 'height' => '120cm',
|
|
78
|
+
// 'weight' => '800kg',
|
|
79
|
+
// ],
|
|
80
|
+
// ],
|
|
81
|
+
[
|
|
82
|
+
'key' => 'TRUCK330',
|
|
83
|
+
'description' => '1-Ton Lorry / Lori 1-Tan',
|
|
84
|
+
'restrictions' => [
|
|
85
|
+
'length' => '275cm',
|
|
86
|
+
'width' => '152cm',
|
|
87
|
+
'height' => '152cm',
|
|
88
|
+
'weight' => '1000kg',
|
|
89
|
+
],
|
|
90
|
+
],
|
|
91
|
+
[
|
|
92
|
+
'key' => 'TRUCK550',
|
|
93
|
+
'description' => '5.5 Ton',
|
|
94
|
+
'restrictions' => [
|
|
95
|
+
'length' => '450cm',
|
|
96
|
+
'width' => '195cm',
|
|
97
|
+
'height' => '195cm',
|
|
98
|
+
'weight' => '1200kg',
|
|
99
|
+
],
|
|
100
|
+
],
|
|
101
|
+
];
|
|
102
|
+
|
|
103
|
+
public function __construct(array $details)
|
|
104
|
+
{
|
|
105
|
+
foreach ($details as $key => $value) {
|
|
106
|
+
$this->{$key} = $value;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
public function __get(string $key)
|
|
111
|
+
{
|
|
112
|
+
$restrictions = ['length', 'width', 'height', 'weight'];
|
|
113
|
+
$key = strtolower($key);
|
|
114
|
+
|
|
115
|
+
if (isset($this->{$key})) {
|
|
116
|
+
return $this->{$key};
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (in_array($key, $restrictions)) {
|
|
120
|
+
return $this->restrictions[$key];
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
public function __call(string $key, $arguments)
|
|
127
|
+
{
|
|
128
|
+
if ($key === 'all') {
|
|
129
|
+
return collect(static::$serviceTypes)->mapInto(LalamoveServiceType::class);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (method_exists($this, $key)) {
|
|
133
|
+
$this->{$key}(...$arguments);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
public function getKey()
|
|
140
|
+
{
|
|
141
|
+
return $this->key;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
public static function all()
|
|
145
|
+
{
|
|
146
|
+
return collect(static::$serviceTypes)->mapInto(LalamoveServiceType::class);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
public static function find($key)
|
|
150
|
+
{
|
|
151
|
+
if (is_callable($key)) {
|
|
152
|
+
return static::all()->first($key);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
if (is_string($key)) {
|
|
156
|
+
return static::all()->first(function ($detail) use ($key) {
|
|
157
|
+
return isset($detail->key) && strtolower($detail->key) === strtolower($key);
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Jobs;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Models\Driver;
|
|
6
|
+
use Illuminate\Bus\Queueable;
|
|
7
|
+
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
8
|
+
use Illuminate\Foundation\Bus\Dispatchable;
|
|
9
|
+
use Illuminate\Queue\InteractsWithQueue;
|
|
10
|
+
use Illuminate\Queue\SerializesModels;
|
|
11
|
+
use Illuminate\Support\Arr;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Class SimulateDrivingRoute
|
|
15
|
+
* Simulates a driving route for a given driver by dispatching events at each waypoint.
|
|
16
|
+
*/
|
|
17
|
+
class SimulateDrivingRoute implements ShouldQueue
|
|
18
|
+
{
|
|
19
|
+
use Dispatchable;
|
|
20
|
+
use InteractsWithQueue;
|
|
21
|
+
use Queueable;
|
|
22
|
+
use SerializesModels;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @var Driver the driver for whom the route is being simulated
|
|
26
|
+
*/
|
|
27
|
+
public Driver $driver;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @var array the waypoints that make up the route
|
|
31
|
+
*/
|
|
32
|
+
public array $waypoints = [];
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The number of seconds the job can run before timing out.
|
|
36
|
+
*
|
|
37
|
+
* @var int
|
|
38
|
+
*/
|
|
39
|
+
public $timeout = 60 * 15;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The number of times the job may be attempted.
|
|
43
|
+
*
|
|
44
|
+
* @var int
|
|
45
|
+
*/
|
|
46
|
+
public $tries = 20;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Create a new job instance.
|
|
50
|
+
*
|
|
51
|
+
* @param \Fleetbase\FleetOps\Models\Driver $driver the driver for whom the route is being simulated
|
|
52
|
+
* @param array $waypoints the waypoints that make up the route
|
|
53
|
+
*/
|
|
54
|
+
public function __construct(Driver $driver, array $waypoints = [])
|
|
55
|
+
{
|
|
56
|
+
$this->driver = $driver->withoutRelations();
|
|
57
|
+
$this->waypoints = $waypoints;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Execute the job.
|
|
62
|
+
* Dispatches an event for each waypoint, simulating the driver's movement along the route.
|
|
63
|
+
*/
|
|
64
|
+
public function handle(): void
|
|
65
|
+
{
|
|
66
|
+
ini_set('memory_limit', '-1');
|
|
67
|
+
ini_set('max_execution_time', 0);
|
|
68
|
+
|
|
69
|
+
$firstWaypoint = reset($this->waypoints);
|
|
70
|
+
$remainingWaypoints = array_slice($this->waypoints, 1, null, true);
|
|
71
|
+
|
|
72
|
+
SimulateWaypointReached::withChain(
|
|
73
|
+
Arr::map(
|
|
74
|
+
$remainingWaypoints,
|
|
75
|
+
function ($waypoint, $index) {
|
|
76
|
+
return new SimulateWaypointReached($this->driver, $waypoint, ['index' => $index]);
|
|
77
|
+
}
|
|
78
|
+
)
|
|
79
|
+
)->dispatch($this->driver, $firstWaypoint, ['index' => 0]);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Jobs;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Events\DriverSimulatedLocationChanged;
|
|
6
|
+
use Fleetbase\FleetOps\Models\Driver;
|
|
7
|
+
use Grimzy\LaravelMysqlSpatial\Types\Point;
|
|
8
|
+
use Illuminate\Bus\Queueable;
|
|
9
|
+
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
10
|
+
use Illuminate\Foundation\Bus\Dispatchable;
|
|
11
|
+
use Illuminate\Queue\InteractsWithQueue;
|
|
12
|
+
use Illuminate\Queue\SerializesModels;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Class SimulateWaypointReached
|
|
16
|
+
* Simulates the reaching of a waypoint for a given driver by dispatching an event.
|
|
17
|
+
*/
|
|
18
|
+
class SimulateWaypointReached implements ShouldQueue
|
|
19
|
+
{
|
|
20
|
+
use Dispatchable;
|
|
21
|
+
use InteractsWithQueue;
|
|
22
|
+
use Queueable;
|
|
23
|
+
use SerializesModels;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @var \Fleetbase\FleetOps\Models\Driver the driver for whom the waypoint is being simulated
|
|
27
|
+
*/
|
|
28
|
+
public Driver $driver;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @var \Grimzy\LaravelMysqlSpatial\Types\Point the waypoint that the driver is simulated to have reached
|
|
32
|
+
*/
|
|
33
|
+
public Point $waypoint;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @var array additional data
|
|
37
|
+
*/
|
|
38
|
+
public array $additionalData = [];
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The number of seconds the job can run before timing out.
|
|
42
|
+
*
|
|
43
|
+
* @var int
|
|
44
|
+
*/
|
|
45
|
+
public $timeout = 60 * 15;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The number of times the job may be attempted.
|
|
49
|
+
*
|
|
50
|
+
* @var int
|
|
51
|
+
*/
|
|
52
|
+
public $tries = 20;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Create a new job instance.
|
|
56
|
+
*
|
|
57
|
+
* @param Driver $driver the driver for whom the waypoint is being simulated
|
|
58
|
+
* @param mixed $waypoint the waypoint that the driver is simulated to have reached
|
|
59
|
+
*/
|
|
60
|
+
public function __construct(Driver $driver, Point $waypoint, array $additionalData = [])
|
|
61
|
+
{
|
|
62
|
+
$this->driver = $driver;
|
|
63
|
+
$this->waypoint = $waypoint;
|
|
64
|
+
$this->additionalData = $additionalData;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Execute the job.
|
|
69
|
+
* Dispatches an event to notify that the driver has reached the simulated waypoint.
|
|
70
|
+
*/
|
|
71
|
+
public function handle(): void
|
|
72
|
+
{
|
|
73
|
+
if (data_get($this->waypoint, 'heading')) {
|
|
74
|
+
$this->additionalData['heading'] = data_get($this->waypoint, 'heading');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
event(new DriverSimulatedLocationChanged($this->driver, $this->waypoint, $this->additionalData));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Listeners;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Events\OrderCanceled;
|
|
6
|
+
use Fleetbase\FleetOps\Models\Driver;
|
|
7
|
+
use Fleetbase\FleetOps\Notifications\OrderCanceled as OrderCanceledNotification;
|
|
8
|
+
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
9
|
+
use Illuminate\Queue\InteractsWithQueue;
|
|
10
|
+
|
|
11
|
+
class HandleOrderCanceled implements ShouldQueue
|
|
12
|
+
{
|
|
13
|
+
use InteractsWithQueue;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Handle the event.
|
|
17
|
+
*
|
|
18
|
+
* @param object $event
|
|
19
|
+
*
|
|
20
|
+
* @return void
|
|
21
|
+
*/
|
|
22
|
+
public function handle(OrderCanceled $event)
|
|
23
|
+
{
|
|
24
|
+
/** @var \Fleetbase\FleetOps\Models\Order $order */
|
|
25
|
+
$order = $event->getModelRecord();
|
|
26
|
+
$location = $order->getLastLocation();
|
|
27
|
+
|
|
28
|
+
// update order activity
|
|
29
|
+
$order->setStatus('canceled');
|
|
30
|
+
$order->createActivity('Order canceled', 'Order was canceled', $location, $order->status);
|
|
31
|
+
|
|
32
|
+
if ($order->isIntegratedVendorOrder()) {
|
|
33
|
+
$order->facilitator->provider()->callback('onCanceled', $order);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// notify driver assigned order was canceled
|
|
37
|
+
if ($order->hasDriverAssigned) {
|
|
38
|
+
/** @var \Fleetbase\Models\Driver */
|
|
39
|
+
$driver = Driver::where('uuid', $order->driver_assigned_uuid)->withoutGlobalScopes()->first();
|
|
40
|
+
|
|
41
|
+
if ($driver) {
|
|
42
|
+
$driver->notify(new OrderCanceledNotification($order));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Listeners;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Models\Order;
|
|
6
|
+
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
7
|
+
use Illuminate\Queue\InteractsWithQueue;
|
|
8
|
+
|
|
9
|
+
class HandleOrderCreated implements ShouldQueue
|
|
10
|
+
{
|
|
11
|
+
use InteractsWithQueue;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Handle the event.
|
|
15
|
+
*
|
|
16
|
+
* @return void
|
|
17
|
+
*/
|
|
18
|
+
public function handle(Order $order)
|
|
19
|
+
{
|
|
20
|
+
// set google matrix based distance and time
|
|
21
|
+
$order->setDistanceAndTime();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Listeners;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Events\OrderDispatchFailed;
|
|
6
|
+
use Fleetbase\FleetOps\Notifications\OrderDispatchFailed as OrderDispatchFailedNotification;
|
|
7
|
+
use Fleetbase\Models\User;
|
|
8
|
+
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
9
|
+
use Illuminate\Queue\InteractsWithQueue;
|
|
10
|
+
|
|
11
|
+
class HandleOrderDispatchFailed implements ShouldQueue
|
|
12
|
+
{
|
|
13
|
+
use InteractsWithQueue;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Handle the event.
|
|
17
|
+
*
|
|
18
|
+
* @param object $event
|
|
19
|
+
*
|
|
20
|
+
* @return void
|
|
21
|
+
*/
|
|
22
|
+
public function handle(OrderDispatchFailed $event)
|
|
23
|
+
{
|
|
24
|
+
/** @var \Fleetbase\FleetOps\Models\Order $order */
|
|
25
|
+
$order = $event->getModelRecord();
|
|
26
|
+
|
|
27
|
+
/** @var \Fleetbase\Models\User */
|
|
28
|
+
$createdBy = User::where('uuid', $order->created_by_uuid)->first();
|
|
29
|
+
|
|
30
|
+
// notify driver assigned order was canceled
|
|
31
|
+
if ($createdBy) {
|
|
32
|
+
$createdBy->notify(new OrderDispatchFailedNotification($order, $event));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|