ADD: Método para cambiar el estado de un dispositivo y ruta correspondiente

This commit is contained in:
Juan Felipe Zapata Moreno 2025-11-15 12:16:19 -06:00
parent 27cbc965b5
commit 12986d51cc
2 changed files with 53 additions and 0 deletions

View File

@ -10,6 +10,8 @@
use App\Models\Device;
use App\Models\DeviceModule;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Support\Facades\Log;
class DeviceController extends Controller
{
@ -175,4 +177,54 @@ public function destroy($id)
]);
}
}
/**
* Cambiar solo el status de un dispositivo
*/
public function toggleStatus(int $id)
{
try {
$device = Device::findOrFail($id);
DB::beginTransaction();
$newStatus = !$device->status;
$device->update([
'status' => $newStatus,
]);
DB::commit();
$device->refresh();
return ApiResponse::OK->response([
'message' => $device->status
? 'Dispositivo activado exitosamente'
: 'Dispositivo desactivado exitosamente',
'device' => [
'id' => $device->id,
'brand' => $device->brand,
'serie' => $device->serie,
'mac_address' => $device->mac_address,
'status' => $device->status ? 'Activo' : 'Inactivo',
'updated_at' => $device->updated_at->format('Y-m-d H:i:s'),
],
]);
} catch (ModelNotFoundException $e) {
return ApiResponse::NOT_FOUND->response([
'message' => 'Dispositivo no encontrado',
]);
} catch (\Exception $e) {
DB::rollBack();
Log::error('Error al cambiar status del módulo: ' . $e->getMessage(), [
'module_id' => $id,
'trace' => $e->getTraceAsString()
]);
return ApiResponse::INTERNAL_ERROR->response([
'message' => 'Error al cambiar status del módulo',
'error' => $e->getMessage(),
]);
}
}
}

View File

@ -55,6 +55,7 @@
Route::resource('municipality', MunicipalityController::class);
//Rutas de dispositivos
Route::patch('device/{id}/toggle-status', [DeviceController::class, 'toggleStatus']);
Route::resource('devices', DeviceController::class);
//Ruta de paquetes