Files
lootakalenteri-frontend/app/api.ts

62 lines
1.8 KiB
TypeScript

export const fetchCustomerData = async (id: string) => {
try {
const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/loota/${id}`, {
method: 'GET',
});
if (response.status === 404) {
return {
identifier: 'Ei löydy',
location: 'Tuntematon',
boxes: [],
}
}
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
return data;
} catch (error) {
throw error;
}
}
export const markBoxPickedUp = async (id: string) => {
try {
const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/loota/`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ id: id, pickup_date: new Date().toISOString().split('.')[0] }),
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const updatedBox = await response.json();
return updatedBox;
} catch (error) {
throw error;
}
}
export const markBoxDelivered = async (id: string) => {
try {
const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/loota/`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ id: id, pickup_date: null }),
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const updatedBox = await response.json();
return updatedBox;
} catch (error) {
throw error;
}
}