user()->can('shopfloor.view')) { abort(403); } $business_id = $request->session()->get('user.business_id'); $workCenters = WorkCenter::forBusiness($business_id) ->with(['lineTemplate', 'maintenanceEquipment']) ->orderBy('name') ->paginate(20); $lineTemplates = LineTemplate::where('business_id', $business_id)->orderBy('template_code')->pluck('template_code', 'id'); $equipment = Equipment::where('business_id', $business_id)->orderBy('name')->pluck('name', 'id'); return view('shopfloor::work_centers.index', compact('workCenters', 'lineTemplates', 'equipment')); } public function store(Request $request) { if (! auth()->user()->can('shopfloor.view')) { abort(403); } $business_id = $request->session()->get('user.business_id'); $validated = $request->validate([ 'name' => 'required|string|max:255', 'code' => 'required|string|max:50', 'ie_line_template_id' => 'nullable|integer|exists:ie_line_templates,id', 'maintenance_equipment_id' => 'nullable|integer|exists:maintenance_equipment,id', 'capacity_per_hour' => 'nullable|numeric|min:0', 'status' => 'required|in:active,inactive,maintenance', ]); WorkCenter::create(array_merge($validated, [ 'business_id' => $business_id, 'capacity_per_hour' => $validated['capacity_per_hour'] ?? 0, ])); return redirect()->action([self::class, 'index'])->with('status', ['success' => 1, 'msg' => __('shopfloor::lang.work_center_created')]); } public function update(Request $request, $id) { if (! auth()->user()->can('shopfloor.view')) { abort(403); } $business_id = $request->session()->get('user.business_id'); $workCenter = WorkCenter::forBusiness($business_id)->findOrFail($id); $validated = $request->validate([ 'name' => 'required|string|max:255', 'code' => 'required|string|max:50', 'ie_line_template_id' => 'nullable|integer|exists:ie_line_templates,id', 'maintenance_equipment_id' => 'nullable|integer|exists:maintenance_equipment,id', 'capacity_per_hour' => 'nullable|numeric|min:0', 'status' => 'required|in:active,inactive,maintenance', ]); $workCenter->update($validated); return redirect()->action([self::class, 'index'])->with('status', ['success' => 1, 'msg' => __('shopfloor::lang.work_center_updated')]); } public function formOptions(Request $request): array { $business_id = $request->session()->get('user.business_id'); return [ 'lineTemplates' => LineTemplate::where('business_id', $business_id)->orderBy('template_code')->pluck('template_code', 'id'), 'equipment' => Equipment::where('business_id', $business_id)->orderBy('name')->pluck('name', 'id'), ]; } }