orderBy('name')->get(); return view('admin.templates.index', compact('templates')); } public function create(): View { return view('admin.templates.create'); } public function store(Request $request): RedirectResponse { $data = $request->validate([ 'slug' => ['required', 'string', 'max:64', 'alpha_dash', 'unique:vm_templates,slug'], 'name' => ['required', 'string', 'max:120'], 'proxmox_template_vmid' => ['required', 'integer', 'min:100'], 'os_family' => ['nullable', 'string', 'max:32'], 'is_active' => ['boolean'], ]); VmTemplate::query()->create([ ...$data, 'is_active' => $request->boolean('is_active', true), ]); return redirect()->route('admin.templates.index')->with('success', 'Template angelegt.'); } public function edit(VmTemplate $template): View { return view('admin.templates.edit', compact('template')); } public function update(Request $request, VmTemplate $template): RedirectResponse { $data = $request->validate([ 'slug' => ['required', 'string', 'max:64', 'alpha_dash', 'unique:vm_templates,slug,'.$template->id], 'name' => ['required', 'string', 'max:120'], 'proxmox_template_vmid' => ['required', 'integer', 'min:100'], 'os_family' => ['nullable', 'string', 'max:32'], 'is_active' => ['boolean'], ]); $template->update([ ...$data, 'is_active' => $request->boolean('is_active', true), ]); return redirect()->route('admin.templates.index')->with('success', 'Template aktualisiert.'); } public function destroy(VmTemplate $template): RedirectResponse { $template->delete(); return redirect()->route('admin.templates.index')->with('success', 'Template gelöscht.'); } }