@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,244 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Models;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\Casts\Json;
|
|
6
|
+
use Fleetbase\Models\Model;
|
|
7
|
+
use Fleetbase\Traits\HasApiModelBehavior;
|
|
8
|
+
use Fleetbase\Traits\HasInternalId;
|
|
9
|
+
use Fleetbase\Traits\HasPublicId;
|
|
10
|
+
use Fleetbase\Traits\HasUuid;
|
|
11
|
+
use Fleetbase\Traits\Searchable;
|
|
12
|
+
use Fleetbase\Traits\TracksApiCredential;
|
|
13
|
+
use Illuminate\Notifications\Notifiable;
|
|
14
|
+
use Spatie\Activitylog\Traits\LogsActivity;
|
|
15
|
+
use Spatie\Sluggable\HasSlug;
|
|
16
|
+
use Spatie\Sluggable\SlugOptions;
|
|
17
|
+
|
|
18
|
+
class Vendor extends Model
|
|
19
|
+
{
|
|
20
|
+
use HasUuid;
|
|
21
|
+
use HasPublicId;
|
|
22
|
+
use HasApiModelBehavior;
|
|
23
|
+
use HasInternalId;
|
|
24
|
+
use TracksApiCredential;
|
|
25
|
+
use Searchable;
|
|
26
|
+
use HasSlug;
|
|
27
|
+
use LogsActivity;
|
|
28
|
+
use Notifiable;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The database table used by the model.
|
|
32
|
+
*
|
|
33
|
+
* @var string
|
|
34
|
+
*/
|
|
35
|
+
protected $table = 'vendors';
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The type of public Id to generate.
|
|
39
|
+
*
|
|
40
|
+
* @var string
|
|
41
|
+
*/
|
|
42
|
+
protected $publicIdType = 'vendor';
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* The attributes that are mass assignable.
|
|
46
|
+
*
|
|
47
|
+
* @var array
|
|
48
|
+
*/
|
|
49
|
+
protected $fillable = [
|
|
50
|
+
'_key',
|
|
51
|
+
'internal_id',
|
|
52
|
+
'company_uuid',
|
|
53
|
+
'logo_uuid',
|
|
54
|
+
'type_uuid',
|
|
55
|
+
'connect_company_uuid',
|
|
56
|
+
'business_id',
|
|
57
|
+
'name',
|
|
58
|
+
'email',
|
|
59
|
+
'website_url',
|
|
60
|
+
'meta',
|
|
61
|
+
'callbacks',
|
|
62
|
+
'phone',
|
|
63
|
+
'place_uuid',
|
|
64
|
+
'country',
|
|
65
|
+
'status',
|
|
66
|
+
'type',
|
|
67
|
+
'slug',
|
|
68
|
+
];
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* These attributes that can be queried.
|
|
72
|
+
*
|
|
73
|
+
* @var array
|
|
74
|
+
*/
|
|
75
|
+
protected $searchableColumns = ['name', 'email', 'business_id', 'company.name'];
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Dynamic attributes that are appended to object.
|
|
79
|
+
*
|
|
80
|
+
* @var array
|
|
81
|
+
*/
|
|
82
|
+
protected $appends = ['address', 'address_street', 'logo_url'];
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Filterable params.
|
|
86
|
+
*
|
|
87
|
+
* @var array
|
|
88
|
+
*/
|
|
89
|
+
protected $filterParams = ['customer_type', 'facilitator_type', 'photo_url'];
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* The attributes that should be cast to native types.
|
|
93
|
+
*
|
|
94
|
+
* @var array
|
|
95
|
+
*/
|
|
96
|
+
protected $casts = [
|
|
97
|
+
'callbacks' => Json::class,
|
|
98
|
+
'meta' => Json::class,
|
|
99
|
+
];
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Relationships to auto load with driver.
|
|
103
|
+
*
|
|
104
|
+
* @var array
|
|
105
|
+
*/
|
|
106
|
+
protected $with = ['place'];
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Properties which activity needs to be logged.
|
|
110
|
+
*
|
|
111
|
+
* @var array
|
|
112
|
+
*/
|
|
113
|
+
protected static $logAttributes = ['name', 'email', 'website_url', 'phone', 'country', 'status', 'type', 'logo_uuid', 'company_uuid'];
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Do not log empty changed.
|
|
117
|
+
*
|
|
118
|
+
* @var bool
|
|
119
|
+
*/
|
|
120
|
+
protected static $submitEmptyLogs = false;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* We only want to log changed attributes.
|
|
124
|
+
*
|
|
125
|
+
* @var bool
|
|
126
|
+
*/
|
|
127
|
+
protected static $logOnlyDirty = true;
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* The name of the subject to log.
|
|
131
|
+
*
|
|
132
|
+
* @var string
|
|
133
|
+
*/
|
|
134
|
+
protected static $logName = 'vendor';
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Get the options for generating the slug.
|
|
138
|
+
*/
|
|
139
|
+
public function getSlugOptions(): SlugOptions
|
|
140
|
+
{
|
|
141
|
+
return SlugOptions::create()
|
|
142
|
+
->generateSlugsFrom('name')
|
|
143
|
+
->saveSlugsTo('slug');
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* The attributes excluded from the model's JSON form.
|
|
148
|
+
*
|
|
149
|
+
* @var array
|
|
150
|
+
*/
|
|
151
|
+
protected $hidden = ['place'];
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
155
|
+
*/
|
|
156
|
+
public function place()
|
|
157
|
+
{
|
|
158
|
+
return $this->belongsTo(Place::class);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
163
|
+
*/
|
|
164
|
+
public function connectCompany()
|
|
165
|
+
{
|
|
166
|
+
return $this->belongsTo(\Fleetbase\Models\Company::class);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
171
|
+
*/
|
|
172
|
+
public function company()
|
|
173
|
+
{
|
|
174
|
+
return $this->belongsTo(\Fleetbase\Models\Company::class);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
|
179
|
+
*/
|
|
180
|
+
public function logo()
|
|
181
|
+
{
|
|
182
|
+
return $this->belongsTo(\Fleetbase\Models\File::class);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Get the vendor logo url.
|
|
187
|
+
*
|
|
188
|
+
* @return string
|
|
189
|
+
*/
|
|
190
|
+
public function getLogoUrlAttribute()
|
|
191
|
+
{
|
|
192
|
+
return data_get($this, 'logo.url', 'https://s3.ap-southeast-1.amazonaws.com/flb-assets/static/no-avatar.png');
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Returns the vendors place address.
|
|
197
|
+
*
|
|
198
|
+
* @return string
|
|
199
|
+
*/
|
|
200
|
+
public function getAddressAttribute()
|
|
201
|
+
{
|
|
202
|
+
return data_get($this, 'place.address_html');
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Returns the vendors place address.
|
|
207
|
+
*
|
|
208
|
+
* @return string
|
|
209
|
+
*/
|
|
210
|
+
public function getAddressStreetAttribute()
|
|
211
|
+
{
|
|
212
|
+
return data_get($this, 'place.street1');
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Notify vendor using this column.
|
|
217
|
+
*
|
|
218
|
+
* @return mixed|string
|
|
219
|
+
*/
|
|
220
|
+
public function routeNotificationForTwilio()
|
|
221
|
+
{
|
|
222
|
+
return $this->phone;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Set the vendor type or default to `vendor`.
|
|
227
|
+
*
|
|
228
|
+
* @return void
|
|
229
|
+
*/
|
|
230
|
+
public function setTypeAttribute(?string $type)
|
|
231
|
+
{
|
|
232
|
+
$this->attributes['type'] = $type ?? 'vendor';
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Set the vendor default status.
|
|
237
|
+
*
|
|
238
|
+
* @return void
|
|
239
|
+
*/
|
|
240
|
+
public function setStatusAttribute(?string $status = 'active')
|
|
241
|
+
{
|
|
242
|
+
$this->attributes['status'] = $status ?? 'active';
|
|
243
|
+
}
|
|
244
|
+
}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Models;
|
|
4
|
+
|
|
5
|
+
use Barryvdh\DomPDF\Facade\Pdf;
|
|
6
|
+
use Fleetbase\FleetOps\Support\Utils;
|
|
7
|
+
use Fleetbase\FleetOps\Traits\HasTrackingNumber;
|
|
8
|
+
use Fleetbase\Models\Model;
|
|
9
|
+
use Fleetbase\Traits\HasPublicId;
|
|
10
|
+
use Fleetbase\Traits\HasUuid;
|
|
11
|
+
use Fleetbase\Traits\TracksApiCredential;
|
|
12
|
+
use Illuminate\Support\Carbon;
|
|
13
|
+
|
|
14
|
+
class Waypoint extends Model
|
|
15
|
+
{
|
|
16
|
+
use HasUuid;
|
|
17
|
+
use HasPublicId;
|
|
18
|
+
use TracksApiCredential;
|
|
19
|
+
use HasTrackingNumber;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The database table used by the model.
|
|
23
|
+
*
|
|
24
|
+
* @var string
|
|
25
|
+
*/
|
|
26
|
+
protected $table = 'waypoints';
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The type of public Id to generate.
|
|
30
|
+
*
|
|
31
|
+
* @var string
|
|
32
|
+
*/
|
|
33
|
+
protected $publicIdType = 'waypoint';
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* These attributes that can be queried.
|
|
37
|
+
*
|
|
38
|
+
* @var array
|
|
39
|
+
*/
|
|
40
|
+
protected $searchableColumns = [];
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The attributes that are mass assignable.
|
|
44
|
+
*
|
|
45
|
+
* @var array
|
|
46
|
+
*/
|
|
47
|
+
protected $fillable = ['_key', 'company_uuid', 'place_uuid', 'tracking_number_uuid', '_import_id', 'payload_uuid', 'type', 'order'];
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Dynamic attributes that are appended to object.
|
|
51
|
+
*
|
|
52
|
+
* @var array
|
|
53
|
+
*/
|
|
54
|
+
protected $appends = ['status', 'status_code', 'tracking'];
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Relationships to always append to model.
|
|
58
|
+
*
|
|
59
|
+
* @var array
|
|
60
|
+
*/
|
|
61
|
+
protected $with = ['place'];
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* The attributes excluded from the model's JSON form.
|
|
65
|
+
*
|
|
66
|
+
* @var array
|
|
67
|
+
*/
|
|
68
|
+
protected $hidden = [];
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* The pdf source stream for label.
|
|
72
|
+
*/
|
|
73
|
+
public function pdfLabel()
|
|
74
|
+
{
|
|
75
|
+
return Pdf::loadHTML($this->label());
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* The pdf source stream for label.
|
|
80
|
+
*/
|
|
81
|
+
public function pdfLabelStream()
|
|
82
|
+
{
|
|
83
|
+
return $this->pdfLabel()->stream();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* The html for the shipment label.
|
|
88
|
+
*/
|
|
89
|
+
public function label()
|
|
90
|
+
{
|
|
91
|
+
$this->load(['trackingNumber', 'company', 'place']);
|
|
92
|
+
|
|
93
|
+
return view('labels/default', [
|
|
94
|
+
'order' => $this,
|
|
95
|
+
'dropoff' => $this->place,
|
|
96
|
+
'trackingNumber' => $this->trackingNumber,
|
|
97
|
+
'company' => $this->company,
|
|
98
|
+
])->render();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Place assosciated to order.
|
|
103
|
+
*
|
|
104
|
+
* @var Model
|
|
105
|
+
*/
|
|
106
|
+
public function place()
|
|
107
|
+
{
|
|
108
|
+
return $this->belongsTo(Place::class);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Tracking Number assosciated to waypoint.
|
|
113
|
+
*
|
|
114
|
+
* @var Model
|
|
115
|
+
*/
|
|
116
|
+
public function trackingNumber()
|
|
117
|
+
{
|
|
118
|
+
return $this->belongsTo(TrackingNumber::class);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* The proofs for this order.
|
|
123
|
+
*/
|
|
124
|
+
public function proofs()
|
|
125
|
+
{
|
|
126
|
+
return $this->hasMany(Proof::class, 'subject_uuid');
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Payload assosciated to waypoint.
|
|
131
|
+
*
|
|
132
|
+
* @var Model
|
|
133
|
+
*/
|
|
134
|
+
public function payload()
|
|
135
|
+
{
|
|
136
|
+
return $this->belongsTo(Payload::class);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* The company who manages this waypoint.
|
|
141
|
+
*
|
|
142
|
+
* @var Model
|
|
143
|
+
*/
|
|
144
|
+
public function company()
|
|
145
|
+
{
|
|
146
|
+
return $this->belongsTo(\Fleetbase\Models\Company::class);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Waypoint has completed instance.
|
|
151
|
+
*
|
|
152
|
+
* @var Model
|
|
153
|
+
*/
|
|
154
|
+
public function completed()
|
|
155
|
+
{
|
|
156
|
+
return $this->hasOne(WaypointCompleted::class, 'place_uuid', 'place_uuid')->where('payload_uuid', $this->payload_uuid);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* The tracking number for waypoint.
|
|
161
|
+
*/
|
|
162
|
+
public function getTrackingAttribute()
|
|
163
|
+
{
|
|
164
|
+
return data_get($this, 'trackingNumber.tracking_number');
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* The latest tracking status for waypoint.
|
|
169
|
+
*/
|
|
170
|
+
public function getStatusAttribute()
|
|
171
|
+
{
|
|
172
|
+
return data_get($this, 'trackingNumber.last_status');
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* The latest tracking status code for waypoint.
|
|
177
|
+
*/
|
|
178
|
+
public function getStatusCodeAttribute()
|
|
179
|
+
{
|
|
180
|
+
return data_get($this, 'trackingNumber.last_status_code');
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
public static function insertGetUuid($values = [], Payload $payload = null)
|
|
184
|
+
{
|
|
185
|
+
$instance = new static();
|
|
186
|
+
$fillable = $instance->getFillable();
|
|
187
|
+
$insertKeys = array_keys($values);
|
|
188
|
+
// clean insert data
|
|
189
|
+
foreach ($insertKeys as $key) {
|
|
190
|
+
if (!in_array($key, $fillable)) {
|
|
191
|
+
unset($values[$key]);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
$values['uuid'] = $uuid = static::generateUuid();
|
|
196
|
+
$values['public_id'] = static::generatePublicId('waypoint');
|
|
197
|
+
$values['_key'] = session('api_key') ?? 'console';
|
|
198
|
+
$values['created_at'] = Carbon::now()->toDateTimeString();
|
|
199
|
+
$values['company_uuid'] = session('company');
|
|
200
|
+
|
|
201
|
+
if ($payload) {
|
|
202
|
+
$values['payload_uuid'] = $payload->uuid;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if (isset($values['meta']) && (is_object($values['meta']) || is_array($values['meta']))) {
|
|
206
|
+
$values['meta'] = json_encode($values['meta']);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
$result = static::insert($values);
|
|
210
|
+
|
|
211
|
+
if ($result && $payload) {
|
|
212
|
+
// create tracking number for entity
|
|
213
|
+
$trackingNumberId = TrackingNumber::insertGetUuid([
|
|
214
|
+
'owner_uuid' => $uuid,
|
|
215
|
+
'owner_type' => Utils::getModelClassName('waypoint'),
|
|
216
|
+
'region' => $payload->getPickupRegion(),
|
|
217
|
+
'location' => Utils::parsePointToWkt($payload->getPickupLocation()),
|
|
218
|
+
]);
|
|
219
|
+
|
|
220
|
+
// set tracking number
|
|
221
|
+
static::where('uuid', $uuid)->update(['tracking_number_uuid' => $trackingNumberId]);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
return $result ? $uuid : false;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Models;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Casts\Polygon;
|
|
6
|
+
use Fleetbase\Models\Model;
|
|
7
|
+
use Fleetbase\Traits\HasApiModelBehavior;
|
|
8
|
+
use Fleetbase\Traits\HasPublicId;
|
|
9
|
+
use Fleetbase\Traits\HasUuid;
|
|
10
|
+
use Fleetbase\Traits\SendsWebhooks;
|
|
11
|
+
use Fleetbase\Traits\TracksApiCredential;
|
|
12
|
+
use Grimzy\LaravelMysqlSpatial\Eloquent\SpatialTrait;
|
|
13
|
+
|
|
14
|
+
class Zone extends Model
|
|
15
|
+
{
|
|
16
|
+
use HasUuid;
|
|
17
|
+
use HasPublicId;
|
|
18
|
+
use SendsWebhooks;
|
|
19
|
+
use TracksApiCredential;
|
|
20
|
+
use SpatialTrait;
|
|
21
|
+
use HasApiModelBehavior;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The type of public Id to generate.
|
|
25
|
+
*
|
|
26
|
+
* @var string
|
|
27
|
+
*/
|
|
28
|
+
protected $publicIdType = 'zone';
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The database table used by the model.
|
|
32
|
+
*
|
|
33
|
+
* @var string
|
|
34
|
+
*/
|
|
35
|
+
protected $table = 'zones';
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* These attributes that can be queried.
|
|
39
|
+
*
|
|
40
|
+
* @var array
|
|
41
|
+
*/
|
|
42
|
+
protected $searchableColumns = [];
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* The attributes that are spatial columns.
|
|
46
|
+
*
|
|
47
|
+
* @var array
|
|
48
|
+
*/
|
|
49
|
+
protected $spatialFields = ['border'];
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* The attributes that are mass assignable.
|
|
53
|
+
*
|
|
54
|
+
* @var array
|
|
55
|
+
*/
|
|
56
|
+
protected $fillable = ['_key', 'company_uuid', 'service_area_uuid', 'name', 'description', 'border', 'color', 'stroke_color', 'status'];
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The attributes that should be cast to native types.
|
|
60
|
+
*
|
|
61
|
+
* @var array
|
|
62
|
+
*/
|
|
63
|
+
protected $casts = [
|
|
64
|
+
'border' => Polygon::class,
|
|
65
|
+
];
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Dynamic attributes that are appended to object.
|
|
69
|
+
*
|
|
70
|
+
* @var array
|
|
71
|
+
*/
|
|
72
|
+
protected $appends = ['type'];
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* The attributes excluded from the model's JSON form.
|
|
76
|
+
*
|
|
77
|
+
* @var array
|
|
78
|
+
*/
|
|
79
|
+
protected $hidden = [];
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Service area for rate.
|
|
83
|
+
*
|
|
84
|
+
* @var Model
|
|
85
|
+
*/
|
|
86
|
+
public function serviceArea()
|
|
87
|
+
{
|
|
88
|
+
return $this->belongsTo(ServiceArea::class);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
public function getTypeAttribute()
|
|
92
|
+
{
|
|
93
|
+
return 'zone';
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
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 OrderAssigned 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('New order ' . $this->order->public_id . ' assigned!')
|
|
78
|
+
->line('New order ' . $this->order->public_id . ' has been assigned to you.');
|
|
79
|
+
|
|
80
|
+
if ($this->order->isScheduled) {
|
|
81
|
+
$message->line('Dispatch is scheduled for ' . $this->order->scheduled_at);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
$message->action('View Details', Utils::consoleUrl('', ['shift' => 'fleet-ops/orders/view/' . $this->order->public_id]));
|
|
85
|
+
|
|
86
|
+
return $message;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Get the firebase cloud message representation of the notification.
|
|
91
|
+
*
|
|
92
|
+
* @return array
|
|
93
|
+
*/
|
|
94
|
+
public function toFcm($notifiable)
|
|
95
|
+
{
|
|
96
|
+
$notification = \NotificationChannels\Fcm\Resources\Notification::create()
|
|
97
|
+
->setTitle('New order ' . $this->order->public_id . ' assigned!')
|
|
98
|
+
->setBody('You have a new order assigned, tap for details.');
|
|
99
|
+
|
|
100
|
+
if ($this->order->isScheduled) {
|
|
101
|
+
$notification->setBody('You have a new order scheduled for ' . $this->order->scheduled_at);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
$message = FcmMessage::create()
|
|
105
|
+
->setData(['id' => $this->order->public_id, 'type' => 'order_assigned'])
|
|
106
|
+
->setNotification($notification)
|
|
107
|
+
->setAndroid(
|
|
108
|
+
AndroidConfig::create()
|
|
109
|
+
->setFcmOptions(AndroidFcmOptions::create()->setAnalyticsLabel('analytics'))
|
|
110
|
+
->setNotification(AndroidNotification::create()->setColor('#4391EA'))
|
|
111
|
+
)->setApns(
|
|
112
|
+
ApnsConfig::create()
|
|
113
|
+
->setFcmOptions(ApnsFcmOptions::create()->setAnalyticsLabel('analytics_ios'))
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
return $message;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Get the apns message representation of the notification.
|
|
121
|
+
*
|
|
122
|
+
* @return array
|
|
123
|
+
*/
|
|
124
|
+
public function toApn($notifiable)
|
|
125
|
+
{
|
|
126
|
+
$message = ApnMessage::create()
|
|
127
|
+
->badge(1)
|
|
128
|
+
->title('New order ' . $this->order->public_id . ' assigned!')
|
|
129
|
+
->body('You have a new order assigned, tap for details.')
|
|
130
|
+
->custom('type', 'order_assigned')
|
|
131
|
+
->custom('id', $this->order->public_id)
|
|
132
|
+
->action('view_order', ['id' => $this->order->public_id]);
|
|
133
|
+
|
|
134
|
+
if ($this->order->isScheduled) {
|
|
135
|
+
$message->body('You have a new order scheduled for ' . $this->order->scheduled_at);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return $message;
|
|
139
|
+
}
|
|
140
|
+
}
|