copied the code from the working repo
This commit is contained in:
161
mtucijobsweb2/api/api.ts
Normal file
161
mtucijobsweb2/api/api.ts
Normal file
@@ -0,0 +1,161 @@
|
||||
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<ExtendedJobData[]> => {
|
||||
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<ExtendedJobData> => {
|
||||
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<ResumeData[]> => {
|
||||
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<void> => {
|
||||
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<string[]> => {
|
||||
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<void> => {
|
||||
try {
|
||||
const response: AxiosResponse<Blob> = 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<ResumeDataWithoutSkills[]> => {
|
||||
try {
|
||||
const response = await $Api.get(`/jobs/students-search/?${queryString}`);
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.error('Error fetching students:', error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user