@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,129 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Notifications;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Models\Order;
|
|
6
|
+
use Fleetbase\FleetOps\Support\Utils;
|
|
7
|
+
use Illuminate\Broadcasting\Channel;
|
|
8
|
+
use Illuminate\Bus\Queueable;
|
|
9
|
+
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
10
|
+
use Illuminate\Notifications\Messages\MailMessage;
|
|
11
|
+
use Illuminate\Notifications\Notification;
|
|
12
|
+
use NotificationChannels\Apn\ApnChannel;
|
|
13
|
+
use NotificationChannels\Apn\ApnMessage;
|
|
14
|
+
use NotificationChannels\Fcm\FcmChannel;
|
|
15
|
+
use NotificationChannels\Fcm\FcmMessage;
|
|
16
|
+
use NotificationChannels\Fcm\Resources\AndroidConfig;
|
|
17
|
+
use NotificationChannels\Fcm\Resources\AndroidFcmOptions;
|
|
18
|
+
use NotificationChannels\Fcm\Resources\AndroidNotification;
|
|
19
|
+
use NotificationChannels\Fcm\Resources\ApnsConfig;
|
|
20
|
+
use NotificationChannels\Fcm\Resources\ApnsFcmOptions;
|
|
21
|
+
|
|
22
|
+
class OrderCanceled extends Notification implements ShouldQueue
|
|
23
|
+
{
|
|
24
|
+
use Queueable;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The order instance this notification is for.
|
|
28
|
+
*
|
|
29
|
+
* @var \Fleetbase\Models\Order
|
|
30
|
+
*/
|
|
31
|
+
public $order;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Create a new notification instance.
|
|
35
|
+
*
|
|
36
|
+
* @return void
|
|
37
|
+
*/
|
|
38
|
+
public function __construct(Order $order)
|
|
39
|
+
{
|
|
40
|
+
$this->order = $order->setRelations([]);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Get the notification's delivery channels.
|
|
45
|
+
*
|
|
46
|
+
* @return array
|
|
47
|
+
*/
|
|
48
|
+
public function via($notifiable)
|
|
49
|
+
{
|
|
50
|
+
return ['broadcast', 'mail', FcmChannel::class, ApnChannel::class];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Get the channels the event should broadcast on.
|
|
55
|
+
*
|
|
56
|
+
* @return \Illuminate\Broadcasting\Channel|array
|
|
57
|
+
*/
|
|
58
|
+
public function broadcastOn()
|
|
59
|
+
{
|
|
60
|
+
return [
|
|
61
|
+
new Channel('company.' . session('company', data_get($this->order, 'company.uuid'))),
|
|
62
|
+
new Channel('company.' . data_get($this->order, 'company.public_id')),
|
|
63
|
+
new Channel('api.' . session('api_credential')),
|
|
64
|
+
new Channel('order.' . $this->order->uuid),
|
|
65
|
+
new Channel('order.' . $this->order->public_id),
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Get the mail representation of the notification.
|
|
71
|
+
*
|
|
72
|
+
* @return \Illuminate\Notifications\Messages\MailMessage
|
|
73
|
+
*/
|
|
74
|
+
public function toMail($notifiable)
|
|
75
|
+
{
|
|
76
|
+
$message = (new MailMessage())
|
|
77
|
+
->subject('Order ' . $this->order->public_id . ' was canceled')
|
|
78
|
+
->line('Order ' . $this->order->public_id . ' has been canceled.')
|
|
79
|
+
->line('No further action is necessary.');
|
|
80
|
+
|
|
81
|
+
$message->action('View Details', Utils::consoleUrl('', ['shift' => 'fleet-ops/orders/view/' . $this->order->public_id]));
|
|
82
|
+
|
|
83
|
+
return $message;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Get the firebase cloud message representation of the notification.
|
|
88
|
+
*
|
|
89
|
+
* @return array
|
|
90
|
+
*/
|
|
91
|
+
public function toFcm($notifiable)
|
|
92
|
+
{
|
|
93
|
+
$notification = \NotificationChannels\Fcm\Resources\Notification::create()
|
|
94
|
+
->setTitle('Order ' . $this->order->public_id . ' was canceled')
|
|
95
|
+
->setBody('No further action is necessary.');
|
|
96
|
+
|
|
97
|
+
$message = FcmMessage::create()
|
|
98
|
+
->setData(['id' => $this->order->public_id, 'type' => 'order_canceled'])
|
|
99
|
+
->setNotification($notification)
|
|
100
|
+
->setAndroid(
|
|
101
|
+
AndroidConfig::create()
|
|
102
|
+
->setFcmOptions(AndroidFcmOptions::create()->setAnalyticsLabel('analytics'))
|
|
103
|
+
->setNotification(AndroidNotification::create()->setColor('#4391EA'))
|
|
104
|
+
)->setApns(
|
|
105
|
+
ApnsConfig::create()
|
|
106
|
+
->setFcmOptions(ApnsFcmOptions::create()->setAnalyticsLabel('analytics_ios'))
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
return $message;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Get the apns message representation of the notification.
|
|
114
|
+
*
|
|
115
|
+
* @return array
|
|
116
|
+
*/
|
|
117
|
+
public function toApn($notifiable)
|
|
118
|
+
{
|
|
119
|
+
$message = ApnMessage::create()
|
|
120
|
+
->badge(1)
|
|
121
|
+
->title('Order ' . $this->order->public_id . ' was canceled')
|
|
122
|
+
->body('No further action is necessary.')
|
|
123
|
+
->custom('type', 'order_canceled')
|
|
124
|
+
->custom('id', $this->order->public_id)
|
|
125
|
+
->action('view_order', ['id' => $this->order->public_id]);
|
|
126
|
+
|
|
127
|
+
return $message;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Notifications;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Events\OrderDispatchFailed as OrderDispatchFailedEvent;
|
|
6
|
+
use Fleetbase\FleetOps\Models\Order;
|
|
7
|
+
use Fleetbase\FleetOps\Support\Utils;
|
|
8
|
+
use Illuminate\Broadcasting\Channel;
|
|
9
|
+
use Illuminate\Bus\Queueable;
|
|
10
|
+
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
11
|
+
use Illuminate\Notifications\Messages\MailMessage;
|
|
12
|
+
use Illuminate\Notifications\Notification;
|
|
13
|
+
|
|
14
|
+
class OrderDispatchFailed extends Notification implements ShouldQueue
|
|
15
|
+
{
|
|
16
|
+
use Queueable;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The order instance this notification is for.
|
|
20
|
+
*
|
|
21
|
+
* @var \Fleetbase\Models\Order
|
|
22
|
+
*/
|
|
23
|
+
public $order;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Reason order dispatch failed.
|
|
27
|
+
*
|
|
28
|
+
* @var string
|
|
29
|
+
*/
|
|
30
|
+
public $reason;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Create a new notification instance.
|
|
34
|
+
*
|
|
35
|
+
* @return void
|
|
36
|
+
*/
|
|
37
|
+
public function __construct(Order $order, OrderDispatchFailedEvent $event)
|
|
38
|
+
{
|
|
39
|
+
$this->order = $order->setRelations([]);
|
|
40
|
+
$this->reason = $event->getReason();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Get the channels the event should broadcast on.
|
|
45
|
+
*
|
|
46
|
+
* @return \Illuminate\Broadcasting\Channel|array
|
|
47
|
+
*/
|
|
48
|
+
public function broadcastOn()
|
|
49
|
+
{
|
|
50
|
+
return [
|
|
51
|
+
new Channel('company.' . session('company', data_get($this->order, 'company.uuid'))),
|
|
52
|
+
new Channel('company.' . data_get($this->order, 'company.public_id')),
|
|
53
|
+
new Channel('api.' . session('api_credential')),
|
|
54
|
+
new Channel('order.' . $this->order->uuid),
|
|
55
|
+
new Channel('order.' . $this->order->public_id),
|
|
56
|
+
];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Get the notification's delivery channels.
|
|
61
|
+
*
|
|
62
|
+
* @return array
|
|
63
|
+
*/
|
|
64
|
+
public function via($notifiable)
|
|
65
|
+
{
|
|
66
|
+
return ['mail'];
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Get the mail representation of the notification.
|
|
71
|
+
*
|
|
72
|
+
* @return \Illuminate\Notifications\Messages\MailMessage
|
|
73
|
+
*/
|
|
74
|
+
public function toMail($notifiable)
|
|
75
|
+
{
|
|
76
|
+
return (new MailMessage())
|
|
77
|
+
->subject('Order ' . $this->order->public_id . ' has dispatch has failed!')
|
|
78
|
+
->line($this->reason)
|
|
79
|
+
->action('View Details', Utils::consoleUrl('', ['shift' => 'fleet-ops/orders/view/' . $this->order->public_id]));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Notifications;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\Events\ResourceLifecycleEvent;
|
|
6
|
+
use Fleetbase\FleetOps\Http\Resources\v1\Order as OrderResource;
|
|
7
|
+
use Fleetbase\FleetOps\Models\Order;
|
|
8
|
+
use Fleetbase\FleetOps\Support\Utils;
|
|
9
|
+
use Illuminate\Broadcasting\Channel;
|
|
10
|
+
use Illuminate\Bus\Queueable;
|
|
11
|
+
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
12
|
+
use Illuminate\Notifications\Messages\BroadcastMessage;
|
|
13
|
+
use Illuminate\Notifications\Messages\MailMessage;
|
|
14
|
+
use Illuminate\Notifications\Notification;
|
|
15
|
+
use NotificationChannels\Apn\ApnChannel;
|
|
16
|
+
use NotificationChannels\Apn\ApnMessage;
|
|
17
|
+
use NotificationChannels\Fcm\FcmChannel;
|
|
18
|
+
use NotificationChannels\Fcm\FcmMessage;
|
|
19
|
+
use NotificationChannels\Fcm\Resources\AndroidConfig;
|
|
20
|
+
use NotificationChannels\Fcm\Resources\AndroidFcmOptions;
|
|
21
|
+
use NotificationChannels\Fcm\Resources\AndroidNotification;
|
|
22
|
+
use NotificationChannels\Fcm\Resources\ApnsConfig;
|
|
23
|
+
use NotificationChannels\Fcm\Resources\ApnsFcmOptions;
|
|
24
|
+
|
|
25
|
+
class OrderDispatched extends Notification implements ShouldQueue
|
|
26
|
+
{
|
|
27
|
+
use Queueable;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The order instance this notification is for.
|
|
31
|
+
*
|
|
32
|
+
* @var \Fleetbase\Models\Order
|
|
33
|
+
*/
|
|
34
|
+
public $order;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Create a new notification instance.
|
|
38
|
+
*
|
|
39
|
+
* @return void
|
|
40
|
+
*/
|
|
41
|
+
public function __construct(Order $order)
|
|
42
|
+
{
|
|
43
|
+
$this->order = $order->setRelations([]);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Get the notification's delivery channels.
|
|
48
|
+
*
|
|
49
|
+
* @return array
|
|
50
|
+
*/
|
|
51
|
+
public function via($notifiable)
|
|
52
|
+
{
|
|
53
|
+
return ['broadcast', 'mail', FcmChannel::class, ApnChannel::class];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Get the type of the notification being broadcast.
|
|
58
|
+
*
|
|
59
|
+
* @return string
|
|
60
|
+
*/
|
|
61
|
+
public function broadcastType()
|
|
62
|
+
{
|
|
63
|
+
return 'order.dispatched';
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Get the channels the event should broadcast on.
|
|
68
|
+
*
|
|
69
|
+
* @return \Illuminate\Broadcasting\Channel|array
|
|
70
|
+
*/
|
|
71
|
+
public function broadcastOn()
|
|
72
|
+
{
|
|
73
|
+
return [
|
|
74
|
+
new Channel('company.' . session('company', data_get($this->order, 'company.uuid'))),
|
|
75
|
+
new Channel('company.' . data_get($this->order, 'company.public_id')),
|
|
76
|
+
new Channel('api.' . session('api_credential')),
|
|
77
|
+
new Channel('order.' . $this->order->uuid),
|
|
78
|
+
new Channel('order.' . $this->order->public_id),
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Get the broadcastable representation of the notification.
|
|
84
|
+
*
|
|
85
|
+
* @return BroadcastMessage
|
|
86
|
+
*/
|
|
87
|
+
public function toBroadcast($notifiable)
|
|
88
|
+
{
|
|
89
|
+
$model = $this->order;
|
|
90
|
+
$resource = new OrderResource($model);
|
|
91
|
+
$resourceData = [];
|
|
92
|
+
|
|
93
|
+
if ($resource) {
|
|
94
|
+
if (method_exists($resource, 'toWebhookPayload')) {
|
|
95
|
+
$resourceData = $resource->toWebhookPayload();
|
|
96
|
+
} elseif (method_exists($resource, 'toArray')) {
|
|
97
|
+
$resourceData = $resource->toArray(request());
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
$resourceData = ResourceLifecycleEvent::transformResourceChildrenToId($resourceData);
|
|
102
|
+
|
|
103
|
+
$data = [
|
|
104
|
+
'id' => uniqid('event_'),
|
|
105
|
+
'api_version' => config('api.version'),
|
|
106
|
+
'event' => 'order.dispatched',
|
|
107
|
+
'created_at' => now()->toDateTimeString(),
|
|
108
|
+
'data' => $resourceData,
|
|
109
|
+
];
|
|
110
|
+
|
|
111
|
+
return new BroadcastMessage($data);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Get the mail representation of the notification.
|
|
116
|
+
*
|
|
117
|
+
* @return \Illuminate\Notifications\Messages\MailMessage
|
|
118
|
+
*/
|
|
119
|
+
public function toMail($notifiable)
|
|
120
|
+
{
|
|
121
|
+
$message = (new MailMessage())
|
|
122
|
+
->subject('Order ' . $this->order->public_id . ' has been dispatched!')
|
|
123
|
+
->line('Order ' . $this->order->public_id . ' has been dispatched to you.');
|
|
124
|
+
|
|
125
|
+
$message->action('View Details', Utils::consoleUrl('', ['shift' => 'fleet-ops/orders/view/' . $this->order->public_id]));
|
|
126
|
+
|
|
127
|
+
return $message;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Get the firebase cloud message representation of the notification.
|
|
132
|
+
*
|
|
133
|
+
* @return array
|
|
134
|
+
*/
|
|
135
|
+
public function toFcm($notifiable)
|
|
136
|
+
{
|
|
137
|
+
$notification = \NotificationChannels\Fcm\Resources\Notification::create()
|
|
138
|
+
->setTitle('Order ' . $this->order->public_id . ' has been dispatched!')
|
|
139
|
+
->setBody('An order has just been dispatched to you and is ready to be started.');
|
|
140
|
+
|
|
141
|
+
$message = FcmMessage::create()
|
|
142
|
+
->setData(['id' => $this->order->public_id, 'type' => 'order_dispatched'])
|
|
143
|
+
->setNotification($notification)
|
|
144
|
+
->setAndroid(
|
|
145
|
+
AndroidConfig::create()
|
|
146
|
+
->setFcmOptions(AndroidFcmOptions::create()->setAnalyticsLabel('analytics'))
|
|
147
|
+
->setNotification(AndroidNotification::create()->setColor('#4391EA'))
|
|
148
|
+
)->setApns(
|
|
149
|
+
ApnsConfig::create()
|
|
150
|
+
->setFcmOptions(ApnsFcmOptions::create()->setAnalyticsLabel('analytics_ios'))
|
|
151
|
+
);
|
|
152
|
+
|
|
153
|
+
return $message;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Get the apns message representation of the notification.
|
|
158
|
+
*
|
|
159
|
+
* @return array
|
|
160
|
+
*/
|
|
161
|
+
public function toApn($notifiable)
|
|
162
|
+
{
|
|
163
|
+
$message = ApnMessage::create()
|
|
164
|
+
->badge(1)
|
|
165
|
+
->title('Order ' . $this->order->public_id . ' has been dispatched!')
|
|
166
|
+
->body('An order has just been dispatched to you and is ready to be started..')
|
|
167
|
+
->custom('type', 'order_dispatched')
|
|
168
|
+
->custom('id', $this->order->public_id)
|
|
169
|
+
->action('view_order', ['id' => $this->order->public_id]);
|
|
170
|
+
|
|
171
|
+
return $message;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Notifications;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\Events\ResourceLifecycleEvent;
|
|
6
|
+
use Fleetbase\FleetOps\Http\Resources\v1\Order as OrderResource;
|
|
7
|
+
use Fleetbase\FleetOps\Models\Order;
|
|
8
|
+
use Fleetbase\FleetOps\Support\Utils;
|
|
9
|
+
use Illuminate\Broadcasting\Channel;
|
|
10
|
+
use Illuminate\Bus\Queueable;
|
|
11
|
+
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
12
|
+
use Illuminate\Notifications\Messages\BroadcastMessage;
|
|
13
|
+
use Illuminate\Notifications\Notification;
|
|
14
|
+
use NotificationChannels\Apn\ApnChannel;
|
|
15
|
+
use NotificationChannels\Apn\ApnMessage;
|
|
16
|
+
use NotificationChannels\Fcm\FcmChannel;
|
|
17
|
+
use NotificationChannels\Fcm\FcmMessage;
|
|
18
|
+
use NotificationChannels\Fcm\Resources\AndroidConfig;
|
|
19
|
+
use NotificationChannels\Fcm\Resources\AndroidFcmOptions;
|
|
20
|
+
use NotificationChannels\Fcm\Resources\AndroidNotification;
|
|
21
|
+
use NotificationChannels\Fcm\Resources\ApnsConfig;
|
|
22
|
+
use NotificationChannels\Fcm\Resources\ApnsFcmOptions;
|
|
23
|
+
|
|
24
|
+
class OrderPing extends Notification implements ShouldQueue
|
|
25
|
+
{
|
|
26
|
+
use Queueable;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The order instance this notification is for.
|
|
30
|
+
*/
|
|
31
|
+
public Order $order;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Distance of order pickup from driver.
|
|
35
|
+
*
|
|
36
|
+
* @var int
|
|
37
|
+
*/
|
|
38
|
+
public $distance;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Create a new notification instance.
|
|
42
|
+
*
|
|
43
|
+
* @return void
|
|
44
|
+
*/
|
|
45
|
+
public function __construct(Order $order, $distance = null)
|
|
46
|
+
{
|
|
47
|
+
$this->order = $order->setRelations([]);
|
|
48
|
+
$this->distance = $distance;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Get the notification's delivery channels.
|
|
53
|
+
*
|
|
54
|
+
* @return array
|
|
55
|
+
*/
|
|
56
|
+
public function via($notifiable)
|
|
57
|
+
{
|
|
58
|
+
return ['broadcast', FcmChannel::class, ApnChannel::class];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Get the type of the notification being broadcast.
|
|
63
|
+
*
|
|
64
|
+
* @return string
|
|
65
|
+
*/
|
|
66
|
+
public function broadcastType()
|
|
67
|
+
{
|
|
68
|
+
return 'order.ping';
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Get the channels the event should broadcast on.
|
|
73
|
+
*
|
|
74
|
+
* @return \Illuminate\Broadcasting\Channel|array
|
|
75
|
+
*/
|
|
76
|
+
public function broadcastOn()
|
|
77
|
+
{
|
|
78
|
+
return [
|
|
79
|
+
new Channel('company.' . session('company', data_get($this->order, 'company.uuid'))),
|
|
80
|
+
new Channel('company.' . data_get($this->order, 'company.public_id')),
|
|
81
|
+
new Channel('api.' . session('api_credential')),
|
|
82
|
+
new Channel('order.' . $this->order->uuid),
|
|
83
|
+
new Channel('order.' . $this->order->public_id),
|
|
84
|
+
];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Get the broadcastable representation of the notification.
|
|
89
|
+
*
|
|
90
|
+
* @return BroadcastMessage
|
|
91
|
+
*/
|
|
92
|
+
public function toBroadcast($notifiable)
|
|
93
|
+
{
|
|
94
|
+
$model = $this->order;
|
|
95
|
+
$resource = new OrderResource($model);
|
|
96
|
+
$resourceData = [];
|
|
97
|
+
|
|
98
|
+
if ($resource) {
|
|
99
|
+
if (method_exists($resource, 'toWebhookPayload')) {
|
|
100
|
+
$resourceData = $resource->toWebhookPayload();
|
|
101
|
+
} elseif (method_exists($resource, 'toArray')) {
|
|
102
|
+
$resourceData = $resource->toArray(request());
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
$resourceData = ResourceLifecycleEvent::transformResourceChildrenToId($resourceData);
|
|
107
|
+
|
|
108
|
+
$data = [
|
|
109
|
+
'id' => uniqid('event_'),
|
|
110
|
+
'api_version' => config('api.version'),
|
|
111
|
+
'event' => 'order.ping',
|
|
112
|
+
'created_at' => now()->toDateTimeString(),
|
|
113
|
+
'data' => $resourceData,
|
|
114
|
+
];
|
|
115
|
+
|
|
116
|
+
return new BroadcastMessage($data);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Get the firebase cloud message representation of the notification.
|
|
121
|
+
*
|
|
122
|
+
* @return array
|
|
123
|
+
*/
|
|
124
|
+
public function toFcm($notifiable)
|
|
125
|
+
{
|
|
126
|
+
$notification = \NotificationChannels\Fcm\Resources\Notification::create()
|
|
127
|
+
->setTitle('New incoming order!')
|
|
128
|
+
->setBody($this->distance ? 'New order available for pickup about ' . Utils::formatMeters($this->distance, false) . ' away' : 'New order is available for pickup.');
|
|
129
|
+
|
|
130
|
+
$message = FcmMessage::create()
|
|
131
|
+
->setData(['id' => $this->order->public_id, 'type' => 'order_ping'])
|
|
132
|
+
->setNotification($notification)
|
|
133
|
+
->setAndroid(
|
|
134
|
+
AndroidConfig::create()
|
|
135
|
+
->setFcmOptions(AndroidFcmOptions::create()->setAnalyticsLabel('analytics'))
|
|
136
|
+
->setNotification(AndroidNotification::create()->setColor('#4391EA'))
|
|
137
|
+
)->setApns(
|
|
138
|
+
ApnsConfig::create()
|
|
139
|
+
->setFcmOptions(ApnsFcmOptions::create()->setAnalyticsLabel('analytics_ios'))
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
return $message;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Get the apns message representation of the notification.
|
|
147
|
+
*
|
|
148
|
+
* @return array
|
|
149
|
+
*/
|
|
150
|
+
public function toApn($notifiable)
|
|
151
|
+
{
|
|
152
|
+
$message = ApnMessage::create()
|
|
153
|
+
->badge(1)
|
|
154
|
+
->title('New incoming order!')
|
|
155
|
+
->body($this->distance ? 'New order available for pickup about ' . Utils::formatMeters($this->distance, false) . ' away' : 'New order is available for pickup.')
|
|
156
|
+
->custom('type', 'order_ping')
|
|
157
|
+
->custom('id', $this->order->public_id)
|
|
158
|
+
->action('view_order', ['id' => $this->order->public_id]);
|
|
159
|
+
|
|
160
|
+
return $message;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Notifications;
|
|
4
|
+
|
|
5
|
+
use Illuminate\Bus\Queueable;
|
|
6
|
+
// use Illuminate\Contracts\Queue\ShouldQueue;
|
|
7
|
+
use Illuminate\Notifications\Messages\MailMessage;
|
|
8
|
+
use Illuminate\Notifications\Notification;
|
|
9
|
+
|
|
10
|
+
class OrderSplit extends Notification
|
|
11
|
+
{
|
|
12
|
+
use Queueable;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Create a new notification instance.
|
|
16
|
+
*
|
|
17
|
+
* @return void
|
|
18
|
+
*/
|
|
19
|
+
public function __construct()
|
|
20
|
+
{
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Get the notification's delivery channels.
|
|
25
|
+
*
|
|
26
|
+
* @return array
|
|
27
|
+
*/
|
|
28
|
+
public function via($notifiable)
|
|
29
|
+
{
|
|
30
|
+
return ['mail'];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Get the mail representation of the notification.
|
|
35
|
+
*
|
|
36
|
+
* @return \Illuminate\Notifications\Messages\MailMessage
|
|
37
|
+
*/
|
|
38
|
+
public function toMail($notifiable)
|
|
39
|
+
{
|
|
40
|
+
return (new MailMessage())
|
|
41
|
+
->line('The introduction to the notification.')
|
|
42
|
+
->action('Notification Action', url('/'))
|
|
43
|
+
->line('Thank you for using our application!');
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Get the array representation of the notification.
|
|
48
|
+
*
|
|
49
|
+
* @return array
|
|
50
|
+
*/
|
|
51
|
+
public function toArray($notifiable)
|
|
52
|
+
{
|
|
53
|
+
return [
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Observers;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Models\Driver;
|
|
6
|
+
use Fleetbase\Models\User;
|
|
7
|
+
use Grimzy\LaravelMysqlSpatial\Types\Point;
|
|
8
|
+
|
|
9
|
+
class DriverObserver
|
|
10
|
+
{
|
|
11
|
+
/**
|
|
12
|
+
* Handle the Driver "creating" event.
|
|
13
|
+
*
|
|
14
|
+
* @return void
|
|
15
|
+
*/
|
|
16
|
+
public function creating(Driver $driver)
|
|
17
|
+
{
|
|
18
|
+
// if the driver has no default location set one
|
|
19
|
+
if (empty($driver->location)) {
|
|
20
|
+
$driver->location = new Point(0, 0);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Handle the Driver "deleted" event.
|
|
26
|
+
*
|
|
27
|
+
* @return void
|
|
28
|
+
*/
|
|
29
|
+
public function deleted(Driver $driver)
|
|
30
|
+
{
|
|
31
|
+
// if the driver is deleted, delete their user account assosciated as well
|
|
32
|
+
User::where(['uuid' => $driver->user_uuid, 'type' => 'driver'])->delete();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Observers;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Models\Order;
|
|
6
|
+
|
|
7
|
+
class OrderObserver
|
|
8
|
+
{
|
|
9
|
+
/**
|
|
10
|
+
* Handle the Order "updated" event.
|
|
11
|
+
*
|
|
12
|
+
* @return void
|
|
13
|
+
*/
|
|
14
|
+
public function updated(Order $order)
|
|
15
|
+
{
|
|
16
|
+
$order->setDriverLocationAsPickup();
|
|
17
|
+
|
|
18
|
+
if ($order->wasChanged('driver_assigned_uuid')) {
|
|
19
|
+
$order->notifyDriverAssigned();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Handle the Order "deleted" event.
|
|
25
|
+
*
|
|
26
|
+
* @return void
|
|
27
|
+
*/
|
|
28
|
+
public function deleted(Order $order)
|
|
29
|
+
{
|
|
30
|
+
if ($order->isIntegratedVendorOrder()) {
|
|
31
|
+
$order->facilitator->provider()->callback('onDeleted', $order);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Observers;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Models\Payload;
|
|
6
|
+
|
|
7
|
+
class PayloadObserver
|
|
8
|
+
{
|
|
9
|
+
/**
|
|
10
|
+
* Handle the Payload "creating" event.
|
|
11
|
+
*
|
|
12
|
+
* @return void
|
|
13
|
+
*/
|
|
14
|
+
public function created(Payload $payload)
|
|
15
|
+
{
|
|
16
|
+
// load the order
|
|
17
|
+
$payload->updateOrderDistanceAndTime();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Handle the Payload "updating" event.
|
|
22
|
+
*
|
|
23
|
+
* @return void
|
|
24
|
+
*/
|
|
25
|
+
public function updating(Payload $payload)
|
|
26
|
+
{
|
|
27
|
+
$waypoints = request()->array('payload.waypoints');
|
|
28
|
+
$payload->updateWaypoints($waypoints);
|
|
29
|
+
}
|
|
30
|
+
}
|