fix: actualizar dispositivo

This commit is contained in:
Juan Felipe Zapata Moreno 2026-01-16 09:53:29 -06:00
parent 22f7e0226e
commit 974efc1c9c
3 changed files with 20 additions and 4 deletions

View File

@ -42,6 +42,7 @@ public function index()
'name', 'name',
'paternal', 'paternal',
'maternal', 'maternal',
'username',
'email', 'email',
'module_id', 'module_id',
'deleted_at' 'deleted_at'

View File

@ -122,6 +122,23 @@ public function update(DeviceUpdateRequest $request, $id)
$device = Device::findOrFail($id); $device = Device::findOrFail($id);
// Validar unicidad solo si los valores cambiaron
if ($request->filled('serie') && $request->serie !== $device->serie) {
if (Device::where('serie', $request->serie)->exists()) {
return ApiResponse::INTERNAL_ERROR->response([
'message' => 'El número de serie ya está en uso.',
]);
}
}
if ($request->filled('mac_address') && $request->mac_address !== $device->mac_address) {
if (Device::where('mac_address', $request->mac_address)->exists()) {
return ApiResponse::INTERNAL_ERROR->response([
'message' => 'La dirección MAC ya está registrada.',
]);
}
}
$device->update($request->only(['brand', 'serie', 'mac_address', 'status'])); $device->update($request->only(['brand', 'serie', 'mac_address', 'status']));
DeviceModule::where('device_id', $device->id)->delete(); DeviceModule::where('device_id', $device->id)->delete();

View File

@ -13,12 +13,10 @@ public function authorize(): bool
public function rules(): array public function rules(): array
{ {
$deviceId = $this->route('device');
return [ return [
'brand' => ['nullable', 'string', 'max:255'], 'brand' => ['nullable', 'string', 'max:255'],
'serie' => ['nullable', 'string', 'unique:devices,serie,' . $deviceId, 'max:255'], 'serie' => ['nullable', 'string', 'max:255'],
'mac_address' => ['nullable', 'string', 'unique:devices,mac_address,' . $deviceId, 'regex:/^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/'], 'mac_address' => ['nullable', 'string', 'regex:/^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/'],
'module_id' => ['nullable', 'exists:modules,id'], 'module_id' => ['nullable', 'exists:modules,id'],
'user_id' => ['nullable', 'array'], 'user_id' => ['nullable', 'array'],
'user_id.*' => ['exists:users,id'], 'user_id.*' => ['exists:users,id'],