Skip to content

Commit 3743542

Browse files
authored
Merge pull request #200 from fleetbase/dev-v0.6.33
v0.6.33
2 parents 666369a + e0d3fcb commit 3743542

File tree

14 files changed

+232
-115
lines changed

14 files changed

+232
-115
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "fleetbase/fleetops-api",
3-
"version": "0.6.32",
3+
"version": "0.6.33",
44
"description": "Fleet & Transport Management Extension for Fleetbase",
55
"keywords": [
66
"fleetbase-extension",

extension.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "Fleet-Ops",
3-
"version": "0.6.32",
3+
"version": "0.6.33",
44
"description": "Fleet & Transport Management Extension for Fleetbase",
55
"repository": "https://github.com/fleetbase/fleetops",
66
"license": "AGPL-3.0-or-later",

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@fleetbase/fleetops-engine",
3-
"version": "0.6.32",
3+
"version": "0.6.33",
44
"description": "Fleet & Transport Management Extension for Fleetbase",
55
"fleetbase": {
66
"route": "fleet-ops"
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
<?php
2+
3+
namespace Fleetbase\FleetOps\Console\Commands;
4+
5+
use Fleetbase\FleetOps\Mail\CustomerCredentialsMail;
6+
use Fleetbase\FleetOps\Models\Contact;
7+
use Fleetbase\Models\Company;
8+
use Fleetbase\Models\User;
9+
use Illuminate\Console\Command;
10+
use Illuminate\Support\Facades\Mail;
11+
12+
class TestEmail extends Command
13+
{
14+
/**
15+
* The name and signature of the console command.
16+
*
17+
* @var string
18+
*/
19+
protected $signature = 'fleetops:test-email {email} {--type=customer_credentials : The type of email to test}';
20+
21+
/**
22+
* The console command description.
23+
*
24+
* @var string
25+
*/
26+
protected $description = 'Test FleetOps email templates';
27+
28+
/**
29+
* Execute the console command.
30+
*
31+
* @return int
32+
*/
33+
public function handle()
34+
{
35+
$email = $this->argument('email');
36+
$type = $this->option('type');
37+
38+
$this->info('Sending test email...');
39+
$this->info("Type: {$type}");
40+
$this->info("To: {$email}");
41+
42+
try {
43+
switch ($type) {
44+
case 'customer_credentials':
45+
$this->sendCustomerCredentialsEmail($email);
46+
break;
47+
48+
default:
49+
$this->error("Unknown email type: {$type}");
50+
return Command::FAILURE;
51+
}
52+
53+
$this->info('✓ Test email sent successfully!');
54+
return Command::SUCCESS;
55+
} catch (\Exception $e) {
56+
$this->error('Failed to send test email: ' . $e->getMessage());
57+
return Command::FAILURE;
58+
}
59+
}
60+
61+
/**
62+
* Send a test customer credentials email.
63+
*
64+
* @param string $email
65+
* @return void
66+
*/
67+
private function sendCustomerCredentialsEmail(string $email): void
68+
{
69+
// Create a mock user
70+
$user = new User([
71+
'name' => 'Test Customer',
72+
'email' => $email,
73+
]);
74+
75+
// Create a mock company
76+
$company = new Company([
77+
'name' => 'Test Company',
78+
'public_id' => 'test_company_123',
79+
]);
80+
81+
// Create a mock customer
82+
$customer = new Contact([
83+
'name' => 'Test Customer',
84+
'email' => $email,
85+
'phone' => '+1234567890',
86+
]);
87+
88+
// Set relations
89+
$customer->setRelation('company', $company);
90+
$customer->setRelation('user', $user);
91+
92+
// Mock password
93+
$plaintextPassword = 'TestPassword123!';
94+
95+
// Send the email
96+
Mail::to($email)->send(new CustomerCredentialsMail($plaintextPassword, $customer));
97+
}
98+
}

server/src/Http/Controllers/Api/v1/DriverController.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ public function create(CreateDriverRequest $request)
6262
// Apply user infos
6363
$userDetails = User::applyUserInfoFromRequest($request, $userDetails);
6464

65+
// Set company_uuid before creating user
66+
$userDetails['company_uuid'] = $company->uuid;
67+
6568
// create user account for driver
6669
$user = User::create($userDetails);
6770

server/src/Http/Controllers/Api/v1/VehicleController.php

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,10 @@ public function create(CreateVehicleRequest $request)
2727
{
2828
// get request input
2929
$input = $request->only(['status', 'make', 'model', 'year', 'trim', 'type', 'plate_number', 'vin', 'meta', 'online', 'location', 'altitude', 'heading', 'speed']);
30+
3031
// make sure company is set
3132
$input['company_uuid'] = session('company');
3233

33-
// create instance of vehicle model
34-
$vehicle = new Vehicle();
35-
3634
// set default online
3735
if (!isset($input['online'])) {
3836
$input['online'] = 0;
@@ -51,11 +49,8 @@ public function create(CreateVehicleRequest $request)
5149
$input['location'] = Utils::getPointFromCoordinates($request->only(['latitude', 'longitude']));
5250
}
5351

54-
// apply user input to vehicle
55-
$vehicle = $vehicle->fill($input);
56-
57-
// save the vehicle
58-
$vehicle->save();
52+
// create the vehicle (fires 'created' event for billing resource tracking)
53+
$vehicle = Vehicle::create($input);
5954

6055
// driver assignment
6156
if ($request->has('driver')) {

server/src/Http/Controllers/Internal/v1/DriverController.php

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,37 @@ function (&$request, &$input) {
136136

137137
if ($input->has('user_uuid')) {
138138
$user = User::where('uuid', $input->get('user_uuid'))->first();
139-
if ($user && $input->has('photo_uuid')) {
139+
140+
// If user doesn't exist with provided UUID, create new user
141+
if (!$user) {
142+
$userInput = $input
143+
->only(['name', 'password', 'email', 'phone', 'status', 'avatar_uuid'])
144+
->filter()
145+
->toArray();
146+
147+
// handle `photo_uuid`
148+
if (isset($input['photo_uuid']) && Str::isUuid($input['photo_uuid'])) {
149+
$userInput['avatar_uuid'] = $input['photo_uuid'];
150+
}
151+
152+
// Make sure password is set
153+
if (empty($userInput['password'])) {
154+
$userInput['password'] = Str::random(14);
155+
}
156+
157+
// Set user company
158+
$userInput['company_uuid'] = session('company', $company->uuid);
159+
160+
// Apply user infos
161+
$userInput = User::applyUserInfoFromRequest($request, $userInput);
162+
163+
// Create user account
164+
$user = User::create($userInput);
165+
166+
// Set the user type to driver
167+
$user->setType('driver');
168+
} elseif ($input->has('photo_uuid')) {
169+
// Update existing user's avatar if photo provided
140170
$user->update(['avatar_uuid' => $input->get('photo_uuid')]);
141171
}
142172
} else {

server/src/Http/Controllers/Internal/v1/OrderController.php

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,12 @@
2929
use Fleetbase\FleetOps\Support\Utils;
3030
use Fleetbase\Http\Requests\ExportRequest;
3131
use Fleetbase\Http\Requests\Internal\BulkActionRequest;
32-
use Fleetbase\Http\Requests\Internal\BulkDeleteRequest;
3332
use Fleetbase\Models\File;
3433
use Fleetbase\Models\Type;
3534
use Fleetbase\Support\TemplateString;
3635
use Illuminate\Database\Eloquent\ModelNotFoundException;
3736
use Illuminate\Database\QueryException;
3837
use Illuminate\Http\Request;
39-
use Illuminate\Support\Collection;
4038
use Illuminate\Support\Facades\Cache;
4139
use Illuminate\Support\Facades\DB;
4240
use Illuminate\Support\Facades\Validator;
@@ -330,36 +328,6 @@ public function importFromFiles(Request $request)
330328
);
331329
}
332330

333-
/**
334-
* Updates a order to canceled and updates order activity.
335-
*
336-
* @return \Illuminate\Http\Response
337-
*/
338-
public function bulkDelete(BulkDeleteRequest $request)
339-
{
340-
$ids = $request->input('ids', []);
341-
342-
if (!$ids) {
343-
return response()->error('Nothing to delete.');
344-
}
345-
346-
/** @var Order */
347-
$count = Order::whereIn('uuid', $ids)->count();
348-
$deleted = Order::whereIn('uuid', $ids)->delete();
349-
350-
if (!$deleted) {
351-
return response()->error('Failed to bulk delete orders.');
352-
}
353-
354-
return response()->json(
355-
[
356-
'status' => 'OK',
357-
'message' => 'Deleted ' . $count . ' orders',
358-
'count' => $count,
359-
]
360-
);
361-
}
362-
363331
/**
364332
* Updates a order to canceled and updates order activity.
365333
*

server/src/Http/Controllers/Internal/v1/PlaceController.php

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
use Fleetbase\FleetOps\Support\Geocoding;
1111
use Fleetbase\Http\Requests\ExportRequest;
1212
use Fleetbase\Http\Requests\ImportRequest;
13-
use Fleetbase\Http\Requests\Internal\BulkDeleteRequest;
1413
use Fleetbase\LaravelMysqlSpatial\Types\Point;
1514
use Illuminate\Http\Request;
1615
use Illuminate\Support\Str;
@@ -150,38 +149,6 @@ public function export(ExportRequest $request)
150149
return Excel::download(new PlaceExport($selections), $fileName);
151150
}
152151

153-
/**
154-
* Bulk deletes resources.
155-
*
156-
* @return \Illuminate\Http\Response
157-
*/
158-
public function bulkDelete(BulkDeleteRequest $request)
159-
{
160-
$ids = $request->input('ids', []);
161-
162-
if (!$ids) {
163-
return response()->error('Nothing to delete.');
164-
}
165-
166-
/**
167-
* @var \Fleetbase\Models\Place
168-
*/
169-
$count = Place::whereIn('uuid', $ids)->applyDirectivesForPermissions('fleet-ops list place')->count();
170-
$deleted = Place::whereIn('uuid', $ids)->applyDirectivesForPermissions('fleet-ops list place')->delete();
171-
172-
if (!$deleted) {
173-
return response()->error('Failed to bulk delete places.');
174-
}
175-
176-
return response()->json(
177-
[
178-
'status' => 'OK',
179-
'message' => 'Deleted ' . $count . ' places',
180-
],
181-
200
182-
);
183-
}
184-
185152
/**
186153
* Get all avatar options for an vehicle.
187154
*

server/src/Http/Controllers/Internal/v1/VendorController.php

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
use Fleetbase\FleetOps\Models\Vendor;
1010
use Fleetbase\Http\Requests\ExportRequest;
1111
use Fleetbase\Http\Requests\ImportRequest;
12-
use Fleetbase\Http\Requests\Internal\BulkDeleteRequest;
1312
use Illuminate\Http\Request;
1413
use Illuminate\Support\Facades\DB;
1514
use Illuminate\Support\Str;
@@ -85,36 +84,6 @@ public static function export(ExportRequest $request)
8584
return Excel::download(new VendorExport($selections), $fileName);
8685
}
8786

88-
/**
89-
* Bulk delete resources.
90-
*
91-
* @return \Illuminate\Http\Response
92-
*/
93-
public function bulkDelete(BulkDeleteRequest $request)
94-
{
95-
$ids = $request->input('ids', []);
96-
97-
if (!$ids) {
98-
return response()->error('Nothing to delete.');
99-
}
100-
101-
/** @var \Fleetbase\Models\Vendor */
102-
$count = Vendor::whereIn('uuid', $ids)->count();
103-
$deleted = Vendor::whereIn('uuid', $ids)->delete();
104-
105-
if (!$deleted) {
106-
return response()->error('Failed to bulk delete vendors.');
107-
}
108-
109-
return response()->json(
110-
[
111-
'status' => 'OK',
112-
'message' => 'Deleted ' . $count . ' vendors',
113-
],
114-
200
115-
);
116-
}
117-
11887
/**
11988
* Get all status options for an vehicle.
12089
*

0 commit comments

Comments
 (0)