copied the code from the working repo

This commit is contained in:
2024-11-30 16:00:48 +03:00
parent f22b92869b
commit 15ac0cb9b8
148 changed files with 23342 additions and 0 deletions

161
mtucijobsweb2/api/api.ts Normal file
View 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;
}
};