authorize('viewAny', Device::class); $devices = Device::with(['zone', 'deviceType'])->orderBy('name')->get(); return view('devices.index', compact('devices')); } public function create() { $this->authorize('create', Device::class); return view('devices.create', $this->formOptions()); } public function store(DeviceRequest $request) { $device = new Device($request->validated()); $device->user()->associate($request->user()); $device->save(); return redirect()->route('devices.index')->with('status', 'Устройство добавлено.'); } public function edit(Device $device) { $this->authorize('update', $device); return view('devices.edit', ['device' => $device, ...$this->formOptions()]); } public function update(DeviceRequest $request, Device $device) { $device->update($request->validated()); return redirect()->route('devices.index')->with('status', 'Устройство обновлено.'); } public function destroy(Device $device) { $this->authorize('delete', $device); $device->delete(); return redirect()->route('devices.index')->with('status', 'Устройство удалено.'); } /** * @return array */ private function formOptions(): array { return [ 'zones' => Zone::orderBy('name')->get(), 'deviceTypes' => DeviceType::orderBy('code')->get(), ]; } }