has('member_type')) { $memberType = $request->input('member_type'); if (in_array($memberType, ['board', 'executive'])) { $query->ofType($memberType); } } // Filter by status (default to published for frontend) $status = $request->input('status', 'publish'); if ($status === 'publish') { $query->published(); } elseif ($status === 'draft') { $query->draft(); } // Order by sort field $query->ordered(); // Pagination $perPage = $request->input('per_page', 100); $members = $query->paginate($perPage); return response()->json($members); } /** * Display the specified member. * * @param int $id * @return JsonResponse */ public function show(int $id): JsonResponse { $member = Member::findOrFail($id); return response()->json([ 'data' => $member, ]); } /** * Store a newly created member in storage. * * @param Request $request * @return JsonResponse */ public function store(Request $request): JsonResponse { $validated = $request->validate([ 'portrait' => 'nullable|string|max:500', 'name' => 'required|string|max:255', 'title' => 'nullable|string|max:255', 'positions' => 'nullable|string', 'text' => 'nullable|string', 'sort' => 'nullable|integer|min:0', 'member_type' => ['required', Rule::in(['board', 'executive'])], 'status' => ['nullable', Rule::in(['draft', 'publish'])], ]); $member = Member::create($validated); return response()->json([ 'message' => 'Member created successfully', 'data' => $member, ], 201); } /** * Update the specified member in storage. * * @param Request $request * @param int $id * @return JsonResponse */ public function update(Request $request, int $id): JsonResponse { $member = Member::findOrFail($id); $validated = $request->validate([ 'portrait' => 'nullable|string|max:500', 'name' => 'sometimes|required|string|max:255', 'title' => 'nullable|string|max:255', 'positions' => 'nullable|string', 'text' => 'nullable|string', 'sort' => 'nullable|integer|min:0', 'member_type' => ['sometimes', 'required', Rule::in(['board', 'executive'])], 'status' => ['nullable', Rule::in(['draft', 'publish'])], ]); $member->update($validated); return response()->json([ 'message' => 'Member updated successfully', 'data' => $member, ]); } /** * Remove the specified member from storage. * * @param int $id * @return JsonResponse */ public function destroy(int $id): JsonResponse { $member = Member::findOrFail($id); $member->delete(); return response()->json([ 'message' => 'Member deleted successfully', ]); } }