/
ingvion
/
PlanerService
Обзор
Документация
Войти
/
ingvion
/
PlanerService
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Frontend/src/services/AdminService.js
85 строк
4 KB
lenadekart
Добавлена система оценивания результата прохождения курса
23 ноя 2025, 08:47
23 ноя 2025, 08:47
06dbdcc
Код
Авторство
О чём код?
class AdminService { constructor(baseUrl = '/api/v1') { this.baseUrl = baseUrl; this.token = localStorage.getItem('admin_token'); } setToken(token) { this.token = token; localStorage.setItem('admin_token', token); } getToken() { return this.token || localStorage.getItem('admin_token'); } logout() { this.token = null; localStorage.removeItem('admin_token'); } async request(endpoint, options = {}) { const headers = { 'Content-Type': 'application/json' }; if (this.token) { headers['Authorization'] = `Bearer ${this.token}`; } const response = await fetch(`${this.baseUrl}${endpoint}`, { headers, ...options }); if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`); return response.json(); } async login(email, password) { const data = await this.request('/auth/login/admin', { method: 'POST', body: JSON.stringify({ email, password }) }); if (data.access_token) { this.setToken(data.access_token); } return data; } // Admin routes (prefix /admin) async getDirections() { return this.request('/admin/directions'); } async addDirection(title) { return this.request('/admin/directions/add', { method: 'POST', body: JSON.stringify({ title: String(title) }) }); } async updateDirection(id, title) { return this.request(`/admin/directions/${id}`, { method: 'PUT', body: JSON.stringify({ title: String(title) }) }); } async deleteDirection(id) { return this.request(`/admin/directions/${id}`, { method: 'DELETE' }); } async getCourses(directionId) { return this.request(`/admin/directions/${directionId}/courses`); } async addCourse(directionId, data) { return this.request(`/admin/directions/${directionId}/courses/add`, { method: 'POST', body: JSON.stringify({ ...data, title: String(data.title) }) }); } async updateCourse(id, data) { return this.request(`/admin/courses/${id}`, { method: 'PUT', body: JSON.stringify({ ...data, title: String(data.title) }) }); } async deleteCourse(id) { return this.request(`/admin/courses/${id}`, { method: 'DELETE' }); } async getSpecializations(directionId) { return this.request(`/admin/directions/${directionId}/specializations`); } async addSpecialization(directionId, data) { return this.request(`/admin/directions/${directionId}/specializations/add`, { method: 'POST', body: JSON.stringify({ ...data, title: String(data.title) }) }); } async updateSpecialization(id, data) { return this.request(`/admin/specializations/${id}`, { method: 'PUT', body: JSON.stringify({ ...data, title: String(data.title) }) }); } async deleteSpecialization(id) { return this.request(`/admin/specializations/${id}`, { method: 'DELETE' }); } // Curators async getCurators() { return this.request('/admin/curators'); } async addCurator(data) { return this.request('/admin/curators/add', { method: 'POST', body: JSON.stringify(data) }); } async deleteCurator(id) { return this.request(`/admin/curators/${id}`, { method: 'DELETE' }); } // Students async getStudents(directionId) { return this.request(`/admin/directions/${directionId}/students`); } async addStudent(data) { return this.request('/admin/students/add', { method: 'POST', body: JSON.stringify(data) }); } async deleteStudent(id) { return this.request(`/admin/students/${id}`, { method: 'DELETE' }); } // Student Courses and Grades async getStudentCourses(studentId) { return this.request(`/admin/students/${studentId}/courses`); } async setCourseGrade(studentId, courseId, grade) { return this.request(`/admin/students/${studentId}/courses/${courseId}/grade?grade=${grade}`, { method: 'PUT' }); } // Skills async getSkills() { return this.request('/admin/skills/list'); } async addSkill(data) { return this.request('/admin/skills/add', { method: 'POST', body: JSON.stringify(data) }); } async updateSkill(id, data) { return this.request(`/admin/skills/${id}`, { method: 'PUT', body: JSON.stringify(data) }); } async deleteSkill(id) { return this.request(`/admin/skills/${id}`, { method: 'DELETE' }); } } export default new AdminService();