boolean('include_inactive')) { $query->where('is_active', true); } return response()->json($query->orderBy('order')->get()); } public function show($id) { return response()->json(BreathingColor::findOrFail($id)); } public function store(Request $request) { $data = $this->validateData($request, true); $color = BreathingColor::create($data); return response()->json([ 'message' => 'Color created successfully', 'color' => $color, ], 201); } public function update(Request $request, $id) { $color = BreathingColor::findOrFail($id); $color->update($this->validateData($request, false)); return response()->json([ 'message' => 'Color updated successfully', 'color' => $color, ]); } public function destroy($id) { BreathingColor::findOrFail($id)->delete(); return response()->json(['message' => 'Color deleted successfully']); } private function validateData(Request $request, bool $creating): array { return $request->validate([ 'name' => 'nullable|string|max:255', 'colors' => ($creating ? 'required' : 'sometimes') . '|array|min:1', 'colors.*' => ['string', 'regex:/^#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$/'], 'order' => 'nullable|integer', 'is_active' => 'nullable|boolean', ]); } }