query('q', ''); $page = (int) $request->query('page', 1); $size = (int) $request->query('size', 20); return $this->service->list($q, $page, $size); }, __('message.fetched')); } public function store(Request $request) { return ApiResponse::handle(function () use ($request) { $payload = $request->validate([ 'code' => 'required|string|max:100', 'name' => 'required|string|max:200', 'category_id' => 'nullable|integer', 'lifecycle' => 'nullable|string|max:30', 'description' => 'nullable|string', 'is_active' => 'boolean', ]); return $this->service->create($payload); }, __('message.created')); } public function show(int $id) { return ApiResponse::handle(fn() => $this->service->find($id), __('message.fetched')); } public function update(Request $request, int $id) { return ApiResponse::handle(function () use ($request, $id) { $payload = $request->validate([ 'code' => 'sometimes|string|max:100', 'name' => 'sometimes|string|max:200', 'category_id' => 'nullable|integer', 'lifecycle' => 'nullable|string|max:30', 'description' => 'nullable|string', 'is_active' => 'boolean', ]); return $this->service->update($id, $payload); }, __('message.updated')); } public function destroy(int $id) { return ApiResponse::handle(function () use ($id) { $this->service->delete($id); return null; }, __('message.deleted')); } }