import { ExtendedJobData, JobData, LoginData, ResumeData, ResumeDataWithoutSkills, SearchFilters } from "@/types/types"; import { $Api, $mtuciApi } from "./axiosInstance"; import qs from 'qs'; import { AxiosResponse } from "axios"; import { message } from "antd"; export const sendJobs = async (postData: JobData) => { try { const response = await $Api.post(`/jobs/`, postData, { headers: { 'Content-Type': 'application/json', }, }); return response; } catch (error) { console.error('Error post jobs:', error); throw error; } }; export const login = async (values: LoginData) => { try { const response = await $Api.post('/login', qs.stringify(values), { headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, }); // Сохраняем токен в localStorage const { access_token, token_type } = response.data; localStorage.setItem('token', `${token_type} ${access_token}`); return response.data; // Верните данные ответа } catch (error) { console.error('Error logging in:', error); throw error; } }; export const fetchJobs = async (): Promise => { try { const response = await $Api.get('/jobs/'); return response.data; } catch (error) { console.error('Error fetching jobs:', error); throw error; } }; export const fetchJobById = async (id: number): Promise => { try { const response = await $Api.get(`/jobs/${id}`); return response.data; } catch (error) { console.error('Error fetching jobs:', error); throw error; } }; export const updateJob = async (id: number, job: JobData) => { try { const response = await $Api.put(`/jobs/${id}`, job); return response.data; } catch (error) { console.error('Error put jobs:', error); throw error; } }; export const fetchJobsMatches = async (id: number): Promise => { try { const response = await $Api.get(`/jobs/matches/${id}`); return response.data; } catch (error) { console.error('Error fetching jobs:', error); throw error; } }; export const deleteJob = async (id: number): Promise => { try { await $Api.delete(`/jobs/${id}`); } catch (error) { console.error('Error deleting job:', error); throw error; } }; export const fetchHardSkills = async ( ): Promise<{ Hard_skillID: number; Title: string }[]> => { try { const response = await $mtuciApi.get(`/services/hardskills/`); return response.data; } catch (error) { console.error('Error fetching hard skills:', error); throw error; } }; export const fetchJobsHardSkills = async (id: number): Promise => { try { const response: AxiosResponse<{ Hard_skillID: number; Title: string }[]> = await $Api.get(`/jobs/hardskills/${id}`); // Извлекаем массив названий хардскиллов из ответа const skills = response.data.map(skill => skill.Title); return skills; } catch (error) { console.error('Error fetching hardskills:', error); throw error; } }; export const downloadResume = async (filename: string): Promise => { try { const response: AxiosResponse = await $mtuciApi.get( `/services/resume/${filename}`, { responseType: 'blob', // Указываем тип ответа blob для скачивания файлов } ); // Проверяем, что ответ содержит данные if (!response.data) { message.error('У пользователя нет резюме.'); return; } // Создаем ссылку для скачивания файла const url = window.URL.createObjectURL(new Blob([response.data])); const link = document.createElement('a'); link.href = url; link.setAttribute('download', filename); // Устанавливаем имя файла для сохранения document.body.appendChild(link); link.click(); link.remove(); } catch (error) { console.error('Error downloading resume:', error); message.error('Не удалось скачать резюме.'); } }; export const searchStudents = async ( queryString: string ): Promise => { try { const response = await $Api.get(`/jobs/students-search/?${queryString}`); return response.data; } catch (error) { console.error('Error fetching students:', error); throw error; } };