Louis Mazin 5a56f5383d init
2026-09-13 18:56:33 +02:00

73 lines
2.0 KiB
JavaScript

import api from './axios';
export const timeApi = {
// Get all time entries
getTimeEntries: async () => {
try {
const response = await api.get('/time/entries/');
return response.data;
} catch (error) {
throw new Error('Failed to fetch time entries: ' + error.message);
}
},
// Create a new time entry
createTimeEntry: async (entryData) => {
try {
const response = await api.post('/time/entries/create/', entryData);
return response.data;
} catch (error) {
throw new Error('Failed to create time entry: ' + error.message);
}
},
// Get a specific time entry
getTimeEntry: async (id) => {
try {
const response = await api.get(`/time/entries/${id}/`);
return response.data;
} catch (error) {
throw new Error('Failed to fetch time entry: ' + error.message);
}
},
// Update a time entry
updateTimeEntry: async (id, entryData) => {
try {
const response = await api.put(`/time/entries/${id}/update/`, entryData);
return response.data;
} catch (error) {
throw new Error('Failed to update time entry: ' + error.message);
}
},
// Delete a time entry
deleteTimeEntry: async (id) => {
try {
const response = await api.delete(`/time/entries/${id}/`);
return response.data;
} catch (error) {
throw new Error('Failed to delete time entry: ' + error.message);
}
},
// Get weekly summary for current user
getWeeklySummary: async () => {
try {
const response = await api.get('/time/weekly-summary/');
return response.data;
} catch (error) {
throw new Error('Failed to fetch weekly summary: ' + error.message);
}
},
// Get weekly summary for a specific user (admin only)
getUserWeeklySummary: async (userId) => {
try {
const response = await api.get(`/time/weekly-summary/${userId}/`);
return response.data;
} catch (error) {
throw new Error('Failed to fetch user weekly summary: ' + error.message);
}
},
};