subscriptionService->index($request->validated()); return ApiResponse::handle('message.fetched', $result); } /** * 현재 활성 구독 */ public function current(): JsonResponse { $result = $this->subscriptionService->current(); return ApiResponse::handle('message.fetched', $result); } /** * 구독 등록 */ public function store(SubscriptionStoreRequest $request): JsonResponse { $result = $this->subscriptionService->store($request->validated()); return ApiResponse::handle('message.created', $result, 201); } /** * 구독 상세 */ public function show(int $id): JsonResponse { $result = $this->subscriptionService->show($id); return ApiResponse::handle('message.fetched', $result); } /** * 구독 취소 */ public function cancel(SubscriptionCancelRequest $request, int $id): JsonResponse { $result = $this->subscriptionService->cancel($id, $request->validated()['reason'] ?? null); return ApiResponse::handle('message.subscription.cancelled', $result); } /** * 구독 갱신 */ public function renew(SubscriptionStoreRequest $request, int $id): JsonResponse { $result = $this->subscriptionService->renew($id, $request->validated()); return ApiResponse::handle('message.subscription.renewed', $result); } /** * 구독 일시정지 */ public function suspend(int $id): JsonResponse { $result = $this->subscriptionService->suspend($id); return ApiResponse::handle('message.subscription.suspended', $result); } /** * 구독 재개 */ public function resume(int $id): JsonResponse { $result = $this->subscriptionService->resume($id); return ApiResponse::handle('message.subscription.resumed', $result); } /** * 사용량 조회 */ public function usage(): JsonResponse { $result = $this->subscriptionService->usage(); return ApiResponse::handle('message.fetched', $result); } /** * 내보내기 요청 */ public function export(ExportStoreRequest $request): JsonResponse { $result = $this->subscriptionService->createExport($request->validated()); return ApiResponse::handle('message.export.requested', $result, 201); } /** * 내보내기 상태 조회 */ public function exportStatus(int $id): JsonResponse { $result = $this->subscriptionService->getExport($id); return ApiResponse::handle('message.fetched', $result); } }