validated(), fn ($value) => $value !== null); $logs = $this->activityLogService->getList($filters); $collection = new ActivityLogCollection($logs); return $this->success('activity_log.fetch_success', $collection->toArray($request)); } catch (Exception $e) { return $this->error('activity_log.fetch_failed', 500, $e->getMessage()); } } /** * 활동 로그를 삭제합니다. * * @param ActivityLogDeleteRequest $request 검증된 삭제 요청 * @param ActivityLog $activityLog 삭제할 활동 로그 모델 * @return JsonResponse 삭제 결과 */ public function destroy(ActivityLogDeleteRequest $request, ActivityLog $activityLog): JsonResponse { try { $this->activityLogService->delete($activityLog->id); return $this->success('activity_log.delete_success'); } catch (Exception $e) { Log::error('활동 로그 삭제 실패', ['id' => $activityLog->id, 'error' => $e->getMessage()]); return $this->error('activity_log.delete_failed', 500); } } /** * 활동 로그를 일괄 삭제합니다. * * @param ActivityLogBulkDeleteRequest $request 검증된 일괄 삭제 요청 * @return JsonResponse 삭제 결과 */ public function bulkDestroy(ActivityLogBulkDeleteRequest $request): JsonResponse { try { $count = $this->activityLogService->deleteMany($request->validated('ids')); return $this->success('activity_log.bulk_delete_success', ['deleted_count' => $count]); } catch (Exception $e) { Log::error('활동 로그 일괄 삭제 실패', ['error' => $e->getMessage()]); return $this->error('activity_log.delete_failed', 500); } } }