@fleetbase/fleetops-engine 0.3.3 → 0.3.4

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.
Files changed (110) hide show
  1. package/addon/components/contact-form-panel.hbs +28 -6
  2. package/addon/components/driver-form-panel.hbs +10 -0
  3. package/addon/components/driver-form-panel.js +51 -0
  4. package/addon/components/driver-panel/details.hbs +1 -5
  5. package/addon/components/driver-panel.hbs +21 -3
  6. package/addon/components/fleet-form-panel.hbs +60 -6
  7. package/addon/components/fleet-panel/details.hbs +1 -1
  8. package/addon/components/fuel-report-form-panel.hbs +84 -8
  9. package/addon/components/fuel-report-form-panel.js +6 -0
  10. package/addon/components/fuel-report-panel/details.hbs +4 -0
  11. package/addon/components/issue-form-panel.hbs +99 -11
  12. package/addon/components/issue-form-panel.js +5 -13
  13. package/addon/components/layout/fleet-ops-sidebar.js +8 -0
  14. package/addon/components/live-map-drawer.hbs +1 -1
  15. package/addon/components/live-map.hbs +1 -1
  16. package/addon/components/modals/driver-assign-vehicle.hbs +2 -11
  17. package/addon/components/modals/driver-assign-vendor.hbs +1 -9
  18. package/addon/components/modals/fuel-report-details.hbs +4 -0
  19. package/addon/components/order/schedule-card.hbs +32 -4
  20. package/addon/components/order/schedule-card.js +155 -5
  21. package/addon/components/place-form-panel.hbs +14 -7
  22. package/addon/components/place-form-panel.js +71 -0
  23. package/addon/components/place-panel/details.hbs +9 -19
  24. package/addon/components/vehicle-form-panel.hbs +67 -7
  25. package/addon/components/vehicle-form-panel.js +37 -0
  26. package/addon/components/vehicle-panel/details.hbs +9 -5
  27. package/addon/components/vehicle-panel.hbs +18 -4
  28. package/addon/components/vendor-form-panel/create-form.hbs +72 -11
  29. package/addon/components/vendor-form-panel/edit-form.hbs +1 -1
  30. package/addon/components/vendor-form-panel.hbs +70 -30
  31. package/addon/components/vendor-form-panel.js +4 -40
  32. package/addon/components/vendor-panel/details.hbs +2 -2
  33. package/addon/components/vendor-panel.hbs +16 -2
  34. package/addon/controllers/management/contacts/index.js +42 -3
  35. package/addon/controllers/management/fleets/index.js +12 -23
  36. package/addon/controllers/management/fuel-reports/index/new.js +1 -1
  37. package/addon/controllers/management/fuel-reports/index.js +73 -20
  38. package/addon/controllers/management/issues/index/new.js +2 -2
  39. package/addon/controllers/management/issues/index.js +65 -45
  40. package/addon/controllers/management/places/index.js +59 -18
  41. package/addon/controllers/management/vehicles/index.js +67 -8
  42. package/addon/controllers/management/vendors/index.js +63 -8
  43. package/addon/controllers/operations/orders/index.js +42 -1
  44. package/addon/routes/management/contacts/index.js +8 -0
  45. package/addon/routes/management/fleets/index.js +8 -2
  46. package/addon/routes/management/fuel-reports/index.js +6 -0
  47. package/addon/routes/management/issues/index.js +9 -1
  48. package/addon/routes/management/places/index.js +11 -1
  49. package/addon/routes/management/vehicles/index.js +3 -3
  50. package/addon/routes/management/vendors/index.js +8 -0
  51. package/addon/routes/operations/scheduler/index.js +1 -1
  52. package/addon/templates/operations/orders/index.hbs +1 -1
  53. package/addon/utils/get-issue-categories.js +30 -0
  54. package/addon/utils/get-issue-types.js +3 -0
  55. package/addon/utils/get-vendor-status-options.js +3 -0
  56. package/addon/utils/get-vendor-type-options.js +41 -0
  57. package/app/utils/get-issue-categories.js +1 -0
  58. package/app/utils/get-issue-types.js +1 -0
  59. package/app/utils/get-vendor-categories.js +1 -0
  60. package/app/utils/get-vendor-status-options.js +1 -0
  61. package/app/utils/get-vendor-type-options.js +1 -0
  62. package/app/utils/get-vendor-types.js +1 -0
  63. package/composer.json +1 -1
  64. package/extension.json +1 -1
  65. package/package.json +4 -4
  66. package/server/migrations/2023_11_09_041807_add_status_column_to_fuel_reports_table.php +32 -0
  67. package/server/migrations/2023_11_15_062814_add_comments_column_and_resolved_at_column_to_vehicle_device_events_table.php +33 -0
  68. package/server/src/Http/Controllers/Api/v1/DriverController.php +2 -2
  69. package/server/src/Http/Controllers/Api/v1/VehicleController.php +2 -2
  70. package/server/src/Http/Controllers/Internal/v1/DriverController.php +5 -13
  71. package/server/src/Http/Controllers/Internal/v1/OrderController.php +1 -3
  72. package/server/src/Http/Filter/ContactFilter.php +10 -0
  73. package/server/src/Http/Filter/FleetFilter.php +8 -6
  74. package/server/src/Http/Filter/FuelReportFilter.php +51 -0
  75. package/server/src/Http/Filter/IssueFilter.php +61 -5
  76. package/server/src/Http/Filter/PlaceFilter.php +48 -6
  77. package/server/src/Http/Filter/VehicleFilter.php +21 -6
  78. package/server/src/Http/Filter/VendorFilter.php +11 -8
  79. package/server/src/Http/Middleware/TransformLocationMiddleware.php +1 -1
  80. package/server/src/Http/Resources/Internal/v1/IntegratedVendorFacilitator.php +17 -18
  81. package/server/src/Http/Resources/v1/Contact.php +16 -19
  82. package/server/src/Http/Resources/v1/CurrentJob.php +13 -16
  83. package/server/src/Http/Resources/v1/Driver.php +59 -57
  84. package/server/src/Http/Resources/v1/Entity.php +30 -33
  85. package/server/src/Http/Resources/v1/FuelReport.php +16 -14
  86. package/server/src/Http/Resources/v1/Order.php +1 -1
  87. package/server/src/Http/Resources/v1/Payload.php +21 -24
  88. package/server/src/Http/Resources/v1/Place.php +27 -30
  89. package/server/src/Http/Resources/v1/Proof.php +13 -16
  90. package/server/src/Http/Resources/v1/PurchaseRate.php +14 -17
  91. package/server/src/Http/Resources/v1/ServiceArea.php +13 -16
  92. package/server/src/Http/Resources/v1/ServiceQuote.php +15 -18
  93. package/server/src/Http/Resources/v1/ServiceRate.php +33 -36
  94. package/server/src/Http/Resources/v1/ServiceRateFee.php +14 -17
  95. package/server/src/Http/Resources/v1/ServiceRateParcelFee.php +9 -12
  96. package/server/src/Http/Resources/v1/TrackingNumber.php +18 -21
  97. package/server/src/Http/Resources/v1/TrackingStatus.php +18 -21
  98. package/server/src/Http/Resources/v1/Vehicle.php +31 -34
  99. package/server/src/Http/Resources/v1/VehicleDevice.php +23 -25
  100. package/server/src/Http/Resources/v1/VehicleWithoutDriver.php +38 -32
  101. package/server/src/Http/Resources/v1/Vendor.php +31 -26
  102. package/server/src/Http/Resources/v1/Zone.php +14 -17
  103. package/server/src/Models/Driver.php +7 -1
  104. package/server/src/Models/FuelReport.php +1 -0
  105. package/server/src/Models/IntegratedVendor.php +6 -1
  106. package/server/src/Models/Order.php +2 -2
  107. package/server/src/Models/Place.php +2 -2
  108. package/server/src/Models/VehicleDeviceEvent.php +1 -0
  109. package/server/src/Models/Vendor.php +1 -1
  110. package/server/src/Observers/DriverObserver.php +15 -0
@@ -0,0 +1,41 @@
1
+ export default function getVendorTypeOptions() {
2
+ return [
3
+ 'carrier-trucking-company',
4
+ 'carrier-shipping-line',
5
+ 'carrier-air-cargo',
6
+ 'carrier-rail',
7
+ 'freight-forwarder',
8
+ 'warehouse-provider',
9
+ 'broker',
10
+ 'maintenance-repair-facility',
11
+ 'fuel-station',
12
+ 'tire-service-provider',
13
+ 'equipment-rental',
14
+ 'customs-broker',
15
+ 'third-party-logistics-provider',
16
+ 'technology-provider',
17
+ 'consultant',
18
+ 'insurance-provider',
19
+ 'last-mile-delivery-service',
20
+ 'packing-crating-service',
21
+ 'intermodal-operator',
22
+ 'drayage-service-provider',
23
+ 'cold-chain-provider',
24
+ 'hazardous-material-specialist',
25
+ 'parcel-courier',
26
+ 'bulk-material-handler',
27
+ 'towing-service',
28
+ 'cargo-inspector',
29
+ 'pallet-provider',
30
+ 'label-packaging-material-supplier',
31
+ 'driver-leasing-service',
32
+ 'vehicle-manufacturer',
33
+ 'vehicle-dealership',
34
+ 'parts-supplier',
35
+ 'logistics-association',
36
+ 'regulatory-body',
37
+ 'training-certification-provider',
38
+ 'general-vendor',
39
+ 'ecommerce',
40
+ ];
41
+ }
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/utils/get-issue-categories';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/utils/get-issue-types';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/utils/get-vendor-categories';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/utils/get-vendor-status-options';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/utils/get-vendor-type-options';
@@ -0,0 +1 @@
1
+ export { default } from '@fleetbase/fleetops-engine/utils/get-vendor-types';
package/composer.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fleetbase/fleetops-api",
3
- "version": "0.3.3",
3
+ "version": "0.3.4",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "keywords": [
6
6
  "fleetbase-extension",
package/extension.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "Fleet-Ops",
3
- "version": "0.3.3",
3
+ "version": "0.3.4",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "repository": "https://github.com/fleetbase/fleetops",
6
6
  "license": "MIT",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fleetbase/fleetops-engine",
3
- "version": "0.3.3",
3
+ "version": "0.3.4",
4
4
  "description": "Fleet & Transport Management Extension for Fleetbase",
5
5
  "fleetbase": {
6
6
  "route": "fleet-ops",
@@ -39,9 +39,9 @@
39
39
  "publish:github": "npm config set '@fleetbase:registry' https://npm.pkg.github.com/ && npm publish"
40
40
  },
41
41
  "dependencies": {
42
- "@fleetbase/ember-core": "^0.1.7",
43
- "@fleetbase/ember-ui": "^0.2.4",
44
- "@fleetbase/fleetops-data": "^0.1.3",
42
+ "@fleetbase/ember-core": "^0.1.8",
43
+ "@fleetbase/ember-ui": "^0.2.5",
44
+ "@fleetbase/fleetops-data": "^0.1.4",
45
45
  "@fleetbase/leaflet-routing-machine": "^3.2.16",
46
46
  "@fortawesome/ember-fontawesome": "^0.4.1",
47
47
  "@fortawesome/fontawesome-svg-core": "^6.4.0",
@@ -0,0 +1,32 @@
1
+ <?php
2
+
3
+ use Illuminate\Database\Migrations\Migration;
4
+ use Illuminate\Database\Schema\Blueprint;
5
+ use Illuminate\Support\Facades\Schema;
6
+
7
+ class AddStatusColumnToFuelReportsTable extends Migration
8
+ {
9
+ /**
10
+ * Run the migrations.
11
+ *
12
+ * @return void
13
+ */
14
+ public function up()
15
+ {
16
+ Schema::table('fuel_reports', function (Blueprint $table) {
17
+ $table->string('status')->nullable()->after('meta');
18
+ });
19
+ }
20
+
21
+ /**
22
+ * Reverse the migrations.
23
+ *
24
+ * @return void
25
+ */
26
+ public function down()
27
+ {
28
+ Schema::table('fuel_reports', function (Blueprint $table) {
29
+ $table->dropColumn('status');
30
+ });
31
+ }
32
+ }
@@ -0,0 +1,33 @@
1
+ <?php
2
+
3
+ use Illuminate\Database\Migrations\Migration;
4
+ use Illuminate\Database\Schema\Blueprint;
5
+ use Illuminate\Support\Facades\Schema;
6
+
7
+ class AddCommentsColumnAndResolvedAtColumnToVehicleDeviceEventsTable extends Migration
8
+ {
9
+ /**
10
+ * Run the migrations.
11
+ *
12
+ * @return void
13
+ */
14
+ public function up()
15
+ {
16
+ Schema::table('vehicle_device_events', function (Blueprint $table) {
17
+ $table->timestamp('resolved_at')->nullable()->after('reason')->index();
18
+ $table->mediumText('comment')->nullable()->after('reason');
19
+ });
20
+ }
21
+
22
+ /**
23
+ * Reverse the migrations.
24
+ *
25
+ * @return void
26
+ */
27
+ public function down()
28
+ {
29
+ Schema::table('vehicle_device_events', function (Blueprint $table) {
30
+ $table->dropColumn(['comment', 'resolved_at']);
31
+ });
32
+ }
33
+ }
@@ -43,7 +43,7 @@ class DriverController extends Controller
43
43
  public function create(CreateDriverRequest $request)
44
44
  {
45
45
  // get request input
46
- $input = $request->except(['name', 'password', 'email', 'phone', 'location', 'meta']);
46
+ $input = $request->except(['name', 'password', 'email', 'phone', 'location', 'altitude', 'heading', 'speed', 'meta']);
47
47
 
48
48
  // get user details for driver
49
49
  $userDetails = $request->only(['name', 'password', 'email', 'phone']);
@@ -118,7 +118,7 @@ class DriverController extends Controller
118
118
  }
119
119
 
120
120
  // get request input
121
- $input = $request->except(['name', 'password', 'email', 'phone', 'location', 'meta']);
121
+ $input = $request->except(['name', 'password', 'email', 'phone', 'location', 'altitude', 'heading', 'speed', 'meta']);
122
122
 
123
123
  // get user details for driver
124
124
  $userDetails = $request->only(['name', 'password', 'email', 'phone']);
@@ -24,7 +24,7 @@ class VehicleController extends Controller
24
24
  public function create(CreateVehicleRequest $request)
25
25
  {
26
26
  // get request input
27
- $input = $request->only(['status', 'make', 'model', 'year', 'trim', 'type', 'plate_number', 'vin', 'meta']);
27
+ $input = $request->only(['status', 'make', 'model', 'year', 'trim', 'type', 'plate_number', 'vin', 'meta', 'location', 'altitude', 'heading', 'speed']);
28
28
  // make sure company is set
29
29
  $input['company_uuid'] = session('company');
30
30
 
@@ -90,7 +90,7 @@ class VehicleController extends Controller
90
90
  }
91
91
 
92
92
  // get request input
93
- $input = $request->only(['status', 'make', 'model', 'year', 'trim', 'type', 'plate_number', 'vin', 'meta']);
93
+ $input = $request->only(['status', 'make', 'model', 'year', 'trim', 'type', 'plate_number', 'vin', 'meta', 'location', 'altitude', 'heading', 'speed']);
94
94
 
95
95
  // vendor assignment
96
96
  if ($request->has('vendor')) {
@@ -78,7 +78,7 @@ class DriverController extends FleetOpsController
78
78
 
79
79
  // create driver profile for user
80
80
  $input = collect($input)
81
- ->except(['name', 'password', 'email', 'phone', 'location', 'meta', 'avatar_uuid', 'photo_uuid'])
81
+ ->except(['name', 'password', 'email', 'phone', 'meta', 'avatar_uuid', 'photo_uuid'])
82
82
  ->filter()
83
83
  ->toArray();
84
84
 
@@ -87,10 +87,6 @@ class DriverController extends FleetOpsController
87
87
  $input['user_uuid'] = $existingUser->uuid;
88
88
  $input['slug'] = $existingUser->slug;
89
89
 
90
- if ($request->missing('location')) {
91
- $input['location'] = new Point(0, 0);
92
- }
93
-
94
90
  // create the profile
95
91
  $driverProfile = Driver::create($input);
96
92
 
@@ -135,12 +131,12 @@ class DriverController extends FleetOpsController
135
131
  }
136
132
 
137
133
  $input = $input
138
- ->except(['name', 'password', 'email', 'phone', 'location', 'meta', 'avatar_uuid', 'photo_uuid'])
134
+ ->except(['name', 'password', 'email', 'phone', 'meta', 'avatar_uuid', 'photo_uuid'])
139
135
  ->filter()
140
136
  ->toArray();
141
137
 
142
138
  if (!isset($input['password'])) {
143
- $input['password'] = $userInput['phone'] ?? Str::random(14);
139
+ $input['password'] = data_get($userInput, 'phone', Str::random(14));
144
140
  }
145
141
 
146
142
  $userInput['company_uuid'] = session('company');
@@ -164,10 +160,6 @@ class DriverController extends FleetOpsController
164
160
 
165
161
  $input['user_uuid'] = $user->uuid;
166
162
  $input['slug'] = $user->slug;
167
-
168
- if ($request->missing('location')) {
169
- $input['location'] = new Point(0, 0);
170
- }
171
163
  },
172
164
  function ($request, &$driver) {
173
165
  $driver->load(['user']);
@@ -210,14 +202,14 @@ class DriverController extends FleetOpsController
210
202
  $request,
211
203
  $id,
212
204
  function (&$request, &$driver, &$input) {
213
- $driver->load(['user']);
205
+ $driver->load(['user'])->guard(['user_uuid']);
214
206
  $input = collect($input);
215
207
  $userInput = $input->only(['name', 'password', 'email', 'phone', 'avatar_uuid'])->toArray();
216
208
  // handle `photo_uuid`
217
209
  if (isset($input['photo_uuid']) && Str::isUuid($input['photo_uuid'])) {
218
210
  $userInput['avatar_uuid'] = $input['photo_uuid'];
219
211
  }
220
- $input = $input->except(['name', 'password', 'email', 'phone', 'location', 'meta', 'avatar_uuid', 'photo_uuid'])->toArray();
212
+ $input = $input->except(['name', 'password', 'email', 'phone', 'meta', 'avatar_uuid', 'photo_uuid'])->toArray();
221
213
 
222
214
  $driver->user->update($userInput);
223
215
  $driver->flushAttributesCache();
@@ -39,8 +39,6 @@ class OrderController extends FleetOpsController
39
39
  /**
40
40
  * Creates a record with request payload.
41
41
  *
42
- * @param Illuminate\Http\Request $request
43
- *
44
42
  * @return \Illuminate\Http\Response
45
43
  */
46
44
  public function createRecord(Request $request)
@@ -319,7 +317,7 @@ class OrderController extends FleetOpsController
319
317
  public function start(Request $request)
320
318
  {
321
319
  /**
322
- * @var \Fleetbase\Models\Order
320
+ * @var \Fleetbase\FleetOps\Models\Order
323
321
  */
324
322
  $order = Order::where('uuid', $request->input('order'))->withoutGlobalScopes()->first();
325
323
 
@@ -37,6 +37,16 @@ class ContactFilter extends Filter
37
37
  $this->builder->searchWhere('public_id', $publicId);
38
38
  }
39
39
 
40
+ public function name(?string $name)
41
+ {
42
+ $this->builder->searchWhere('name', $name);
43
+ }
44
+
45
+ public function title(?string $title)
46
+ {
47
+ $this->builder->searchWhere('title', $title);
48
+ }
49
+
40
50
  public function type(?string $type)
41
51
  {
42
52
  $this->builder->searchWhere('type', $type);
@@ -46,7 +46,7 @@ class FleetFilter extends Filter
46
46
  $this->builder->whereHas(
47
47
  'zone',
48
48
  function ($query) use ($zone) {
49
- $query->where('uuid', $zone);
49
+ $query->where('zone_uuid', $zone);
50
50
  }
51
51
  );
52
52
  }
@@ -59,6 +59,8 @@ class FleetFilter extends Filter
59
59
  $query->where('uuid', $fleet);
60
60
  }
61
61
  );
62
+
63
+ $this->builder->searchWhere('parent_fleet_uuid', $fleet);
62
64
  }
63
65
 
64
66
  public function vendor(?string $vendor)
@@ -71,11 +73,6 @@ class FleetFilter extends Filter
71
73
  );
72
74
  }
73
75
 
74
- public function internalId(?string $internalId)
75
- {
76
- $this->builder->searchWhere('internal_id', $internalId);
77
- }
78
-
79
76
  public function publicId(?string $publicId)
80
77
  {
81
78
  $this->builder->searchWhere('public_id', $publicId);
@@ -86,6 +83,11 @@ class FleetFilter extends Filter
86
83
  $this->builder->searchWhere('task', $task);
87
84
  }
88
85
 
86
+ public function name(?string $name)
87
+ {
88
+ $this->builder->searchWhere('name', $name);
89
+ }
90
+
89
91
  public function status(?string $status)
90
92
  {
91
93
  $this->builder->searchWhere('status', $status);
@@ -23,11 +23,23 @@ class FuelReportFilter extends Filter
23
23
  $this->builder->searchWhere('public_id', $publicId);
24
24
  }
25
25
 
26
+ public function volume(?string $volume)
27
+ {
28
+ $this->builder->searchWhere('volume', $volume);
29
+ }
30
+
31
+ public function odometer(?string $odometer)
32
+ {
33
+ $this->builder->searchWhere('odometer', $odometer);
34
+ }
35
+
26
36
  public function reporter(?string $reporter)
27
37
  {
28
38
  $this->builder->whereHas('reportedBy', function ($q) use ($reporter) {
29
39
  if (Str::isUuid($reporter)) {
30
40
  $q->where('uuid', $reporter);
41
+ } elseif (Utils::isPublicId($reporter)) {
42
+ $q->where('public_id', $reporter);
31
43
  } else {
32
44
  $q->search($reporter);
33
45
  }
@@ -55,4 +67,43 @@ class FuelReportFilter extends Filter
55
67
  $this->builder->whereDate('updated_at', $updatedAt);
56
68
  }
57
69
  }
70
+
71
+ public function driver(?string $driver)
72
+ {
73
+ $this->builder->whereHas('driver', function ($q) use ($driver) {
74
+ if (Str::isUuid($driver)) {
75
+ $q->where('uuid', $driver);
76
+ } elseif (Utils::isPublicId($driver)) {
77
+ $q->where('public_id', $driver);
78
+ } else {
79
+ $q->search($driver);
80
+ }
81
+ });
82
+ }
83
+
84
+ public function vehicle(?string $vehicle)
85
+ {
86
+ $this->builder->whereHas('vehicle', function ($q) use ($vehicle) {
87
+ if (Str::isUuid($vehicle)) {
88
+ $q->where('uuid', $vehicle);
89
+ } elseif (Utils::isPublicId($vehicle)) {
90
+ $q->where('public_id', $vehicle);
91
+ } else {
92
+ $q->search($vehicle);
93
+ }
94
+ });
95
+ }
96
+
97
+ public function status($status)
98
+ {
99
+ if (Str::contains($status, ',')) {
100
+ $status = explode(',', $status);
101
+ }
102
+
103
+ if (is_array($status)) {
104
+ $this->builder->whereIn('status', $status);
105
+ } else {
106
+ $this->builder->where('status', $status);
107
+ }
108
+ }
58
109
  }
@@ -23,24 +23,80 @@ class IssueFilter extends Filter
23
23
  $this->builder->searchWhere('public_id', $publicId);
24
24
  }
25
25
 
26
+ public function priority($priority)
27
+ {
28
+ if (Str::contains($priority, ',')) {
29
+ $priority = explode(',', $priority);
30
+ }
31
+
32
+ if (is_array($priority)) {
33
+ $this->builder->whereIn('priority', $priority);
34
+ } else {
35
+ $this->builder->where('priority', $priority);
36
+ }
37
+ }
38
+
39
+ public function status($status)
40
+ {
41
+ if (Str::contains($status, ',')) {
42
+ $status = explode(',', $status);
43
+ }
44
+
45
+ if (is_array($status)) {
46
+ $this->builder->whereIn('status', $status);
47
+ } else {
48
+ $this->builder->where('status', $status);
49
+ }
50
+ }
51
+
52
+ public function assignee(?string $assignee)
53
+ {
54
+ $this->builder->whereHas('assignedTo', function ($q) use ($assignee) {
55
+ if (Str::isUuid($assignee)) {
56
+ $q->where('uuid', $assignee);
57
+ } elseif (Utils::isPublicId($assignee)) {
58
+ $q->where('public_id', $assignee);
59
+ } else {
60
+ $q->search($assignee);
61
+ }
62
+ });
63
+ }
64
+
26
65
  public function reporter(?string $reporter)
27
66
  {
28
67
  $this->builder->whereHas('reportedBy', function ($q) use ($reporter) {
29
68
  if (Str::isUuid($reporter)) {
30
69
  $q->where('uuid', $reporter);
70
+ } elseif (Utils::isPublicId($reporter)) {
71
+ $q->where('public_id', $reporter);
31
72
  } else {
32
73
  $q->search($reporter);
33
74
  }
34
75
  });
35
76
  }
36
77
 
37
- public function assignee(?string $assignee)
78
+ public function driver(?string $driver)
38
79
  {
39
- $this->builder->whereHas('assignedBy', function ($q) use ($assignee) {
40
- if (Str::isUuid($assignee)) {
41
- $q->where('uuid', $assignee);
80
+ $this->builder->whereHas('driver', function ($q) use ($driver) {
81
+ if (Str::isUuid($driver)) {
82
+ $q->where('uuid', $driver);
83
+ } elseif (Utils::isPublicId($driver)) {
84
+ $q->where('public_id', $driver);
42
85
  } else {
43
- $q->search($assignee);
86
+ $q->search($driver);
87
+ }
88
+ });
89
+ }
90
+
91
+ public function vehicle(?string $vehicle)
92
+ {
93
+ $this->builder->whereHas('vehicle', function ($q) use ($vehicle) {
94
+ if (Str::isUuid($vehicle)) {
95
+ $q->where('uuid', $vehicle);
96
+ } elseif (Utils::isPublicId($vehicle)) {
97
+ $q->where('public_id', $vehicle);
98
+ } else {
99
+ $q->search($vehicle);
44
100
  }
45
101
  });
46
102
  }
@@ -20,14 +20,14 @@ class PlaceFilter extends Filter
20
20
  $this->builder->search($searchQuery);
21
21
  }
22
22
 
23
- public function internalId(?string $internalId)
23
+ public function publicId(?string $publicId)
24
24
  {
25
- $this->builder->searchWhere('internal_id', $internalId);
25
+ $this->builder->searchWhere('public_id', $publicId);
26
26
  }
27
27
 
28
- public function publicId(?string $publicId)
28
+ public function postalCode(?string $postalCode)
29
29
  {
30
- $this->builder->searchWhere('public_id', $publicId);
30
+ $this->builder->searchWhere('postal_code', $postalCode);
31
31
  }
32
32
 
33
33
  public function phone(?string $phone)
@@ -35,9 +35,29 @@ class PlaceFilter extends Filter
35
35
  $this->builder->searchWhere('phone', $phone);
36
36
  }
37
37
 
38
- public function email(?string $email)
38
+ public function city(?string $city)
39
+ {
40
+ $this->builder->searchWhere('city', $city);
41
+ }
42
+
43
+ public function neighborhood(?string $neighborhood)
44
+ {
45
+ $this->builder->searchWhere('neighborhood', $neighborhood);
46
+ }
47
+
48
+ public function state(?string $state)
49
+ {
50
+ $this->builder->searchWhere('province', $state);
51
+ }
52
+
53
+ public function name(?string $name)
39
54
  {
40
- $this->builder->searchWhere('email', $email);
55
+ $this->builder->searchWhere('name', $name);
56
+ }
57
+
58
+ public function address(?string $address)
59
+ {
60
+ $this->builder->searchWhere(['street1', 'street2'], $address);
41
61
  }
42
62
 
43
63
  public function country(?string $country)
@@ -45,6 +65,28 @@ class PlaceFilter extends Filter
45
65
  $this->builder->where('country', $country);
46
66
  }
47
67
 
68
+ public function createdAt($createdAt)
69
+ {
70
+ $createdAt = Utils::dateRange($createdAt);
71
+
72
+ if (is_array($createdAt)) {
73
+ $this->builder->whereBetween('created_at', $createdAt);
74
+ } else {
75
+ $this->builder->whereDate('created_at', $createdAt);
76
+ }
77
+ }
78
+
79
+ public function updatedAt($updatedAt)
80
+ {
81
+ $updatedAt = Utils::dateRange($updatedAt);
82
+
83
+ if (is_array($updatedAt)) {
84
+ $this->builder->whereBetween('updated_at', $updatedAt);
85
+ } else {
86
+ $this->builder->whereDate('updated_at', $updatedAt);
87
+ }
88
+ }
89
+
48
90
  public function within($within)
49
91
  {
50
92
  // search for places within a radius of center coordinates
@@ -17,9 +17,9 @@ class VehicleFilter extends Filter
17
17
  $this->builder->search($query);
18
18
  }
19
19
 
20
- public function name(?string $name)
20
+ public function display_name(?string $display_name)
21
21
  {
22
- $this->builder->searchWhere(['year', 'model_make_display', 'make', 'model', 'trim', 'plate_number'], $name);
22
+ $this->builder->searchWhere(['year', 'make', 'model', 'plate_number'], $display_name);
23
23
  }
24
24
 
25
25
  public function vin(?string $vin)
@@ -37,14 +37,19 @@ class VehicleFilter extends Filter
37
37
  $this->builder->searchWhere('plate_number', $plateNumber);
38
38
  }
39
39
 
40
- public function vehicleMake(?string $make)
40
+ public function vehicleMake(?string $vehicleMake)
41
41
  {
42
- $this->builder->searchWhere('make', $make);
42
+ $this->builder->searchWhere('make', $vehicleMake);
43
43
  }
44
44
 
45
- public function vehicleModel(?string $model)
45
+ public function vehicleModel(?string $vehicle_model)
46
46
  {
47
- $this->builder->searchWhere('model', $model);
47
+ $this->builder->searchWhere('model', $vehicle_model);
48
+ }
49
+
50
+ public function vehicleYear(?string $vehicleYear)
51
+ {
52
+ $this->builder->searchWhere('year', $vehicleYear);
48
53
  }
49
54
 
50
55
  public function driver(?string $driverId)
@@ -57,6 +62,16 @@ class VehicleFilter extends Filter
57
62
  );
58
63
  }
59
64
 
65
+ public function vendor(?string $vendorId)
66
+ {
67
+ $this->builder->whereHas(
68
+ 'vendor',
69
+ function ($query) use ($vendorId) {
70
+ $query->where('uuid', $vendorId);
71
+ }
72
+ );
73
+ }
74
+
60
75
  public function driverUuid(?string $driverId)
61
76
  {
62
77
  $this->builder->whereHas(