diff --git a/app/Http/Controllers/Repuve/DeviceController.php b/app/Http/Controllers/Repuve/DeviceController.php index 39a72c5..de6cbbe 100644 --- a/app/Http/Controllers/Repuve/DeviceController.php +++ b/app/Http/Controllers/Repuve/DeviceController.php @@ -53,20 +53,31 @@ public function store(DeviceStoreRequest $request) ]); // 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([ 'device_id' => $device->id, 'module_id' => $request->module_id, - 'user_id' => $userId, + 'user_id' => null, 'status' => true, ]); } DB::commit(); - $device->load('modules'); + $device->load('deviceModules.module'); return ApiResponse::CREATED->response([ 'message' => 'Dispositivo creado exitosamente.', @@ -75,6 +86,7 @@ public function store(DeviceStoreRequest $request) 'brand' => $device->brand, 'serie' => $device->serie, 'status' => $device->status, + 'module' => $device->deviceModules->first()?->module, ], ]); } catch (\Exception $e) { @@ -114,12 +126,22 @@ public function update(DeviceUpdateRequest $request, $id) DeviceModule::where('device_id', $device->id)->delete(); - $userIds = $request->input('user_id'); - foreach ($userIds as $userId) { + $userIds = $request->input('user_id', []); + + 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([ 'device_id' => $device->id, 'module_id' => $request->module_id, - 'user_id' => $userId, + 'user_id' => null, 'status' => true, ]); } diff --git a/database/migrations/2026_01_16_092743_make_user_id_nullable_in_device_module_table.php b/database/migrations/2026_01_16_092743_make_user_id_nullable_in_device_module_table.php new file mode 100644 index 0000000..8864bf5 --- /dev/null +++ b/database/migrations/2026_01_16_092743_make_user_id_nullable_in_device_module_table.php @@ -0,0 +1,28 @@ +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(); + }); + } +};