with(['course:id,name', 'venue:id,name']) ->where('created_by', $request->user()->id) ->when( $request->filled('course_id'), fn (Builder $query) => $query->where('course_id', $request->integer('course_id')) ) ->orderByDesc('from') ->get(); return CourseEventResource::collection($courseEvents); } /** * Kurs-Event anlegen * * Erlaubt einem authentifizierten Referenten, ein datiertes Kurs-Event programmatisch anzulegen. */ #[ResponseAttribute(status: 403, description: 'Nur Referenten (is_lecturer) dürfen Kurs-Events anlegen.')] public function store(StoreCourseEventRequest $request): JsonResponse { $courseEvent = CourseEvent::create($request->validated()); return CourseEventResource::make($courseEvent->fresh()) ->response() ->setStatusCode(Response::HTTP_CREATED); } /** * Kurs-Event aktualisieren * * Aktualisiert ein Kurs-Event; nur für den Ersteller oder einen Super-Admin. */ #[ResponseAttribute(status: 403, description: 'Nur der Ersteller des Kurs-Events oder ein Super-Admin darf es ändern.')] public function update(UpdateCourseEventRequest $request, CourseEvent $courseEvent): CourseEventResource { $courseEvent->update($request->validated()); return CourseEventResource::make($courseEvent->fresh()); } }