Files
home_automatization/laravel-app/routes/web.php
T
cacto d10f95182d Управление типами устройств из UI (список + создание)
Раньше device_types заводились только через сидер — теперь owner может
посмотреть все типы (карточки: иконка по категории, capabilities
тегами, число устройств этого типа) и добавить новый прямо из
интерфейса: код, категория, возможности вводятся тегами (можно
вписать вручную и добавить по Enter/кнопке). Ссылка на список — со
страницы устройств.

DeviceTypePolicy зеркалит остальные Policy (view — всем, create —
только owner). DeviceTypeResource получил devices_count через
whenCounted — опционально, не ломает существующий API-эндпоинт
(там withCount не вызывается, поле просто не появляется).
2026-08-18 03:09:47 +05:00

53 lines
2.1 KiB
PHP

<?php
use App\Http\Controllers\AutomationRuleController;
use App\Http\Controllers\DeviceController;
use App\Http\Controllers\DeviceTypeController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\ZoneController;
use App\Models\AutomationRule;
use App\Models\Device;
use App\Models\Zone;
use App\Services\DeviceShadow;
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
Route::get('/', function () {
return view('welcome');
});
Route::get('/dashboard', function (DeviceShadow $shadow) {
$devices = Device::all();
$onlineCount = collect($shadow->statuses($devices->pluck('external_id')->all()))
->filter(fn (string $status) => $status === 'online')
->count();
return Inertia::render('Dashboard', [
'zonesCount' => Zone::count(),
'devicesCount' => $devices->count(),
'onlineDevicesCount' => $onlineCount,
'activeRulesCount' => AutomationRule::where('is_active', true)->count(),
]);
})->middleware(['auth', 'verified'])->name('dashboard');
Route::middleware(['auth', 'verified'])->group(function () {
Route::resource('zones', ZoneController::class)->except('show');
Route::resource('devices', DeviceController::class);
Route::resource('device-types', DeviceTypeController::class)->only(['index', 'create', 'store']);
Route::resource('automation-rules', AutomationRuleController::class)
->except('show')
->parameters(['automation-rules' => 'automation_rule']);
Route::post('/devices/{device}/turn-on', [DeviceController::class, 'turnOn'])->name('devices.turn-on');
Route::post('/devices/{device}/turn-off', [DeviceController::class, 'turnOff'])->name('devices.turn-off');
Route::post('/devices/{device}/set-level', [DeviceController::class, 'setLevel'])->name('devices.set-level');
});
Route::middleware('auth')->group(function () {
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});
require __DIR__.'/auth.php';