repository->paginate( $request->only(['course_id']), $request->integer('per_page', 15), ); return CourseScheduleResource::collection($schedules); } #[OA\Get( path: '/api/v1/schedules/upcoming', summary: 'Yaklaşan eğitimleri listele', tags: ['Schedules'], responses: [new OA\Response(response: 200, description: 'Yaklaşan eğitimler')], )] public function upcoming(): AnonymousResourceCollection { $schedules = $this->repository->upcoming(20); return CourseScheduleResource::collection($schedules); } #[OA\Get( path: '/api/v1/schedules/{id}', summary: 'Takvim detayı', tags: ['Schedules'], parameters: [new OA\Parameter(name: 'id', in: 'path', required: true, schema: new OA\Schema(type: 'integer'))], responses: [ new OA\Response(response: 200, description: 'Takvim detayı'), new OA\Response(response: 404, description: 'Takvim bulunamadı'), ], )] public function show(int $id): JsonResponse { $schedule = $this->repository->findById($id); if (! $schedule) { return response()->json(['message' => 'Takvim bulunamadı.'], 404); } $schedule->load('course.category'); return response()->json(new CourseScheduleResource($schedule)); } }