user(); if ($user && $user->hasAnyRole(['Site Technical', 'Construction Supervisor', 'Site Operations', 'Site Engineer', 'Site Supervisor', 'Field Engineer', 'Safety Officer', 'Quality Inspector', 'Warehouse Staff'])) { abort(403, 'Unauthorized action. Site Operations roles cannot modify equipment specifications.'); } } public function store(Request $request) { $this->ensureCanManageEquipment(); $validated = $request->validate([ 'name' => 'required|string|max:255|unique:equipment_specifications,name', 'description' => 'nullable|string', ]); EquipmentSpecification::create([ 'ulid' => (string) Str::ulid(), 'name' => $validated['name'], 'description' => $validated['description'] ?? null, ]); return redirect()->back()->with('success', 'Specification added successfully.'); } public function update(Request $request, EquipmentSpecification $equipmentSpecification) { $this->ensureCanManageEquipment(); $validated = $request->validate([ 'name' => 'required|string|max:255|unique:equipment_specifications,name,' . $equipmentSpecification->id, 'description' => 'nullable|string', ]); $equipmentSpecification->update($validated); return redirect()->back()->with('success', 'Specification updated successfully.'); } public function destroy(EquipmentSpecification $equipmentSpecification) { $this->ensureCanManageEquipment(); $equipmentSpecification->delete(); return redirect()->back()->with('success', 'Specification deleted successfully.'); } }