user()->can('qms.spc.view')) { abort(403); } $business_id = $request->session()->get('user.business_id'); $characteristic = $request->get('characteristic', ''); $measurements = SpcMeasurement::forBusiness($business_id) ->when($characteristic, fn ($q) => $q->where('characteristic_name', $characteristic)) ->latest('measured_at') ->paginate(30); $characteristics = SpcMeasurement::forBusiness($business_id) ->select('characteristic_name') ->distinct() ->pluck('characteristic_name'); $summary = $characteristic ? $spc->characteristicSummary($business_id, $characteristic) : null; return view('qualitymanagement::spc.index', compact('measurements', 'characteristics', 'characteristic', 'summary')); } public function store(Request $request, SpcAnalysisService $spc) { if (! auth()->user()->can('qms.spc.create')) { abort(403); } $business_id = $request->session()->get('user.business_id'); $validated = $request->validate([ 'characteristic_name' => 'required|string|max:255', 'measured_value' => 'required|numeric', 'usl' => 'nullable|numeric', 'lsl' => 'nullable|numeric', 'target' => 'nullable|numeric', 'ie_work_order_id' => 'nullable|integer', 'shop_floor_event_id' => 'nullable|integer', ]); $spc->recordMeasurement($business_id, $validated); return redirect()->back()->with('status', ['success' => 1, 'msg' => __('qualitymanagement::lang.spc_recorded')]); } }