json(Course::with('exercises')->get()); } /** * Создать новый курс и привязать к нему упражнения. */ public function store(Request $request) { $validated = $request->validate([ 'title' => 'required|string|max:255', 'description' => 'nullable|string', 'exercise_ids' => 'nullable|array', 'exercise_ids.*' => 'exists:exercises,id', ]); // Создание курса $course = Course::create([ 'title' => $validated['title'], 'description' => $validated['description'] ?? null, ]); // Привязка упражнений if (!empty($validated['exercise_ids'])) { $course->exercises()->attach($validated['exercise_ids']); } return response()->json($course->load('exercises'), 201); } public function assignCourseToPatient(Request $request) { // Валидируем данные запроса $validated = $request->validate([ 'patient_id' => 'required|exists:users,id', // ID пациента 'course_id' => 'required|exists:courses,id', // ID курса ]); $patient = User::findOrFail($validated['patient_id']); $course = Course::findOrFail($validated['course_id']); // Проверяем, является ли текущий пользователь доктором $doctor = auth()->user(); if (!$doctor->hasRole('doctor')) { return response()->json(['error' => 'You are not authorized to assign courses'], 403); } // Назначаем курс пациенту $patient->courses()->attach($course); // Добавляем упражнения из курса пациенту foreach ($course->exercises as $exercise) { // Для каждого упражнения пациента добавляем его в таблицу связи с выполнением $patient->exercises()->attach($exercise, ['completed' => false]); } return response()->json(['message' => 'Course and exercises assigned successfully']); } /** * Добавить упражнение в существующий курс. */ public function addExercise(Request $request, Course $course) { $request->validate([ 'exercise_id' => 'required|exists:exercises,id', ]); $course->exercises()->attach($request->exercise_id); return response()->json(['message' => 'Exercise added to course']); } public function viewCourses(Request $request) { // Получаем текущего авторизованного пользователя (пациента) $patient = auth()->user(); // Проверяем, что у пользователя есть роль "patient" if ($patient->hasRole('patient')) { // Получаем все курсы, назначенные этому пациенту $courses = $patient->courses; return response()->json($courses); } return response()->json(['message' => 'Unauthorized'], 403); // Возвращаем ошибку, если не пациент } }