ownerRef($request); return view('pos.menu.index', [ 'categories' => PosCategory::owned($owner)->orderBy('position')->orderBy('name')->get(), 'stations' => PosStation::owned($owner)->orderBy('position')->orderBy('name')->get(), 'groups' => PosModifierGroup::owned($owner)->with('modifiers')->orderBy('position')->orderBy('name')->get(), ]); } public function storeCategory(Request $request): RedirectResponse { $data = $request->validate(['name' => ['required', 'string', 'max:80']]); PosCategory::create(['owner_ref' => $this->ownerRef($request), 'name' => $data['name']]); return back()->with('success', 'Category added.'); } public function destroyCategory(Request $request, PosCategory $category): RedirectResponse { $this->authorizeOwner($request, $category); $category->delete(); return back()->with('success', 'Category removed.'); } public function storeStation(Request $request): RedirectResponse { $data = $request->validate(['name' => ['required', 'string', 'max:80']]); PosStation::create(['owner_ref' => $this->ownerRef($request), 'name' => $data['name']]); return back()->with('success', 'Station added.'); } public function destroyStation(Request $request, PosStation $station): RedirectResponse { $this->authorizeOwner($request, $station); $station->delete(); return back()->with('success', 'Station removed.'); } public function storeGroup(Request $request): RedirectResponse { $data = $request->validate([ 'name' => ['required', 'string', 'max:80'], 'min_select' => ['nullable', 'integer', 'min:0', 'max:20'], 'max_select' => ['nullable', 'integer', 'min:0', 'max:20'], ]); PosModifierGroup::create([ 'owner_ref' => $this->ownerRef($request), 'name' => $data['name'], 'min_select' => $data['min_select'] ?? 0, 'max_select' => $data['max_select'] ?: null, ]); return back()->with('success', 'Modifier group added.'); } public function destroyGroup(Request $request, PosModifierGroup $group): RedirectResponse { $this->authorizeOwner($request, $group); $group->delete(); return back()->with('success', 'Modifier group removed.'); } public function storeModifier(Request $request, PosModifierGroup $group): RedirectResponse { $this->authorizeOwner($request, $group); $data = $request->validate([ 'name' => ['required', 'string', 'max:80'], 'price_delta' => ['nullable', 'numeric', 'min:-9999', 'max:9999'], ]); $group->modifiers()->create([ 'owner_ref' => $group->owner_ref, 'name' => $data['name'], 'price_delta_minor' => (int) round(((float) ($data['price_delta'] ?? 0)) * 100), ]); return back()->with('success', 'Option added.'); } public function destroyModifier(Request $request, PosModifier $modifier): RedirectResponse { $this->authorizeOwner($request, $modifier); $modifier->delete(); return back()->with('success', 'Option removed.'); } }