63 lines
1.7 KiB
PHP
63 lines
1.7 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Actions\User;
|
||
|
|
|
||
|
|
use App\Models\User;
|
||
|
|
use Illuminate\Support\Facades\DB;
|
||
|
|
use Illuminate\Support\Facades\Log;
|
||
|
|
|
||
|
|
class EditUserAction
|
||
|
|
{
|
||
|
|
public function execute(User $user, array $data): bool
|
||
|
|
{
|
||
|
|
try {
|
||
|
|
DB::beginTransaction();
|
||
|
|
|
||
|
|
Log::info('EditUserAction: Starting user update', [
|
||
|
|
'user_id' => $user->id,
|
||
|
|
'old_name' => $user->name,
|
||
|
|
'new_name' => $data['name'],
|
||
|
|
'planner_id' => $user->planner_id,
|
||
|
|
]);
|
||
|
|
|
||
|
|
$result = $user->update([
|
||
|
|
'name' => $data['name'],
|
||
|
|
]);
|
||
|
|
|
||
|
|
Log::info('EditUserAction: Update result', [
|
||
|
|
'result' => $result,
|
||
|
|
'user_id' => $user->id,
|
||
|
|
]);
|
||
|
|
|
||
|
|
if (!$result) {
|
||
|
|
throw new \Exception('User update returned false');
|
||
|
|
}
|
||
|
|
|
||
|
|
// Verify the update actually happened
|
||
|
|
$user->refresh();
|
||
|
|
if ($user->name !== $data['name']) {
|
||
|
|
throw new \Exception('User update did not persist to database');
|
||
|
|
}
|
||
|
|
|
||
|
|
DB::commit();
|
||
|
|
|
||
|
|
Log::info('EditUserAction: User successfully updated', [
|
||
|
|
'user_id' => $user->id,
|
||
|
|
'updated_name' => $user->name,
|
||
|
|
]);
|
||
|
|
|
||
|
|
return true;
|
||
|
|
|
||
|
|
} catch (\Exception $e) {
|
||
|
|
DB::rollBack();
|
||
|
|
|
||
|
|
Log::error('EditUserAction: User update failed', [
|
||
|
|
'user_id' => $user->id,
|
||
|
|
'error' => $e->getMessage(),
|
||
|
|
'trace' => $e->getTraceAsString(),
|
||
|
|
]);
|
||
|
|
|
||
|
|
throw $e;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|