@fleetbase/fleetops-engine 0.6.55 → 0.6.56
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/addon/components/admin/map-settings.hbs +1 -1
- package/addon/components/device/details.js +1 -1
- package/addon/components/device-event/details.hbs +192 -0
- package/addon/components/device-event/details.js +151 -0
- package/addon/components/driver/schedule.js +1 -1
- package/addon/components/layout/fleet-ops-sidebar.js +15 -9
- package/addon/components/telematic/details.hbs +1 -1
- package/addon/components/telematic/form.hbs +2 -2
- package/addon/components/telematic/settings.hbs +1 -1
- package/addon/controllers/connectivity/devices/index/details/events.js +1 -1
- package/addon/controllers/connectivity/devices/index/details/vehicle.js +2 -2
- package/addon/controllers/connectivity/events/details.js +68 -1
- package/addon/controllers/connectivity/sensors/index.js +4 -0
- package/addon/controllers/connectivity/telematics/details/events.js +1 -1
- package/addon/controllers/connectivity/telematics/details/sensors.js +4 -0
- package/addon/controllers/settings/map.js +15 -0
- package/addon/instance-initializers/register-vroom-allocation.js +1 -1
- package/addon/routes/connectivity/events/details.js +26 -1
- package/addon/routes/management/vehicles/index/details.js +3 -1
- package/addon/services/map-adapter/google.js +25 -0
- package/addon/services/map-adapter/leaflet.js +1 -1
- package/addon/services/map-adapter-interface.js +1 -1
- package/addon/services/map-manager.js +4 -1
- package/addon/services/map-settings.js +15 -0
- package/addon/styles/fleetops-engine.css +1 -1
- package/addon/templates/connectivity/devices/index/details/vehicle.hbs +2 -1
- package/addon/templates/connectivity/events/details.hbs +40 -1
- package/addon/templates/settings/map.hbs +38 -9
- package/addon/utils/leaflet-plugin-loader.js +5 -5
- package/addon/utils/route-colors.js +1 -1
- package/app/components/device-event/details.hbs +192 -0
- package/app/components/device-event/details.js +1 -0
- package/composer.json +1 -1
- package/extension.json +1 -1
- package/package.json +2 -2
- package/server/migrations/2026_06_23_000001_delete_bad_afaqy_telematics_sensors.php +34 -0
- package/server/src/Exports/ContactExport.php +12 -5
- package/server/src/Exports/DeviceExport.php +92 -0
- package/server/src/Exports/DriverExport.php +28 -3
- package/server/src/Exports/EquipmentExport.php +94 -0
- package/server/src/Exports/FleetExport.php +22 -7
- package/server/src/Exports/FuelReportExport.php +16 -1
- package/server/src/Exports/IssueExport.php +25 -3
- package/server/src/Exports/MaintenanceExport.php +106 -0
- package/server/src/Exports/MaintenanceScheduleExport.php +99 -0
- package/server/src/Exports/OrderExport.php +24 -5
- package/server/src/Exports/PartExport.php +99 -0
- package/server/src/Exports/PlaceExport.php +33 -7
- package/server/src/Exports/SensorExport.php +94 -0
- package/server/src/Exports/ServiceAreaExport.php +31 -7
- package/server/src/Exports/ServiceRateExport.php +41 -1
- package/server/src/Exports/TelematicExport.php +90 -0
- package/server/src/Exports/VehicleExport.php +274 -8
- package/server/src/Exports/VendorExport.php +15 -2
- package/server/src/Exports/WorkOrderExport.php +92 -0
- package/server/src/Http/Controllers/Api/v1/Concerns/ResolvesFleetOpsApiResources.php +176 -0
- package/server/src/Http/Controllers/Api/v1/DeviceController.php +225 -0
- package/server/src/Http/Controllers/Api/v1/EquipmentController.php +114 -0
- package/server/src/Http/Controllers/Api/v1/FuelTransactionController.php +185 -0
- package/server/src/Http/Controllers/Api/v1/PartController.php +120 -0
- package/server/src/Http/Controllers/Api/v1/SensorController.php +132 -0
- package/server/src/Http/Controllers/Api/v1/WorkOrderController.php +161 -0
- package/server/src/Http/Controllers/Internal/v1/DeviceController.php +18 -0
- package/server/src/Http/Controllers/Internal/v1/EquipmentController.php +17 -0
- package/server/src/Http/Controllers/Internal/v1/MaintenanceController.php +17 -0
- package/server/src/Http/Controllers/Internal/v1/MaintenanceScheduleController.php +17 -0
- package/server/src/Http/Controllers/Internal/v1/PartController.php +17 -0
- package/server/src/Http/Controllers/Internal/v1/SensorController.php +18 -0
- package/server/src/Http/Controllers/Internal/v1/SettingController.php +29 -5
- package/server/src/Http/Controllers/Internal/v1/TelematicController.php +18 -0
- package/server/src/Http/Controllers/Internal/v1/WorkOrderController.php +17 -0
- package/server/src/Http/Filter/DeviceFilter.php +33 -10
- package/server/src/Http/Filter/EquipmentFilter.php +23 -0
- package/server/src/Http/Filter/FuelProviderTransactionFilter.php +57 -2
- package/server/src/Http/Filter/PartFilter.php +47 -0
- package/server/src/Http/Filter/SensorFilter.php +34 -6
- package/server/src/Http/Filter/WorkOrderFilter.php +23 -0
- package/server/src/Http/Requests/CreateDeviceRequest.php +51 -0
- package/server/src/Http/Requests/CreateEquipmentRequest.php +35 -0
- package/server/src/Http/Requests/CreateFuelTransactionRequest.php +50 -0
- package/server/src/Http/Requests/CreatePartRequest.php +40 -0
- package/server/src/Http/Requests/CreateSensorRequest.php +47 -0
- package/server/src/Http/Requests/CreateWorkOrderRequest.php +42 -0
- package/server/src/Http/Requests/UpdateDeviceRequest.php +7 -0
- package/server/src/Http/Requests/UpdateEquipmentRequest.php +7 -0
- package/server/src/Http/Requests/UpdateFuelTransactionRequest.php +7 -0
- package/server/src/Http/Requests/UpdatePartRequest.php +7 -0
- package/server/src/Http/Requests/UpdateSensorRequest.php +7 -0
- package/server/src/Http/Requests/UpdateWorkOrderRequest.php +7 -0
- package/server/src/Http/Resources/v1/Device.php +72 -0
- package/server/src/Http/Resources/v1/Equipment.php +57 -0
- package/server/src/Http/Resources/v1/FuelTransaction.php +69 -0
- package/server/src/Http/Resources/v1/Part.php +64 -0
- package/server/src/Http/Resources/v1/Sensor.php +68 -0
- package/server/src/Jobs/SyncTelematicDevicesJob.php +194 -38
- package/server/src/Models/Order.php +2 -1
- package/server/src/Observers/PurchaseRateObserver.php +2 -1
- package/server/src/Support/Analytics/RevenueTrend.php +3 -8
- package/server/src/Support/Metrics/ActiveRevenueQuery.php +121 -0
- package/server/src/Support/Metrics/AvgOrderValueMetric.php +1 -7
- package/server/src/Support/Metrics/EarningsMetric.php +1 -10
- package/server/src/Support/Telematics/Providers/AfaqyProvider.php +104 -5
- package/server/src/Support/Telematics/Providers/SafeeProvider.php +550 -54
- package/server/src/Support/Telematics/TelematicService.php +28 -9
- package/server/src/routes.php +67 -14
- package/server/tests/ExportCoverageTest.php +79 -0
- package/server/tests/MetricsRegistryTest.php +45 -5
- package/server/tests/PublicFleetOpsRestEndpointsTest.php +191 -0
- package/server/tests/TelematicsHardeningTest.php +636 -1
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Http\Filter;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\FleetOps\Models\Telematic;
|
|
5
6
|
use Fleetbase\FleetOps\Models\Vehicle;
|
|
6
7
|
use Fleetbase\FleetOps\Support\Utils;
|
|
7
8
|
use Fleetbase\Http\Filter\Filter;
|
|
9
|
+
use Fleetbase\Support\Http;
|
|
8
10
|
|
|
9
11
|
class DeviceFilter extends Filter
|
|
10
12
|
{
|
|
@@ -57,7 +59,7 @@ class DeviceFilter extends Filter
|
|
|
57
59
|
|
|
58
60
|
public function telematic(?string $telematic)
|
|
59
61
|
{
|
|
60
|
-
$this->
|
|
62
|
+
$this->wherePublicRelation('telematic_uuid', Telematic::class, $telematic);
|
|
61
63
|
}
|
|
62
64
|
|
|
63
65
|
public function telematicUuid(?string $telematic)
|
|
@@ -87,15 +89,7 @@ class DeviceFilter extends Filter
|
|
|
87
89
|
|
|
88
90
|
public function vehicle(?string $vehicle)
|
|
89
91
|
{
|
|
90
|
-
|
|
91
|
-
$this->builder->where(function ($query) use ($vehicle) {
|
|
92
|
-
$query->where('attachable_uuid', $vehicle)
|
|
93
|
-
->orWhereIn('attachable_uuid', Vehicle::query()
|
|
94
|
-
->where('company_uuid', $this->session->get('company'))
|
|
95
|
-
->where('public_id', $vehicle)
|
|
96
|
-
->pluck('uuid'));
|
|
97
|
-
});
|
|
98
|
-
}
|
|
92
|
+
$this->wherePublicRelation('attachable_uuid', Vehicle::class, $vehicle);
|
|
99
93
|
}
|
|
100
94
|
|
|
101
95
|
public function connectionStatus(string|array $connectionStatus)
|
|
@@ -151,4 +145,33 @@ class DeviceFilter extends Filter
|
|
|
151
145
|
$this->builder->whereDate($column, $dates);
|
|
152
146
|
}
|
|
153
147
|
}
|
|
148
|
+
|
|
149
|
+
protected function wherePublicRelation(string $column, string $modelClass, ?string $identifier): void
|
|
150
|
+
{
|
|
151
|
+
if (!$identifier) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
$this->builder->whereIn($column, $this->resolvePublicRelationUuids($modelClass, $identifier, Http::isInternalRequest($this->request)));
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
protected function resolvePublicRelationUuids(string $modelClass, string $identifier, bool $allowUuid = false)
|
|
159
|
+
{
|
|
160
|
+
$instance = new $modelClass();
|
|
161
|
+
|
|
162
|
+
return $modelClass::query()
|
|
163
|
+
->where('company_uuid', $this->session->get('company'))
|
|
164
|
+
->where(function ($query) use ($identifier, $instance, $allowUuid) {
|
|
165
|
+
$query->where('public_id', $identifier);
|
|
166
|
+
|
|
167
|
+
if (in_array('internal_id', $instance->getFillable())) {
|
|
168
|
+
$query->orWhere('internal_id', $identifier);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if ($allowUuid) {
|
|
172
|
+
$query->orWhere('uuid', $identifier);
|
|
173
|
+
}
|
|
174
|
+
})
|
|
175
|
+
->pluck('uuid');
|
|
176
|
+
}
|
|
154
177
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Http\Filter;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\Http\Filter\Filter;
|
|
6
|
+
|
|
7
|
+
class EquipmentFilter extends Filter
|
|
8
|
+
{
|
|
9
|
+
public function queryForInternal()
|
|
10
|
+
{
|
|
11
|
+
$this->builder->where('company_uuid', $this->session->get('company'));
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public function queryForPublic()
|
|
15
|
+
{
|
|
16
|
+
$this->queryForInternal();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public function query(?string $searchQuery)
|
|
20
|
+
{
|
|
21
|
+
$this->builder->search($searchQuery);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -2,8 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Http\Filter;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\FleetOps\Models\Driver;
|
|
6
|
+
use Fleetbase\FleetOps\Models\FuelProviderConnection;
|
|
7
|
+
use Fleetbase\FleetOps\Models\FuelReport;
|
|
8
|
+
use Fleetbase\FleetOps\Models\Order;
|
|
9
|
+
use Fleetbase\FleetOps\Models\Vehicle;
|
|
5
10
|
use Fleetbase\FleetOps\Support\Utils;
|
|
6
11
|
use Fleetbase\Http\Filter\Filter;
|
|
12
|
+
use Fleetbase\Support\Http;
|
|
7
13
|
use Illuminate\Support\Str;
|
|
8
14
|
|
|
9
15
|
class FuelProviderTransactionFilter extends Filter
|
|
@@ -13,6 +19,11 @@ class FuelProviderTransactionFilter extends Filter
|
|
|
13
19
|
$this->builder->where('company_uuid', $this->session->get('company'));
|
|
14
20
|
}
|
|
15
21
|
|
|
22
|
+
public function queryForPublic()
|
|
23
|
+
{
|
|
24
|
+
$this->queryForInternal();
|
|
25
|
+
}
|
|
26
|
+
|
|
16
27
|
public function query(?string $searchQuery)
|
|
17
28
|
{
|
|
18
29
|
$this->builder->search($searchQuery);
|
|
@@ -38,12 +49,27 @@ class FuelProviderTransactionFilter extends Filter
|
|
|
38
49
|
|
|
39
50
|
public function vehicle(?string $vehicle)
|
|
40
51
|
{
|
|
41
|
-
$this->
|
|
52
|
+
$this->wherePublicRelation('vehicle_uuid', Vehicle::class, $vehicle);
|
|
42
53
|
}
|
|
43
54
|
|
|
44
55
|
public function connection(?string $connection)
|
|
45
56
|
{
|
|
46
|
-
$this->
|
|
57
|
+
$this->wherePublicRelation('fuel_provider_connection_uuid', FuelProviderConnection::class, $connection);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
public function driver(?string $driver)
|
|
61
|
+
{
|
|
62
|
+
$this->wherePublicRelation('driver_uuid', Driver::class, $driver);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public function order(?string $order)
|
|
66
|
+
{
|
|
67
|
+
$this->wherePublicRelation('order_uuid', Order::class, $order);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
public function fuelReport(?string $fuelReport)
|
|
71
|
+
{
|
|
72
|
+
$this->wherePublicRelation('fuel_report_uuid', FuelReport::class, $fuelReport);
|
|
47
73
|
}
|
|
48
74
|
|
|
49
75
|
public function transactionAt($transactionAt)
|
|
@@ -56,4 +82,33 @@ class FuelProviderTransactionFilter extends Filter
|
|
|
56
82
|
$this->builder->whereDate('transaction_at', $transactionAt);
|
|
57
83
|
}
|
|
58
84
|
}
|
|
85
|
+
|
|
86
|
+
protected function wherePublicRelation(string $column, string $modelClass, ?string $identifier): void
|
|
87
|
+
{
|
|
88
|
+
if (!$identifier) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
$this->builder->whereIn($column, $this->resolvePublicRelationUuids($modelClass, $identifier, Http::isInternalRequest($this->request)));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
protected function resolvePublicRelationUuids(string $modelClass, string $identifier, bool $allowUuid = false)
|
|
96
|
+
{
|
|
97
|
+
$instance = new $modelClass();
|
|
98
|
+
|
|
99
|
+
return $modelClass::query()
|
|
100
|
+
->where('company_uuid', $this->session->get('company'))
|
|
101
|
+
->where(function ($query) use ($identifier, $instance, $allowUuid) {
|
|
102
|
+
$query->where('public_id', $identifier);
|
|
103
|
+
|
|
104
|
+
if (in_array('internal_id', $instance->getFillable())) {
|
|
105
|
+
$query->orWhere('internal_id', $identifier);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if ($allowUuid) {
|
|
109
|
+
$query->orWhere('uuid', $identifier);
|
|
110
|
+
}
|
|
111
|
+
})
|
|
112
|
+
->pluck('uuid');
|
|
113
|
+
}
|
|
59
114
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Http\Filter;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Models\Vendor;
|
|
6
|
+
use Fleetbase\Http\Filter\Filter;
|
|
7
|
+
use Fleetbase\Support\Http;
|
|
8
|
+
|
|
9
|
+
class PartFilter extends Filter
|
|
10
|
+
{
|
|
11
|
+
public function queryForInternal()
|
|
12
|
+
{
|
|
13
|
+
$this->builder->where('company_uuid', $this->session->get('company'));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public function queryForPublic()
|
|
17
|
+
{
|
|
18
|
+
$this->queryForInternal();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
public function query(?string $searchQuery)
|
|
22
|
+
{
|
|
23
|
+
$this->builder->search($searchQuery);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
public function vendor(?string $vendor)
|
|
27
|
+
{
|
|
28
|
+
if (!$vendor) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
$this->builder->whereIn('vendor_uuid', Vendor::query()
|
|
33
|
+
->where('company_uuid', $this->session->get('company'))
|
|
34
|
+
->where(function ($query) use ($vendor) {
|
|
35
|
+
$query->where('public_id', $vendor);
|
|
36
|
+
|
|
37
|
+
if (in_array('internal_id', (new Vendor())->getFillable())) {
|
|
38
|
+
$query->orWhere('internal_id', $vendor);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (Http::isInternalRequest($this->request)) {
|
|
42
|
+
$query->orWhere('uuid', $vendor);
|
|
43
|
+
}
|
|
44
|
+
})
|
|
45
|
+
->pluck('uuid'));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Http\Filter;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\FleetOps\Models\Device;
|
|
6
|
+
use Fleetbase\FleetOps\Models\Telematic;
|
|
5
7
|
use Fleetbase\FleetOps\Support\Utils;
|
|
6
8
|
use Fleetbase\Http\Filter\Filter;
|
|
9
|
+
use Fleetbase\Support\Http;
|
|
7
10
|
|
|
8
11
|
class SensorFilter extends Filter
|
|
9
12
|
{
|
|
@@ -47,9 +50,7 @@ class SensorFilter extends Filter
|
|
|
47
50
|
|
|
48
51
|
public function device(?string $device)
|
|
49
52
|
{
|
|
50
|
-
|
|
51
|
-
$this->builder->where('device_uuid', $device);
|
|
52
|
-
}
|
|
53
|
+
$this->wherePublicRelation('device_uuid', Device::class, $device);
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
public function deviceUuid(?string $device)
|
|
@@ -59,9 +60,7 @@ class SensorFilter extends Filter
|
|
|
59
60
|
|
|
60
61
|
public function telematic(?string $telematic)
|
|
61
62
|
{
|
|
62
|
-
|
|
63
|
-
$this->builder->where('telematic_uuid', $telematic);
|
|
64
|
-
}
|
|
63
|
+
$this->wherePublicRelation('telematic_uuid', Telematic::class, $telematic);
|
|
65
64
|
}
|
|
66
65
|
|
|
67
66
|
public function telematicUuid(?string $telematic)
|
|
@@ -122,4 +121,33 @@ class SensorFilter extends Filter
|
|
|
122
121
|
$this->builder->whereDate($column, $dates);
|
|
123
122
|
}
|
|
124
123
|
}
|
|
124
|
+
|
|
125
|
+
protected function wherePublicRelation(string $column, string $modelClass, ?string $identifier): void
|
|
126
|
+
{
|
|
127
|
+
if (!$identifier) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
$this->builder->whereIn($column, $this->resolvePublicRelationUuids($modelClass, $identifier, Http::isInternalRequest($this->request)));
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
protected function resolvePublicRelationUuids(string $modelClass, string $identifier, bool $allowUuid = false)
|
|
135
|
+
{
|
|
136
|
+
$instance = new $modelClass();
|
|
137
|
+
|
|
138
|
+
return $modelClass::query()
|
|
139
|
+
->where('company_uuid', $this->session->get('company'))
|
|
140
|
+
->where(function ($query) use ($identifier, $instance, $allowUuid) {
|
|
141
|
+
$query->where('public_id', $identifier);
|
|
142
|
+
|
|
143
|
+
if (in_array('internal_id', $instance->getFillable())) {
|
|
144
|
+
$query->orWhere('internal_id', $identifier);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if ($allowUuid) {
|
|
148
|
+
$query->orWhere('uuid', $identifier);
|
|
149
|
+
}
|
|
150
|
+
})
|
|
151
|
+
->pluck('uuid');
|
|
152
|
+
}
|
|
125
153
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Http\Filter;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\Http\Filter\Filter;
|
|
6
|
+
|
|
7
|
+
class WorkOrderFilter extends Filter
|
|
8
|
+
{
|
|
9
|
+
public function queryForInternal()
|
|
10
|
+
{
|
|
11
|
+
$this->builder->where('company_uuid', $this->session->get('company'));
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public function queryForPublic()
|
|
15
|
+
{
|
|
16
|
+
$this->queryForInternal();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public function query(?string $searchQuery)
|
|
20
|
+
{
|
|
21
|
+
$this->builder->search($searchQuery);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Http\Requests;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Rules\ResolvablePoint;
|
|
6
|
+
use Fleetbase\Http\Requests\FleetbaseRequest;
|
|
7
|
+
use Illuminate\Validation\Rule;
|
|
8
|
+
|
|
9
|
+
class CreateDeviceRequest extends FleetbaseRequest
|
|
10
|
+
{
|
|
11
|
+
public function authorize()
|
|
12
|
+
{
|
|
13
|
+
return request()->session()->has('api_credential') || request()->session()->has('is_sanctum_token');
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public function rules()
|
|
17
|
+
{
|
|
18
|
+
return [
|
|
19
|
+
'name' => [Rule::requiredIf($this->isMethod('POST')), 'string'],
|
|
20
|
+
'type' => ['nullable', 'string'],
|
|
21
|
+
'device_id' => ['nullable', 'string'],
|
|
22
|
+
'internal_id' => ['nullable', 'string'],
|
|
23
|
+
'imei' => ['nullable', 'string'],
|
|
24
|
+
'imsi' => ['nullable', 'string'],
|
|
25
|
+
'firmware_version' => ['nullable', 'string'],
|
|
26
|
+
'provider' => ['nullable', 'string'],
|
|
27
|
+
'model' => ['nullable', 'string'],
|
|
28
|
+
'manufacturer' => ['nullable', 'string'],
|
|
29
|
+
'serial_number' => ['nullable', 'string'],
|
|
30
|
+
'location' => ['nullable'],
|
|
31
|
+
'last_position' => ['nullable', new ResolvablePoint()],
|
|
32
|
+
'latitude' => ['nullable', 'required_with:longitude'],
|
|
33
|
+
'longitude' => ['nullable', 'required_with:latitude'],
|
|
34
|
+
'installation_date' => ['nullable', 'date'],
|
|
35
|
+
'last_maintenance_date' => ['nullable', 'date'],
|
|
36
|
+
'last_online_at' => ['nullable', 'date'],
|
|
37
|
+
'online' => ['nullable', 'boolean'],
|
|
38
|
+
'status' => ['nullable', 'string'],
|
|
39
|
+
'data_frequency' => ['nullable', 'integer'],
|
|
40
|
+
'notes' => ['nullable', 'string'],
|
|
41
|
+
'telematic' => ['nullable', 'string'],
|
|
42
|
+
'warranty' => ['nullable', 'string'],
|
|
43
|
+
'photo' => ['nullable', 'string'],
|
|
44
|
+
'attachable_type' => ['nullable', 'string'],
|
|
45
|
+
'attachable' => ['nullable', 'required_with:attachable_type', 'string'],
|
|
46
|
+
'meta' => ['nullable', 'array'],
|
|
47
|
+
'data' => ['nullable', 'array'],
|
|
48
|
+
'options' => ['nullable', 'array'],
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Http\Requests;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\Http\Requests\FleetbaseRequest;
|
|
6
|
+
use Illuminate\Validation\Rule;
|
|
7
|
+
|
|
8
|
+
class CreateEquipmentRequest extends FleetbaseRequest
|
|
9
|
+
{
|
|
10
|
+
public function authorize()
|
|
11
|
+
{
|
|
12
|
+
return request()->session()->has('api_credential') || request()->session()->has('is_sanctum_token');
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public function rules()
|
|
16
|
+
{
|
|
17
|
+
return [
|
|
18
|
+
'name' => [Rule::requiredIf($this->isMethod('POST')), 'string'],
|
|
19
|
+
'code' => ['nullable', 'string'],
|
|
20
|
+
'type' => ['nullable', 'string'],
|
|
21
|
+
'status' => ['nullable', 'string'],
|
|
22
|
+
'serial_number' => ['nullable', 'string'],
|
|
23
|
+
'manufacturer' => ['nullable', 'string'],
|
|
24
|
+
'model' => ['nullable', 'string'],
|
|
25
|
+
'warranty' => ['nullable', 'string'],
|
|
26
|
+
'photo' => ['nullable', 'string'],
|
|
27
|
+
'equipable_type' => ['nullable', 'string'],
|
|
28
|
+
'equipable' => ['nullable', 'required_with:equipable_type', 'string'],
|
|
29
|
+
'purchased_at' => ['nullable', 'date'],
|
|
30
|
+
'purchase_price' => ['nullable'],
|
|
31
|
+
'currency' => ['nullable', 'string', 'size:3'],
|
|
32
|
+
'meta' => ['nullable', 'array'],
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Http\Requests;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\Http\Requests\FleetbaseRequest;
|
|
6
|
+
use Illuminate\Validation\Rule;
|
|
7
|
+
|
|
8
|
+
class CreateFuelTransactionRequest extends FleetbaseRequest
|
|
9
|
+
{
|
|
10
|
+
public function authorize()
|
|
11
|
+
{
|
|
12
|
+
return request()->session()->has('api_credential') || request()->session()->has('is_sanctum_token');
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public function rules()
|
|
16
|
+
{
|
|
17
|
+
return [
|
|
18
|
+
'provider' => [Rule::requiredIf($this->isMethod('POST')), 'string'],
|
|
19
|
+
'provider_transaction_id' => [Rule::requiredIf($this->isMethod('POST')), 'string'],
|
|
20
|
+
'connection' => ['nullable', 'string'],
|
|
21
|
+
'fuel_report' => ['nullable', 'string'],
|
|
22
|
+
'vehicle' => ['nullable', 'string'],
|
|
23
|
+
'driver' => ['nullable', 'string'],
|
|
24
|
+
'order' => ['nullable', 'string'],
|
|
25
|
+
'provider_vehicle_id' => ['nullable', 'string'],
|
|
26
|
+
'vehicle_card_id' => ['nullable', 'string'],
|
|
27
|
+
'internal_number' => ['nullable', 'string'],
|
|
28
|
+
'structure_number' => ['nullable', 'string'],
|
|
29
|
+
'plate_number' => ['nullable', 'string'],
|
|
30
|
+
'vin' => ['nullable', 'string'],
|
|
31
|
+
'serial_number' => ['nullable', 'string'],
|
|
32
|
+
'call_sign' => ['nullable', 'string'],
|
|
33
|
+
'trip_number' => ['nullable', 'string'],
|
|
34
|
+
'station_name' => ['nullable', 'string'],
|
|
35
|
+
'station_latitude' => ['nullable', 'numeric'],
|
|
36
|
+
'station_longitude' => ['nullable', 'numeric'],
|
|
37
|
+
'transaction_at' => ['nullable', 'date'],
|
|
38
|
+
'volume' => ['nullable', 'numeric'],
|
|
39
|
+
'metric_unit' => ['nullable', 'string'],
|
|
40
|
+
'amount' => ['nullable'],
|
|
41
|
+
'currency' => ['nullable', 'string', 'size:3'],
|
|
42
|
+
'odometer' => ['nullable', 'numeric'],
|
|
43
|
+
'sync_status' => ['nullable', 'string'],
|
|
44
|
+
'matched_at' => ['nullable', 'date'],
|
|
45
|
+
'normalized_payload' => ['nullable', 'array'],
|
|
46
|
+
'raw_payload' => ['nullable', 'array'],
|
|
47
|
+
'meta' => ['nullable', 'array'],
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Http\Requests;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\Http\Requests\FleetbaseRequest;
|
|
6
|
+
use Illuminate\Validation\Rule;
|
|
7
|
+
|
|
8
|
+
class CreatePartRequest extends FleetbaseRequest
|
|
9
|
+
{
|
|
10
|
+
public function authorize()
|
|
11
|
+
{
|
|
12
|
+
return request()->session()->has('api_credential') || request()->session()->has('is_sanctum_token');
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public function rules()
|
|
16
|
+
{
|
|
17
|
+
return [
|
|
18
|
+
'sku' => ['nullable', 'string'],
|
|
19
|
+
'name' => [Rule::requiredIf($this->isMethod('POST')), 'string'],
|
|
20
|
+
'manufacturer' => ['nullable', 'string'],
|
|
21
|
+
'model' => ['nullable', 'string'],
|
|
22
|
+
'serial_number' => ['nullable', 'string'],
|
|
23
|
+
'barcode' => ['nullable', 'string'],
|
|
24
|
+
'description' => ['nullable', 'string'],
|
|
25
|
+
'quantity_on_hand' => ['nullable', 'integer', 'min:0'],
|
|
26
|
+
'unit_cost' => ['nullable'],
|
|
27
|
+
'msrp' => ['nullable'],
|
|
28
|
+
'currency' => ['nullable', 'string', 'size:3'],
|
|
29
|
+
'asset_type' => ['nullable', 'string'],
|
|
30
|
+
'asset' => ['nullable', 'required_with:asset_type', 'string'],
|
|
31
|
+
'type' => ['nullable', 'string'],
|
|
32
|
+
'status' => ['nullable', 'string'],
|
|
33
|
+
'vendor' => ['nullable', 'string'],
|
|
34
|
+
'warranty' => ['nullable', 'string'],
|
|
35
|
+
'photo' => ['nullable', 'string'],
|
|
36
|
+
'specs' => ['nullable', 'array'],
|
|
37
|
+
'meta' => ['nullable', 'array'],
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Http\Requests;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\FleetOps\Rules\ResolvablePoint;
|
|
6
|
+
use Fleetbase\Http\Requests\FleetbaseRequest;
|
|
7
|
+
use Illuminate\Validation\Rule;
|
|
8
|
+
|
|
9
|
+
class CreateSensorRequest extends FleetbaseRequest
|
|
10
|
+
{
|
|
11
|
+
public function authorize()
|
|
12
|
+
{
|
|
13
|
+
return request()->session()->has('api_credential') || request()->session()->has('is_sanctum_token');
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public function rules()
|
|
17
|
+
{
|
|
18
|
+
return [
|
|
19
|
+
'name' => [Rule::requiredIf($this->isMethod('POST')), 'string'],
|
|
20
|
+
'type' => ['nullable', 'string'],
|
|
21
|
+
'internal_id' => ['nullable', 'string'],
|
|
22
|
+
'imei' => ['nullable', 'string'],
|
|
23
|
+
'imsi' => ['nullable', 'string'],
|
|
24
|
+
'firmware_version' => ['nullable', 'string'],
|
|
25
|
+
'serial_number' => ['nullable', 'string'],
|
|
26
|
+
'last_position' => ['nullable', new ResolvablePoint()],
|
|
27
|
+
'latitude' => ['nullable', 'required_with:longitude'],
|
|
28
|
+
'longitude' => ['nullable', 'required_with:latitude'],
|
|
29
|
+
'unit' => ['nullable', 'string'],
|
|
30
|
+
'min_threshold' => ['nullable', 'numeric'],
|
|
31
|
+
'max_threshold' => ['nullable', 'numeric'],
|
|
32
|
+
'threshold_inclusive' => ['nullable', 'boolean'],
|
|
33
|
+
'last_reading_at' => ['nullable', 'date'],
|
|
34
|
+
'last_value' => ['nullable'],
|
|
35
|
+
'calibration' => ['nullable', 'array'],
|
|
36
|
+
'report_frequency_sec' => ['nullable', 'integer'],
|
|
37
|
+
'status' => ['nullable', 'string'],
|
|
38
|
+
'device' => ['nullable', 'string'],
|
|
39
|
+
'telematic' => ['nullable', 'string'],
|
|
40
|
+
'warranty' => ['nullable', 'string'],
|
|
41
|
+
'photo' => ['nullable', 'string'],
|
|
42
|
+
'sensorable_type' => ['nullable', 'string'],
|
|
43
|
+
'sensorable' => ['nullable', 'required_with:sensorable_type', 'string'],
|
|
44
|
+
'meta' => ['nullable', 'array'],
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
namespace Fleetbase\FleetOps\Http\Requests;
|
|
4
|
+
|
|
5
|
+
use Fleetbase\Http\Requests\FleetbaseRequest;
|
|
6
|
+
use Illuminate\Validation\Rule;
|
|
7
|
+
|
|
8
|
+
class CreateWorkOrderRequest extends FleetbaseRequest
|
|
9
|
+
{
|
|
10
|
+
public function authorize()
|
|
11
|
+
{
|
|
12
|
+
return request()->session()->has('api_credential') || request()->session()->has('is_sanctum_token');
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public function rules()
|
|
16
|
+
{
|
|
17
|
+
return [
|
|
18
|
+
'code' => ['nullable', 'string'],
|
|
19
|
+
'subject' => [Rule::requiredIf($this->isMethod('POST')), 'string'],
|
|
20
|
+
'category' => ['nullable', 'string'],
|
|
21
|
+
'status' => ['nullable', 'string'],
|
|
22
|
+
'priority' => ['nullable', 'string'],
|
|
23
|
+
'target_type' => ['nullable', 'string'],
|
|
24
|
+
'target' => ['nullable', 'required_with:target_type', 'string'],
|
|
25
|
+
'assignee_type' => ['nullable', 'string'],
|
|
26
|
+
'assignee' => ['nullable', 'required_with:assignee_type', 'string'],
|
|
27
|
+
'opened_at' => ['nullable', 'date'],
|
|
28
|
+
'due_at' => ['nullable', 'date'],
|
|
29
|
+
'closed_at' => ['nullable', 'date'],
|
|
30
|
+
'instructions' => ['nullable', 'string'],
|
|
31
|
+
'checklist' => ['nullable', 'array'],
|
|
32
|
+
'estimated_cost' => ['nullable'],
|
|
33
|
+
'approved_budget' => ['nullable'],
|
|
34
|
+
'actual_cost' => ['nullable'],
|
|
35
|
+
'currency' => ['nullable', 'string', 'size:3'],
|
|
36
|
+
'cost_breakdown' => ['nullable', 'array'],
|
|
37
|
+
'cost_center' => ['nullable', 'string'],
|
|
38
|
+
'budget_code' => ['nullable', 'string'],
|
|
39
|
+
'meta' => ['nullable', 'array'],
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
}
|