fix: creación de dispositivo

This commit is contained in:
Juan Felipe Zapata Moreno 2026-01-16 09:29:03 -06:00
parent 0a7b46c0bc
commit 22f7e0226e
2 changed files with 57 additions and 7 deletions

View File

@ -53,20 +53,31 @@ public function store(DeviceStoreRequest $request)
]); ]);
// Asignar módulo y usuarios usando el modelo DeviceModule // Asignar módulo y usuarios usando el modelo DeviceModule
$userIds = $request->input('user_id'); $userIds = $request->input('user_id', []);
foreach ($userIds as $userId) { if (!empty($userIds)) {
// Si hay usuarios, crear un registro por cada usuario
foreach ($userIds as $userId) {
DeviceModule::create([
'device_id' => $device->id,
'module_id' => $request->module_id,
'user_id' => $userId,
'status' => true,
]);
}
} else {
// Si no hay usuarios, crear solo la relación device-module
DeviceModule::create([ DeviceModule::create([
'device_id' => $device->id, 'device_id' => $device->id,
'module_id' => $request->module_id, 'module_id' => $request->module_id,
'user_id' => $userId, 'user_id' => null,
'status' => true, 'status' => true,
]); ]);
} }
DB::commit(); DB::commit();
$device->load('modules'); $device->load('deviceModules.module');
return ApiResponse::CREATED->response([ return ApiResponse::CREATED->response([
'message' => 'Dispositivo creado exitosamente.', 'message' => 'Dispositivo creado exitosamente.',
@ -75,6 +86,7 @@ public function store(DeviceStoreRequest $request)
'brand' => $device->brand, 'brand' => $device->brand,
'serie' => $device->serie, 'serie' => $device->serie,
'status' => $device->status, 'status' => $device->status,
'module' => $device->deviceModules->first()?->module,
], ],
]); ]);
} catch (\Exception $e) { } catch (\Exception $e) {
@ -114,12 +126,22 @@ public function update(DeviceUpdateRequest $request, $id)
DeviceModule::where('device_id', $device->id)->delete(); DeviceModule::where('device_id', $device->id)->delete();
$userIds = $request->input('user_id'); $userIds = $request->input('user_id', []);
foreach ($userIds as $userId) {
if (!empty($userIds)) {
foreach ($userIds as $userId) {
DeviceModule::create([
'device_id' => $device->id,
'module_id' => $request->module_id,
'user_id' => $userId,
'status' => true,
]);
}
} else {
DeviceModule::create([ DeviceModule::create([
'device_id' => $device->id, 'device_id' => $device->id,
'module_id' => $request->module_id, 'module_id' => $request->module_id,
'user_id' => $userId, 'user_id' => null,
'status' => true, 'status' => true,
]); ]);
} }

View File

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('device_module', function (Blueprint $table) {
$table->foreignId('user_id')->nullable()->change();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('device_module', function (Blueprint $table) {
$table->foreignId('user_id')->nullable(false)->change();
});
}
};