ADD: Método para cambiar el estado de un dispositivo y ruta correspondiente
This commit is contained in:
parent
27cbc965b5
commit
12986d51cc
@ -10,6 +10,8 @@
|
|||||||
use App\Models\Device;
|
use App\Models\Device;
|
||||||
use App\Models\DeviceModule;
|
use App\Models\DeviceModule;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
class DeviceController extends Controller
|
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(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,6 +55,7 @@
|
|||||||
Route::resource('municipality', MunicipalityController::class);
|
Route::resource('municipality', MunicipalityController::class);
|
||||||
|
|
||||||
//Rutas de dispositivos
|
//Rutas de dispositivos
|
||||||
|
Route::patch('device/{id}/toggle-status', [DeviceController::class, 'toggleStatus']);
|
||||||
Route::resource('devices', DeviceController::class);
|
Route::resource('devices', DeviceController::class);
|
||||||
|
|
||||||
//Ruta de paquetes
|
//Ruta de paquetes
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user