SyedFouzan's picture
{
ffb4c35 verified
Raw History Blame Contribute Delete
2.72 kB
import axios from 'axios';
const API_BASE_URL = process.env.REACT_APP_API_BASE_URL || 'http://localhost:8080/api';
const api = axios.create({
baseURL: API_BASE_URL,
headers: {
'Content-Type': 'application/json',
},
});
api.interceptors.request.use((config) => {
const token = localStorage.getItem('token');
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
});
api.interceptors.response.use(
(response) => response,
(error) => {
if (error.response?.status === 401) {
localStorage.removeItem('token');
window.location.href = '/login';
}
return Promise.reject(error);
}
);
export const authAPI = {
login: (credentials) => api.post('/auth/login', credentials),
register: (userData) => api.post('/auth/register', userData),
logout: () => api.post('/auth/logout'),
verifyToken: () => api.get('/auth/verify'),
resetPassword: (email) => api.post('/auth/reset-password', { email }),
};
export const tasksAPI = {
getAll: (params) => api.get('/tasks', { params }),
getById: (id) => api.get(`/tasks/${id}`),
create: (taskData) => api.post('/tasks', taskData),
update: (id, taskData) => api.put(`/tasks/${id}`, taskData),
delete: (id) => api.delete(`/tasks/${id}`),
addComment: (id, comment) => api.post(`/tasks/${id}/comments`, { comment }),
updateStatus: (id, status) => api.patch(`/tasks/${id}/status`, { status }),
};
export const usersAPI = {
getAll: () => api.get('/users'),
getById: (id) => api.get(`/users/${id}`),
create: (userData) => api.post('/users', userData),
update: (id, userData) => api.put(`/users/${id}`, userData),
delete: (id) => api.delete(`/users/${id}`),
updateProfile: (userData) => api.put('/users/profile', userData),
};
export const documentsAPI = {
getAll: () => api.get('/documents'),
getById: (id) => api.get(`/documents/${id}`),
upload: (formData) => api.post('/documents/upload', formData, {
headers: {
'Content-Type': 'multipart/form-data',
},
}),
delete: (id) => api.delete(`/documents/${id}`),
};
export const analyticsAPI = {
getOverview: () => api.get('/analytics/overview'),
getPerformance: (params) => api.get('/analytics/performance', { params }),
getTaskStats: () => api.get('/analytics/tasks'),
getUserStats: () => api.get('/analytics/users'),
};
export const reportsAPI = {
generateTaskReport: (params) => api.get('/reports/tasks', {
params,
responseType: 'blob'
}),
generateUserReport: (params) => api.get('/reports/users', {
params,
responseType: 'blob'
}),
generatePerformanceReport: (params) => api.get('/reports/performance', {
params,
responseType: 'blob'
}),
};
export default api;