Rehap.app/app/Http/Controllers/ExerciseController.php
Михаил c39d333b4d Upload
2025-03-20 11:20:30 +03:00

64 lines
2.0 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Exercise;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Storage;
class ExerciseController extends Controller
{
public function index()
{
return response()->json(Exercise::all());
}
public function store(Request $request)
{
$request->validate([
'title' => 'required|string',
'description' => 'nullable|string',
'gif' => 'required|file|mimes:gif|max:2048', // Ограничение: только GIF, макс 2MB
]);
$path = $request->file('gif')->store('public/exercises');
$exercise = Exercise::create([
'title' => $request->title,
'description' => $request->description,
'gif_path' => str_replace('public/', '', $path), // Сохраняем путь
]);
return response()->json([
'exercise' => $exercise,
'gif_url' => Storage::url($exercise->gif_path),
], 201);
}
public function completeExercise(Request $request)
{
$validated = $request->validate([
'exercise_id' => 'required|exists:exercises,id',
'user_id' => 'required|exists:users,id',
]);
$userId = $validated['user_id'];
// Находим упражнение и пациента по ID
$exercise = Exercise::find($validated['exercise_id']);
$user = User::find($validated['user_id']);
// Обновляем статус выполнения упражнения для пациента
$user->exercises()->updateExistingPivot($exercise->id, ['completed' => true]);
// Если все упражнения курса завершены, завершаем курс
foreach ($exercise->courses as $course) {
if ($course->isCompleted($userId)) {
$course->update(['completed' => true]); // Завершаем курс
}
}
return response()->json(['message' => 'Exercise completed successfully']);
}
}