@fleetbase/fleetops-engine 0.2.6 → 0.2.8
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.php +29 -0
- package/LICENSE.md +16 -4
- package/README.md +103 -13
- package/composer.json +85 -0
- package/extension.json +10 -0
- package/package.json +3 -3
- 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,137 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Console\Commands;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Models\Driver;
|
|
6
|
+
use Fleetbase\FleetOps\Models\Order;
|
|
7
|
+
use Fleetbase\FleetOps\Support\Utils;
|
|
8
|
+
use Grimzy\LaravelMysqlSpatial\Types\Point;
|
|
9
|
+
use Illuminate\Console\Command;
|
|
10
|
+
use Illuminate\Support\Carbon;
|
|
11
|
+
|
|
12
|
+
class DispatchAdhocOrders extends Command
|
|
13
|
+
{
|
|
14
|
+
/**
|
|
15
|
+
* The name and signature of the console command.
|
|
16
|
+
*
|
|
17
|
+
* @var string
|
|
18
|
+
*/
|
|
19
|
+
protected $signature = 'fleetops:dispatch-adhoc {--sandbox} {--testing}';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The console command description.
|
|
23
|
+
*
|
|
24
|
+
* @var string
|
|
25
|
+
*/
|
|
26
|
+
protected $description = 'Dispatch & ping adhoc orders where no driver is assigned, only if order isn\'t assigned after 2 minutes';
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Execute the console command.
|
|
30
|
+
*
|
|
31
|
+
* This method is responsible for the main logic of the command.
|
|
32
|
+
* It fetches dispatchable orders, notifies about the current time and number of orders,
|
|
33
|
+
* and then dispatches each order if there are nearby drivers.
|
|
34
|
+
*
|
|
35
|
+
* @return int
|
|
36
|
+
*/
|
|
37
|
+
public function handle()
|
|
38
|
+
{
|
|
39
|
+
// Set UTC as default timezone
|
|
40
|
+
date_default_timezone_set('UTC');
|
|
41
|
+
|
|
42
|
+
// Get all dispatchable orders
|
|
43
|
+
$orders = $this->getDispatchableOrders();
|
|
44
|
+
|
|
45
|
+
// Notify Current Time and # of Orders in Alera
|
|
46
|
+
$this->alert('Found (' . $orders->count() . ') Orders to be Dispatched -- Current Time: ' . Carbon::now()->toDateTimeString());
|
|
47
|
+
|
|
48
|
+
// Iterate for each order
|
|
49
|
+
$orders->each(
|
|
50
|
+
function ($order) {
|
|
51
|
+
$pickup = $order->getPickupLocation();
|
|
52
|
+
$distance = $order->getAdhocPingDistance();
|
|
53
|
+
|
|
54
|
+
if (!Utils::isPoint($pickup)) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Get nearby drivers for this order
|
|
59
|
+
$drivers = $this->getNearbyDriversForOrder($order, $pickup, $distance);
|
|
60
|
+
|
|
61
|
+
// Inform
|
|
62
|
+
$this->alert('Found (' . $drivers->count() . ') driver within ' . $distance . ' meters of the pickup location for order ' . $order->public_id);
|
|
63
|
+
|
|
64
|
+
// Dispatch if there is nearby drivers
|
|
65
|
+
if ($drivers->count()) {
|
|
66
|
+
$order->dispatch(true);
|
|
67
|
+
$this->info('Order ' . $order->public_id . ' dispatched!');
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Fetches dispatchable orders based on certain criteria.
|
|
75
|
+
*/
|
|
76
|
+
public function getDispatchableOrders(): \Illuminate\Database\Eloquent\Collection
|
|
77
|
+
{
|
|
78
|
+
$sandbox = Utils::castBoolean($this->option('sandbox'));
|
|
79
|
+
$interval = 4;
|
|
80
|
+
|
|
81
|
+
return Order::on($sandbox ? 'sandbox' : 'mysql')
|
|
82
|
+
->withoutGlobalScopes()
|
|
83
|
+
->where(['adhoc' => 1, 'dispatched' => 1, 'started' => 0])
|
|
84
|
+
->whereDate('dispatched_at', '<=', Carbon::now()->subMinutes($interval)->toDateTimeString())
|
|
85
|
+
->whereNull('driver_assigned_uuid')
|
|
86
|
+
->whereNull('deleted_at')
|
|
87
|
+
->where('status', '!=', 'canceled')
|
|
88
|
+
->whereHas('company', function ($q) {
|
|
89
|
+
$q->whereHas('users', function ($q) {
|
|
90
|
+
$q->whereHas('driver', function ($q) {
|
|
91
|
+
$q->where(['status' => 'active', 'online' => 1]);
|
|
92
|
+
$q->whereNull('deleted_at');
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
})
|
|
96
|
+
->whereHas('payload')
|
|
97
|
+
->with(['company', 'payload'])
|
|
98
|
+
->get();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Fetches nearby drivers for a given order based on the pickup location and distance.
|
|
103
|
+
*/
|
|
104
|
+
public function getNearbyDriversForOrder(Order $order, Point $pickup, int $distance): \Illuminate\Database\Eloquent\Collection
|
|
105
|
+
{
|
|
106
|
+
$testing = Utils::castBoolean($this->option('testing'));
|
|
107
|
+
|
|
108
|
+
if ($testing) {
|
|
109
|
+
// one for testing when cannoty be geospatially accurate
|
|
110
|
+
$drivers = Driver::where(['status' => 'active', 'online' => 1])
|
|
111
|
+
->where(function ($q) use ($order) {
|
|
112
|
+
$q->where('company_uuid', $order->company_uuid);
|
|
113
|
+
$q->orWhereHas('user', function ($q) use ($order) {
|
|
114
|
+
$q->where('company_uuid', $order->company_uuid);
|
|
115
|
+
});
|
|
116
|
+
})
|
|
117
|
+
->whereNull('deleted_at')
|
|
118
|
+
->withoutGlobalScopes()
|
|
119
|
+
->get();
|
|
120
|
+
} else {
|
|
121
|
+
$drivers = Driver::where(['status' => 'active', 'online' => 1])
|
|
122
|
+
->where(function ($q) use ($order) {
|
|
123
|
+
$q->where('company_uuid', $order->company_uuid);
|
|
124
|
+
$q->orWhereHas('user', function ($q) use ($order) {
|
|
125
|
+
$q->where('company_uuid', $order->company_uuid);
|
|
126
|
+
});
|
|
127
|
+
})
|
|
128
|
+
->whereNull('deleted_at')
|
|
129
|
+
->distanceSphere('location', $pickup, $distance)
|
|
130
|
+
->distanceSphereValue('location', $pickup)
|
|
131
|
+
->withoutGlobalScopes()
|
|
132
|
+
->get();
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return $drivers;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Console\Commands;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Models\Order;
|
|
6
|
+
use Fleetbase\FleetOps\Support\Utils;
|
|
7
|
+
use Illuminate\Console\Command;
|
|
8
|
+
use Illuminate\Support\Carbon;
|
|
9
|
+
|
|
10
|
+
class DispatchOrders extends Command
|
|
11
|
+
{
|
|
12
|
+
/**
|
|
13
|
+
* The name and signature of the console command.
|
|
14
|
+
*
|
|
15
|
+
* @var string
|
|
16
|
+
*/
|
|
17
|
+
protected $signature = 'fleetops:dispatch-orders {--sandbox=false}';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The console command description.
|
|
21
|
+
*
|
|
22
|
+
* @var string
|
|
23
|
+
*/
|
|
24
|
+
protected $description = 'Dispatches scheduled orders.';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Execute the console command.
|
|
28
|
+
*
|
|
29
|
+
* @return int
|
|
30
|
+
*/
|
|
31
|
+
public function handle()
|
|
32
|
+
{
|
|
33
|
+
// Set UTC as default timezone
|
|
34
|
+
date_default_timezone_set('UTC');
|
|
35
|
+
|
|
36
|
+
// Get all scheduled dispatchable orders
|
|
37
|
+
$orders = $this->getScheduledOrders();
|
|
38
|
+
|
|
39
|
+
// Notify Current Time and # of Orders in Alera
|
|
40
|
+
$this->alert('Found (' . $orders->count() . ') Orders Scheduled for Dispatched -- Current Time: ' . Carbon::now()->toDateTimeString());
|
|
41
|
+
|
|
42
|
+
// Dispatch each order
|
|
43
|
+
$orders->each(
|
|
44
|
+
function ($order) {
|
|
45
|
+
if ($order->shouldDispatch()) {
|
|
46
|
+
$order->dispatch();
|
|
47
|
+
|
|
48
|
+
$this->info('Order ' . $order->public_id . ' dispatched! (' . $order->scheduled_at . ')');
|
|
49
|
+
} else {
|
|
50
|
+
$this->warn('Order ' . $order->public_id . ' will be dispatched today today AT ' . $order->scheduled_at);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Fetches scheduled dispatchable orders based on certain criteria.
|
|
58
|
+
*/
|
|
59
|
+
public function getScheduledOrders(): \Illuminate\Database\Eloquent\Collection
|
|
60
|
+
{
|
|
61
|
+
$sandbox = Utils::castBoolean($this->option('sandbox'));
|
|
62
|
+
|
|
63
|
+
return Order::on($sandbox ? 'sandbox' : 'mysql')
|
|
64
|
+
->withoutGlobalScopes()
|
|
65
|
+
->where('dispatched', 0)
|
|
66
|
+
->whereIn('status', ['pending', 'created'])
|
|
67
|
+
->whereDate('scheduled_at', Carbon::today())
|
|
68
|
+
->whereNull('deleted_at')
|
|
69
|
+
->get();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Console\Commands;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Models\Order;
|
|
6
|
+
use Illuminate\Console\Command;
|
|
7
|
+
use Illuminate\Support\Carbon;
|
|
8
|
+
|
|
9
|
+
class TrackOrderDistanceAndTime extends Command
|
|
10
|
+
{
|
|
11
|
+
/**
|
|
12
|
+
* The name and signature of the console command.
|
|
13
|
+
*
|
|
14
|
+
* @var string
|
|
15
|
+
*/
|
|
16
|
+
protected $signature = 'fleetops:update-estimations';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The console command description.
|
|
20
|
+
*
|
|
21
|
+
* @var string
|
|
22
|
+
*/
|
|
23
|
+
protected $description = 'Track and update order distance and time estimations';
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Execute the console command.
|
|
27
|
+
*
|
|
28
|
+
* @return int
|
|
29
|
+
*/
|
|
30
|
+
public function handle()
|
|
31
|
+
{
|
|
32
|
+
// Set UTC as default timezone
|
|
33
|
+
date_default_timezone_set('UTC');
|
|
34
|
+
|
|
35
|
+
// Get all active/ready order
|
|
36
|
+
$orders = $this->getActiveOrders();
|
|
37
|
+
|
|
38
|
+
// Track updated orders
|
|
39
|
+
$updated = [];
|
|
40
|
+
|
|
41
|
+
// Notify Current Time and # of Orders in Alera
|
|
42
|
+
$this->alert('Found (' . $orders->count() . ') Orders to update Tracking Estimation -- Current Time: ' . Carbon::now()->toDateTimeString());
|
|
43
|
+
|
|
44
|
+
// Update for each order
|
|
45
|
+
$orders->each(
|
|
46
|
+
function ($order) use (&$updated) {
|
|
47
|
+
$updated[] = $order->setDistanceAndTime()->id;
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
// Update info
|
|
52
|
+
$this->info('Updated ' . count($updated) . '/' . $orders->count() . ' orders Distance & Time Estimations.');
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Fetches active orders.
|
|
57
|
+
*/
|
|
58
|
+
public function getActiveOrders(): \Illuminate\Database\Eloquent\Collection
|
|
59
|
+
{
|
|
60
|
+
return Order::whereNotIn('status', ['completed', 'canceled'])->whereNull(['deleted_at'])->whereNotNull('company_uuid')->whereHas('payload')->with(['payload', 'payload.waypoints', 'payload.pickup', 'payload.dropoff'])->withoutGlobalScopes()->get();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Events;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Models\Driver;
|
|
6
|
+
use Illuminate\Broadcasting\Channel;
|
|
7
|
+
use Illuminate\Broadcasting\InteractsWithSockets;
|
|
8
|
+
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
|
|
9
|
+
use Illuminate\Foundation\Events\Dispatchable;
|
|
10
|
+
use Illuminate\Queue\SerializesModels;
|
|
11
|
+
use Illuminate\Support\Carbon;
|
|
12
|
+
|
|
13
|
+
class DriverLocationChanged implements ShouldBroadcast
|
|
14
|
+
{
|
|
15
|
+
use Dispatchable;
|
|
16
|
+
use InteractsWithSockets;
|
|
17
|
+
use SerializesModels;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The event id.
|
|
21
|
+
*
|
|
22
|
+
* @var string
|
|
23
|
+
*/
|
|
24
|
+
public $eventId;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The datetime instance the broadcast ws triggered.
|
|
28
|
+
*
|
|
29
|
+
* @var string
|
|
30
|
+
*/
|
|
31
|
+
public $sentAt;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The uuid of the driver.
|
|
35
|
+
*
|
|
36
|
+
* @var string
|
|
37
|
+
*/
|
|
38
|
+
public $driverUuid;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The public id of the driver.
|
|
42
|
+
*
|
|
43
|
+
* @var string
|
|
44
|
+
*/
|
|
45
|
+
public $driverId;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The internal id of the driver.
|
|
49
|
+
*
|
|
50
|
+
* @var string
|
|
51
|
+
*/
|
|
52
|
+
public $driverInternalId;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* The name of the driver.
|
|
56
|
+
*
|
|
57
|
+
* @var string
|
|
58
|
+
*/
|
|
59
|
+
public $driverName;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* The phone of the driver.
|
|
63
|
+
*
|
|
64
|
+
* @var string
|
|
65
|
+
*/
|
|
66
|
+
public $driverPhone;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The new driver location.
|
|
70
|
+
*
|
|
71
|
+
* @var string
|
|
72
|
+
*/
|
|
73
|
+
public $location;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* The driver altitude.
|
|
77
|
+
*
|
|
78
|
+
* @var string
|
|
79
|
+
*/
|
|
80
|
+
public $altitude;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* The ndriver heading.
|
|
84
|
+
*
|
|
85
|
+
* @var string
|
|
86
|
+
*/
|
|
87
|
+
public $heading;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* The driver speed.
|
|
91
|
+
*
|
|
92
|
+
* @var string
|
|
93
|
+
*/
|
|
94
|
+
public $speed;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Optional, additional data.
|
|
98
|
+
*
|
|
99
|
+
* @var array
|
|
100
|
+
*/
|
|
101
|
+
public $additionalData = [];
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Create a new event instance.
|
|
105
|
+
*
|
|
106
|
+
* @return void
|
|
107
|
+
*/
|
|
108
|
+
public function __construct(Driver $driver, array $additionalData = [])
|
|
109
|
+
{
|
|
110
|
+
$this->eventId = uniqid('event_');
|
|
111
|
+
$this->sentAt = Carbon::now()->toDateTimeString();
|
|
112
|
+
$this->additionalData = $additionalData;
|
|
113
|
+
$this->driverUuid = $driver->uuid;
|
|
114
|
+
$this->driverId = $driver->public_id;
|
|
115
|
+
$this->driverInternalId = $driver->internal_id;
|
|
116
|
+
$this->driverName = $driver->name;
|
|
117
|
+
$this->driverPhone = $driver->phone;
|
|
118
|
+
$this->location = $driver->location;
|
|
119
|
+
$this->altitude = $driver->altitude;
|
|
120
|
+
$this->heading = $driver->heading;
|
|
121
|
+
$this->speed = $driver->speed;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Get the channels the event should broadcast on.
|
|
126
|
+
*
|
|
127
|
+
* @return \Illuminate\Broadcasting\Channel|array
|
|
128
|
+
*/
|
|
129
|
+
public function broadcastOn()
|
|
130
|
+
{
|
|
131
|
+
return [
|
|
132
|
+
new Channel('company.' . session('company')),
|
|
133
|
+
new Channel('api.' . session('api_credential')),
|
|
134
|
+
new Channel('driver.' . $this->driverId),
|
|
135
|
+
new Channel('driver.' . $this->driverUuid),
|
|
136
|
+
];
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* The event's broadcast name.
|
|
141
|
+
*
|
|
142
|
+
* @return string
|
|
143
|
+
*/
|
|
144
|
+
public function broadcastAs()
|
|
145
|
+
{
|
|
146
|
+
return 'driver.location_changed';
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Get the data to broadcast.
|
|
151
|
+
*
|
|
152
|
+
* @return array
|
|
153
|
+
*/
|
|
154
|
+
public function broadcastWith()
|
|
155
|
+
{
|
|
156
|
+
return [
|
|
157
|
+
'id' => $this->eventId,
|
|
158
|
+
'api_version' => config('api.version'),
|
|
159
|
+
'event' => $this->broadcastAs(),
|
|
160
|
+
'created_at' => $this->sentAt,
|
|
161
|
+
'data' => [
|
|
162
|
+
'id' => $this->driverId,
|
|
163
|
+
'internal_id' => $this->driverInternalId,
|
|
164
|
+
'name' => $this->driverName,
|
|
165
|
+
'phone' => $this->driverPhone,
|
|
166
|
+
'location' => $this->location,
|
|
167
|
+
'altitude' => $this->altitude,
|
|
168
|
+
'heading' => $this->heading,
|
|
169
|
+
'speed' => $this->speed,
|
|
170
|
+
'additionalData' => $this->additionalData,
|
|
171
|
+
],
|
|
172
|
+
];
|
|
173
|
+
}
|
|
174
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Events;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Models\Driver;
|
|
6
|
+
use Grimzy\LaravelMysqlSpatial\Types\Point;
|
|
7
|
+
use Illuminate\Broadcasting\Channel;
|
|
8
|
+
use Illuminate\Broadcasting\InteractsWithSockets;
|
|
9
|
+
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
|
|
10
|
+
use Illuminate\Foundation\Events\Dispatchable;
|
|
11
|
+
use Illuminate\Queue\SerializesModels;
|
|
12
|
+
use Illuminate\Support\Carbon;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Event class for when a driver's simulated location changes.
|
|
16
|
+
*
|
|
17
|
+
* This event is broadcasted to multiple channels and includes details
|
|
18
|
+
* about the driver's location, speed, heading, and other attributes.
|
|
19
|
+
*/
|
|
20
|
+
class DriverSimulatedLocationChanged implements ShouldBroadcast
|
|
21
|
+
{
|
|
22
|
+
use Dispatchable;
|
|
23
|
+
use InteractsWithSockets;
|
|
24
|
+
use SerializesModels;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The event id.
|
|
28
|
+
*
|
|
29
|
+
* @var string
|
|
30
|
+
*/
|
|
31
|
+
public $eventId;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The datetime instance the broadcast ws triggered.
|
|
35
|
+
*
|
|
36
|
+
* @var string
|
|
37
|
+
*/
|
|
38
|
+
public $sentAt;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The uuid of the driver.
|
|
42
|
+
*
|
|
43
|
+
* @var string
|
|
44
|
+
*/
|
|
45
|
+
public $driverUuid;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The public id of the driver.
|
|
49
|
+
*
|
|
50
|
+
* @var string
|
|
51
|
+
*/
|
|
52
|
+
public $driverId;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* The internal id of the driver.
|
|
56
|
+
*
|
|
57
|
+
* @var string
|
|
58
|
+
*/
|
|
59
|
+
public $driverInternalId;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* The name of the driver.
|
|
63
|
+
*
|
|
64
|
+
* @var string
|
|
65
|
+
*/
|
|
66
|
+
public $driverName;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The phone of the driver.
|
|
70
|
+
*
|
|
71
|
+
* @var string
|
|
72
|
+
*/
|
|
73
|
+
public $driverPhone;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* The new driver location.
|
|
77
|
+
*
|
|
78
|
+
* @var string
|
|
79
|
+
*/
|
|
80
|
+
public $location;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* The driver altitude.
|
|
84
|
+
*
|
|
85
|
+
* @var string
|
|
86
|
+
*/
|
|
87
|
+
public $altitude;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* The ndriver heading.
|
|
91
|
+
*
|
|
92
|
+
* @var string
|
|
93
|
+
*/
|
|
94
|
+
public $heading;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* The driver speed.
|
|
98
|
+
*
|
|
99
|
+
* @var string
|
|
100
|
+
*/
|
|
101
|
+
public $speed;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Optional, additional data.
|
|
105
|
+
*
|
|
106
|
+
* @var array
|
|
107
|
+
*/
|
|
108
|
+
public $additionalData = [];
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Create a new event instance.
|
|
112
|
+
*
|
|
113
|
+
* @return void
|
|
114
|
+
*/
|
|
115
|
+
public function __construct(Driver $driver, Point $location, array $additionalData = [])
|
|
116
|
+
{
|
|
117
|
+
$this->eventId = uniqid('event_');
|
|
118
|
+
$this->sentAt = Carbon::now()->toDateTimeString();
|
|
119
|
+
$this->driverUuid = $driver->uuid;
|
|
120
|
+
$this->driverId = $driver->public_id;
|
|
121
|
+
$this->driverInternalId = $driver->internal_id;
|
|
122
|
+
$this->driverName = $driver->name;
|
|
123
|
+
$this->driverPhone = $driver->phone;
|
|
124
|
+
$this->altitude = $driver->altitude;
|
|
125
|
+
|
|
126
|
+
// can be set in simulation
|
|
127
|
+
$this->heading = data_get($additionalData, 'heading', $driver->heading);
|
|
128
|
+
$this->speed = data_get($additionalData, 'speed', $driver->speed);
|
|
129
|
+
$this->location = $location;
|
|
130
|
+
$this->additionalData = $additionalData;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Get the channels the event should broadcast on.
|
|
135
|
+
*
|
|
136
|
+
* @return \Illuminate\Broadcasting\Channel|array
|
|
137
|
+
*/
|
|
138
|
+
public function broadcastOn()
|
|
139
|
+
{
|
|
140
|
+
return [
|
|
141
|
+
new Channel('company.' . session('company')),
|
|
142
|
+
new Channel('api.' . session('api_credential')),
|
|
143
|
+
new Channel('driver.' . $this->driverId),
|
|
144
|
+
new Channel('driver.' . $this->driverUuid),
|
|
145
|
+
];
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* The event's broadcast name.
|
|
150
|
+
*
|
|
151
|
+
* @return string
|
|
152
|
+
*/
|
|
153
|
+
public function broadcastAs()
|
|
154
|
+
{
|
|
155
|
+
return 'driver.simulated_location_changed';
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Get the data to broadcast.
|
|
160
|
+
*
|
|
161
|
+
* @return array
|
|
162
|
+
*/
|
|
163
|
+
public function broadcastWith()
|
|
164
|
+
{
|
|
165
|
+
return [
|
|
166
|
+
'id' => $this->eventId,
|
|
167
|
+
'api_version' => config('api.version'),
|
|
168
|
+
'event' => $this->broadcastAs(),
|
|
169
|
+
'created_at' => $this->sentAt,
|
|
170
|
+
'data' => [
|
|
171
|
+
'id' => $this->driverId,
|
|
172
|
+
'internal_id' => $this->driverInternalId,
|
|
173
|
+
'name' => $this->driverName,
|
|
174
|
+
'phone' => $this->driverPhone,
|
|
175
|
+
'location' => $this->location,
|
|
176
|
+
'altitude' => $this->altitude,
|
|
177
|
+
'heading' => $this->heading,
|
|
178
|
+
'speed' => $this->speed,
|
|
179
|
+
'additionalData' => $this->additionalData,
|
|
180
|
+
],
|
|
181
|
+
];
|
|
182
|
+
}
|
|
183
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Events;
|
|
4
|
+
|
|
5
|
+
use Illuminate\Broadcasting\InteractsWithSockets;
|
|
6
|
+
use Illuminate\Broadcasting\PrivateChannel;
|
|
7
|
+
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
|
|
8
|
+
use Illuminate\Foundation\Events\Dispatchable;
|
|
9
|
+
use Illuminate\Queue\SerializesModels;
|
|
10
|
+
|
|
11
|
+
class EntityDriverAssigned implements ShouldBroadcast
|
|
12
|
+
{
|
|
13
|
+
use Dispatchable;
|
|
14
|
+
use InteractsWithSockets;
|
|
15
|
+
use SerializesModels;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Create a new event instance.
|
|
19
|
+
*
|
|
20
|
+
* @return void
|
|
21
|
+
*/
|
|
22
|
+
public function __construct()
|
|
23
|
+
{
|
|
24
|
+
// @todo
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Get the channels the event should broadcast on.
|
|
29
|
+
*
|
|
30
|
+
* @return \Illuminate\Broadcasting\Channel|array
|
|
31
|
+
*/
|
|
32
|
+
public function broadcastOn()
|
|
33
|
+
{
|
|
34
|
+
return new PrivateChannel('channel-name');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Events;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\Events\ResourceLifecycleEvent;
|
|
6
|
+
|
|
7
|
+
class OrderCompleted extends ResourceLifecycleEvent
|
|
8
|
+
{
|
|
9
|
+
/**
|
|
10
|
+
* The event name.
|
|
11
|
+
*
|
|
12
|
+
* @var string
|
|
13
|
+
*/
|
|
14
|
+
public $eventName = 'completed';
|
|
15
|
+
}
|