first commit
This commit is contained in:
224
client/src/api.js
Normal file
224
client/src/api.js
Normal file
@@ -0,0 +1,224 @@
|
||||
const API_BASE = import.meta.env.VITE_API_BASE || '';
|
||||
|
||||
async function request(path, { method = 'GET', body, token } = {}) {
|
||||
const headers = {};
|
||||
const options = { method, headers };
|
||||
|
||||
if (body) {
|
||||
headers['Content-Type'] = 'application/json';
|
||||
options.body = JSON.stringify(body);
|
||||
}
|
||||
|
||||
if (token) {
|
||||
headers['x-session-token'] = token;
|
||||
}
|
||||
|
||||
const response = await fetch(`${API_BASE}${path}`, options);
|
||||
|
||||
if (!response.ok) {
|
||||
const errorBody = await response.json().catch(() => ({}));
|
||||
const message = errorBody.message || 'Beklenmeyen bir hata olustu.';
|
||||
throw new Error(message);
|
||||
}
|
||||
|
||||
if (response.status === 204) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return response.json();
|
||||
}
|
||||
|
||||
export function login(credentials) {
|
||||
return request('/api/auth/login', {
|
||||
method: 'POST',
|
||||
body: credentials
|
||||
});
|
||||
}
|
||||
|
||||
export function logout(token) {
|
||||
return request('/api/auth/logout', {
|
||||
method: 'POST',
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function fetchSession(token) {
|
||||
return request('/api/session', {
|
||||
method: 'GET',
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function listInventoryManagers(token) {
|
||||
return request('/api/inventory-managers', {
|
||||
method: 'GET',
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function createInventoryManager(token, payload) {
|
||||
return request('/api/inventory-managers', {
|
||||
method: 'POST',
|
||||
body: payload,
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function updateInventoryManager(token, id, payload) {
|
||||
return request(`/api/inventory-managers/${id}`, {
|
||||
method: 'PUT',
|
||||
body: payload,
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function deleteInventoryManager(token, id) {
|
||||
return request(`/api/inventory-managers/${id}`, {
|
||||
method: 'DELETE',
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function listVehicles(token) {
|
||||
return request('/api/vehicles', {
|
||||
method: 'GET',
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function createVehicle(token, payload) {
|
||||
return request('/api/vehicles', {
|
||||
method: 'POST',
|
||||
body: payload,
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function updateVehicle(token, id, payload) {
|
||||
return request(`/api/vehicles/${id}`, {
|
||||
method: 'PUT',
|
||||
body: payload,
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function deleteVehicle(token, id) {
|
||||
return request(`/api/vehicles/${id}`, {
|
||||
method: 'DELETE',
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function listUnits(token) {
|
||||
return request('/api/units', {
|
||||
method: 'GET',
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function createUnit(token, payload) {
|
||||
return request('/api/units', {
|
||||
method: 'POST',
|
||||
body: payload,
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function updateUnit(token, id, payload) {
|
||||
return request(`/api/units/${id}`, {
|
||||
method: 'PUT',
|
||||
body: payload,
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function deleteUnit(token, id) {
|
||||
return request(`/api/units/${id}`, {
|
||||
method: 'DELETE',
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function listFuelPersonnel(token) {
|
||||
return request('/api/fuel-personnel', {
|
||||
method: 'GET',
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function createFuelPersonnel(token, payload) {
|
||||
return request('/api/fuel-personnel', {
|
||||
method: 'POST',
|
||||
body: payload,
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function updateFuelPersonnel(token, id, payload) {
|
||||
return request(`/api/fuel-personnel/${id}`, {
|
||||
method: 'PUT',
|
||||
body: payload,
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function deleteFuelPersonnel(token, id) {
|
||||
return request(`/api/fuel-personnel/${id}`, {
|
||||
method: 'DELETE',
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function fetchFuelResources(token) {
|
||||
return request('/api/fuel/resources', {
|
||||
method: 'GET',
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function listFuelSlips(token) {
|
||||
return request('/api/fuel-slips', {
|
||||
method: 'GET',
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function createFuelSlip(token, payload) {
|
||||
return request('/api/fuel-slips', {
|
||||
method: 'POST',
|
||||
body: payload,
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export async function downloadFuelSlipPdf(token, id) {
|
||||
const response = await fetch(`${API_BASE}/api/fuel-slips/${id}/pdf`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'x-session-token': token
|
||||
}
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
const errorBody = await response.json().catch(() => ({}));
|
||||
const message = errorBody.message || 'PDF indirilemedi.';
|
||||
throw new Error(message);
|
||||
}
|
||||
|
||||
return response.blob();
|
||||
}
|
||||
|
||||
export function fetchAssignedFuelSlips(token) {
|
||||
return request('/api/fuel-slips/assigned', {
|
||||
method: 'GET',
|
||||
token
|
||||
});
|
||||
}
|
||||
|
||||
export function updateFuelSlipStatus(token, id, payload) {
|
||||
return request(`/api/fuel-slips/${id}/status`, {
|
||||
method: 'PATCH',
|
||||
body: payload,
|
||||
token
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user