user()->can('shopfloor.instructions.view')) { abort(403); } $business_id = $request->session()->get('user.business_id'); $instructions = WorkInstruction::forBusiness($business_id) ->with(['bom', 'lineRevision']) ->latest('id') ->paginate(20); $boms = Bom::where('business_id', $business_id)->orderByDesc('id')->limit(100)->pluck('bom_code', 'id'); $lineRevisions = LineRevision::where('business_id', $business_id)->orderByDesc('id')->limit(100)->pluck('revision_code', 'id'); return view('shopfloor::work_instructions.index', compact('instructions', 'boms', 'lineRevisions')); } public function store(Request $request) { if (! auth()->user()->can('shopfloor.instructions.view')) { abort(403); } $business_id = $request->session()->get('user.business_id'); $validated = $request->validate([ 'title' => 'required|string|max:255', 'content' => 'nullable|string', 'ie_bom_id' => 'nullable|integer|exists:ie_boms,id', 'ie_line_revision_id' => 'nullable|integer|exists:ie_line_revisions,id', 'version' => 'nullable|string|max:20', 'status' => 'required|in:draft,active,obsolete', ]); WorkInstruction::create(array_merge($validated, [ 'business_id' => $business_id, 'version' => $validated['version'] ?? '1.0', ])); return redirect()->action([self::class, 'index'])->with('status', ['success' => 1, 'msg' => __('shopfloor::lang.instruction_created')]); } }