106 lines
3.0 KiB
TypeScript
106 lines
3.0 KiB
TypeScript
"use client"
|
||
|
||
import type React from "react"
|
||
import { useState, useEffect } from "react"
|
||
import { useHistory, useParams } from "react-router-dom"
|
||
|
||
import HeaderNav from "../components/HeaderNav"
|
||
import BottomNavigation from "../components/BottomNavigation"
|
||
import video from "../assets/img/video.mov"
|
||
|
||
import { connect } from '../confconnect';
|
||
import { getRouteExercise } from "../shared/consts/router"
|
||
import type { Exercise } from "./Exercise"
|
||
|
||
|
||
interface RouteParams {
|
||
id: string;
|
||
}
|
||
|
||
const CourseExercises: React.FC =() => {
|
||
const history = useHistory()
|
||
const { id } = useParams<RouteParams>(); // получаем ID курса из URL
|
||
const [currentSlide, setCurrentSlide] = useState(0);
|
||
const token = localStorage.getItem('authToken');
|
||
|
||
|
||
useEffect(() => {
|
||
console.log(token)
|
||
if (!token) {
|
||
setError('Токен не найден');
|
||
return;
|
||
}
|
||
|
||
connect.get(`/pacient/${id}`, {
|
||
headers: {
|
||
Authorization: `Bearer ${token}`,
|
||
},
|
||
})
|
||
.then(response => {
|
||
console.log('Response status:', response.status);
|
||
|
||
// Предполагаемая структура:
|
||
// response.data.courses — массив пользователей
|
||
const exercises = response.data.exercises || [];
|
||
|
||
// Собираем все курсы из всех пользователей
|
||
const allCourse: Exercises[] = [];
|
||
|
||
users.forEach(user => {
|
||
if (user.Courses && Array.isArray(user.Courses)) {
|
||
user.Courses.forEach(course => {
|
||
// Можно добавить проверку или преобразование
|
||
allCourses.push({
|
||
ID: course.id, // или course.ID, зависит от структуры
|
||
title: course.title,
|
||
desc: course.desc,
|
||
url_file_img: course.url_file_img,
|
||
});
|
||
});
|
||
}
|
||
});
|
||
|
||
setCourses(allCourses);
|
||
})
|
||
.catch(error => {
|
||
if (error.response) {
|
||
console.error('Ошибка ответа сервера:', error.response.status, error.response.data);
|
||
setError(`Ошибка сервера: ${error.response.status}`);
|
||
} else if (error.request) {
|
||
console.error('Нет ответа от сервера:', error.request);
|
||
setError('Нет ответа от сервера');
|
||
} else {
|
||
console.error('Ошибка при настройке запроса:', error.message);
|
||
setError(`Ошибка: ${error.message}`);
|
||
}
|
||
});
|
||
}, [token]);
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
return (
|
||
|
||
|
||
<div className="bg-gray-50 w-full h-full overflow-auto">
|
||
<div className="my-36 min-h-screen max-w-4xl mx-auto">
|
||
<HeaderNav item={'Курс:'} text={'все упражнения курса'} />
|
||
<div>
|
||
<h1>Курс ID: {id}</h1>
|
||
|
||
<p></p>
|
||
|
||
{/* тут можете использовать id для загрузки данных или другого */}
|
||
</div>
|
||
|
||
<BottomNavigation />
|
||
</div>
|
||
</div>
|
||
);
|
||
};
|
||
|
||
|
||
export default CourseExercises; |