getModel($type); if (!$model) return response()->json(['message' => 'Invalid master type'], 400); return response()->json($model::all()); } public function store(Request $request, $type) { $model = $this->getModel($type); if (!$model) return response()->json(['message' => 'Invalid master type'], 400); $validated = $request->validate([ 'name' => 'required|string|max:255', 'status' => 'required|string|in:Active,Inactive' ]); $item = $model::create($validated); return response()->json($item, 201); } public function update(Request $request, $type, $id) { $model = $this->getModel($type); if (!$model) return response()->json(['message' => 'Invalid master type'], 400); $item = $model::findOrFail($id); $validated = $request->validate([ 'name' => 'required|string|max:255', 'status' => 'required|string|in:Active,Inactive' ]); $item->update($validated); return response()->json($item); } public function destroy($type, $id) { $model = $this->getModel($type); if (!$model) return response()->json(['message' => 'Invalid master type'], 400); $item = $model::findOrFail($id); if ($type === 'collection' && ( strtolower($item->name) === 'product sale' || strtolower($item->name) === 'product saled' )) { return response()->json(['message' => 'System required item cannot be deleted'], 422); } $item->delete(); return response()->json(['message' => 'Deleted successfully']); } }