planService->index($request->validated()); return ApiResponse::handle('message.fetched', $result); } /** * 활성 요금제 목록 (공개용) */ public function active(): JsonResponse { $result = $this->planService->active(); return ApiResponse::handle('message.fetched', $result); } /** * 요금제 등록 */ public function store(PlanStoreRequest $request): JsonResponse { $result = $this->planService->store($request->validated()); return ApiResponse::handle('message.created', $result, 201); } /** * 요금제 상세 */ public function show(int $id): JsonResponse { $result = $this->planService->show($id); return ApiResponse::handle('message.fetched', $result); } /** * 요금제 수정 */ public function update(PlanUpdateRequest $request, int $id): JsonResponse { $result = $this->planService->update($id, $request->validated()); return ApiResponse::handle('message.updated', $result); } /** * 요금제 삭제 */ public function destroy(int $id): JsonResponse { $this->planService->destroy($id); return ApiResponse::handle('message.deleted'); } /** * 요금제 활성/비활성 토글 */ public function toggle(int $id): JsonResponse { $result = $this->planService->toggle($id); return ApiResponse::handle('message.updated', $result); } }