authorizeAbility($request, 'rules.view'); $this->authorizeOwner($request, $serviceQueue); $rules = QueueRule::owned($this->ownerRef($request)) ->where('service_queue_id', $serviceQueue->id) ->orderBy('sort_order') ->get(); return response()->json(['data' => $rules]); } public function store(Request $request, ServiceQueue $serviceQueue): JsonResponse { $this->authorizeAbility($request, 'rules.manage'); $this->authorizeOwner($request, $serviceQueue); $validated = $request->validate([ 'rule_type' => ['required', 'string', 'in:'.implode(',', array_keys(config('qms.rule_types')))], 'conditions' => ['nullable', 'array'], 'actions' => ['nullable', 'array'], ]); $rule = QueueRule::create([ 'owner_ref' => $this->ownerRef($request), 'service_queue_id' => $serviceQueue->id, 'rule_type' => $validated['rule_type'], 'conditions' => $validated['conditions'] ?? [], 'actions' => $validated['actions'] ?? [], 'sort_order' => QueueRule::where('service_queue_id', $serviceQueue->id)->max('sort_order') + 1, 'is_active' => true, ]); return response()->json(['data' => $rule], 201); } }