/
pigolitsyn
/
site
Обзор
Документация
Войти
/
pigolitsyn
/
site
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/api/faculty.ts
286 строк
8 KB
pigolitsyn
init commit
18 окт 2025, 07:36
18 окт 2025, 07:36
ca6915d
Код
Авторство
О чём код?
import type { ApiResponse, FacultyInfo, Department, Direction, Employee, ResearchArea, Laboratory, Publication, Grant, AdmissionInfo } from '@/types/common'; import { apiRequest, handleApiError } from './config'; // API функции для факультета export const facultyApi = { // Получить информацию о факультете async getFacultyInfo(): Promise<ApiResponse<FacultyInfo>> { try { const data = await apiRequest<FacultyInfo>('/faculty/info'); return { data, success: true, message: 'Информация о факультете получена успешно' }; } catch (error) { return { data: null, success: false, message: `Ошибка при получении информации о факультете: ${handleApiError(error)}` }; } }, // Получить список кафедр async getDepartments(): Promise<ApiResponse<Department[]>> { try { const data = await apiRequest<Department[]>('/departments'); return { data, success: true, message: 'Список кафедр получен успешно' }; } catch (error) { return { data: [], success: false, message: `Ошибка при получении списка кафедр: ${handleApiError(error)}` }; } }, // Получить кафедру по ID async getDepartmentById(id: number): Promise<ApiResponse<Department>> { try { const data = await apiRequest<Department>(`/departments/${id}`); return { data, success: true, message: 'Информация о кафедре получена успешно' }; } catch (error) { return { data: null, success: false, message: `Ошибка при получении информации о кафедре: ${handleApiError(error)}` }; } }, // Получить направления подготовки async getDirections(): Promise<ApiResponse<Direction[]>> { try { const data = await apiRequest<Direction[]>('/directions'); return { data, success: true, message: 'Направления подготовки получены успешно' }; } catch (error) { return { data: [], success: false, message: `Ошибка при получении направлений подготовки: ${handleApiError(error)}` }; } }, // Получить направление по ID async getDirectionById(id: number): Promise<ApiResponse<Direction>> { try { const data = await apiRequest<Direction>(`/directions/${id}`); return { data, success: true, message: 'Информация о направлении получена успешно' }; } catch (error) { return { data: null, success: false, message: `Ошибка при получении информации о направлении: ${handleApiError(error)}` }; } }, // Получить информацию для абитуриентов async getAdmissionInfo(): Promise<ApiResponse<AdmissionInfo>> { try { const data = await apiRequest<AdmissionInfo>('/faculty/admission'); return { data, success: true, message: 'Информация для абитуриентов получена успешно' }; } catch (error) { return { data: null, success: false, message: `Ошибка при получении информации для абитуриентов: ${handleApiError(error)}` }; } }, // Получить статистику факультета async getFacultyStats(): Promise<ApiResponse<{ totalStudents: number; totalTeachers: number; totalDepartments: number; totalDirections: number; totalBudgetPlaces: number; }>> { try { const data = await apiRequest<{ totalStudents: number; totalTeachers: number; totalDepartments: number; totalDirections: number; totalBudgetPlaces: number; }>('/faculty/stats'); return { data, success: true, message: 'Статистика получена успешно' }; } catch (error) { return { data: { totalStudents: 0, totalTeachers: 0, totalDepartments: 0, totalDirections: 0, totalBudgetPlaces: 0 }, success: false, message: `Ошибка при получении статистики: ${handleApiError(error)}` }; } }, async getEmployees(departmentId?: number): Promise<ApiResponse<Employee[]>> { try { const endpoint = departmentId ? `/faculty/employees?departmentId=${departmentId}` : '/faculty/employees'; const data = await apiRequest<Employee[]>(endpoint); return { data, success: true, message: 'Список сотрудников получен успешно' }; } catch (error) { return { data: [], success: false, message: `Ошибка при получении списка сотрудников: ${handleApiError(error)}` }; } }, // Получить сотрудника по ID async getEmployeeById(id: number): Promise<ApiResponse<Employee>> { try { const data = await apiRequest<Employee>(`/faculty/employees/${id}`); return { data, success: true, message: 'Информация о сотруднике получена успешно' }; } catch (error) { return { data: null, success: false, message: `Ошибка при получении информации о сотруднике: ${handleApiError(error)}` }; } }, // Получить научные направления async getResearchAreas(): Promise<ApiResponse<ResearchArea[]>> { try { const data = await apiRequest<ResearchArea[]>('/faculty/research-areas'); return { data, success: true, message: 'Научные направления получены успешно' }; } catch (error) { return { data: [], success: false, message: `Ошибка при получении научных направлений: ${handleApiError(error)}` }; } }, // Получить лаборатории async getLaboratories(): Promise<ApiResponse<Laboratory[]>> { try { const data = await apiRequest<Laboratory[]>('/faculty/laboratories'); return { data, success: true, message: 'Список лабораторий получен успешно' }; } catch (error) { return { data: [], success: false, message: `Ошибка при получении списка лабораторий: ${handleApiError(error)}` }; } }, // Получить публикации async getPublications(page = 1, limit = 10): Promise<ApiResponse<{ items: Publication[]; total: number; page: number; limit: number; }>> { try { const data = await apiRequest<{ items: Publication[]; total: number; page: number; limit: number; }>(`/faculty/publications?page=${page}&limit=${limit}`); return { data, success: true, message: 'Публикации получены успешно' }; } catch (error) { return { data: { items: [], total: 0, page, limit }, success: false, message: `Ошибка при получении публикаций: ${handleApiError(error)}` }; } }, // Получить гранты async getGrants(): Promise<ApiResponse<Grant[]>> { try { const data = await apiRequest<Grant[]>('/faculty/grants'); return { data, success: true, message: 'Гранты получены успешно' }; } catch (error) { return { data: [], success: false, message: `Ошибка при получении грантов: ${handleApiError(error)}` }; } } };