Files
Tg-job/mtucijobsweb2/api/api.ts

162 lines
4.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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;
}
};