import API_BASE_URL from "../config.js"; import { getItemsByCafeId } from "./cartHelpers.js"; export async function getItemTypesWithItems(shopId) { try { const response = await fetch( `${API_BASE_URL}/item/get-cafe-items/` + shopId, { method: "GET", headers: { "Content-Type": "application/json", Authorization: `Bearer ${getAuthToken()}`, }, } ); const data = await response.json(); console.log(data); return { response, cafe: data.cafe, data: data.data }; // Return an object with response and data } catch (error) { console.error("Failed to fetch item types with items:", error); throw error; } } export async function getItemType(shopId) { try { const response = await fetch(`${API_BASE_URL}/item/getItemType/` + shopId); const data = await response.json(); return { response, data: data.data }; // Return an object with response and data } catch (error) { console.error("Failed to fetch item types with items:", error); throw error; } } export async function getCartDetails(shopId) { try { const response = await fetch( `${API_BASE_URL}/item/get-cart-details/` + shopId, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(getItemsByCafeId(shopId)), } ); if (!response.ok) { throw new Error("Failed to fetch cart details"); } const cartDetails = await response.json(); console.log(cartDetails); return cartDetails; } catch (error) { console.error("Error:", error); } } export function getImageUrl(notimageurl) { return API_BASE_URL + "/" + notimageurl; } function getAuthToken() { return localStorage.getItem("auth"); } export async function createItem( shopId, name, price, selectedImage, itemTypeId, description ) { try { console.log(selectedImage); const formData = new FormData(); formData.append("name", name); formData.append("price", price); formData.append("image", selectedImage); formData.append("description", description); formData.append("itemTypeId", itemTypeId); const response = await fetch(`${API_BASE_URL}/item/create/${shopId}`, { method: "POST", headers: { Authorization: `Bearer ${getAuthToken()}`, }, body: formData, }); if (!response.ok) { const errorMessage = await response.text(); throw new Error(`Error: ${errorMessage}`); } const data = await response.json(); return data; } catch (error) { console.error("Failed to create item type:", error); throw error; } } export async function updateItem( itemId, name, price, selectedImage, description, promoPrice ) { try { console.log( itemId, name, price, selectedImage, description); const formData = new FormData(); if(name != null )formData.append("name", name); if(price != null )formData.append("price", price); if(selectedImage != null )formData.append("image", selectedImage); if(description != null )formData.append("description", description); if(promoPrice != null )formData.append("promoPrice", promoPrice); const response = await fetch(`${API_BASE_URL}/item/set-item/${itemId}`, { method: "PUT", headers: { Authorization: `Bearer ${getAuthToken()}`, }, body: formData, }); if (!response.ok) { const errorMessage = await response.text(); throw new Error(`Error: ${errorMessage}`); } const data = await response.json(); return data; } catch (error) { console.error("Failed to create item type:", error); throw error; } } export async function updateItemAvalilability(itemId, isAvailable) { try { const response = await fetch( `${API_BASE_URL}/item/set-availability/` + itemId, { method: "PUT", headers: { "Content-Type": "application/json", Authorization: `Bearer ${getAuthToken()}`, }, body: JSON.stringify({ isAvailable: isAvailable }), } ); if (!response.ok) { // throw new Error(`Error: ${response.statusText}`); } const data = await response.json(); console.log(data); return data; } catch (error) { console.error("Failed to update item type:", error); throw error; } } export async function createItemType(shopId, name, selectedImage, previewUrl) { try { const formData = new FormData(); formData.append("name", name); // Check if selectedImage is provided if (selectedImage) { formData.append("image", selectedImage); } else if (previewUrl) { // Remove the API_BASE_URL and any leading slashes from previewUrl const processedPreviewUrl = previewUrl.replace(API_BASE_URL, "").replace(/^\/+/, ""); formData.append("sampleImage", processedPreviewUrl); } const response = await fetch(`${API_BASE_URL}/item/createType/${shopId}`, { method: "POST", headers: { Authorization: `Bearer ${getAuthToken()}`, }, body: formData, }); if (!response.ok) { const errorMessage = await response.text(); throw new Error(`Error: ${errorMessage}`); } const data = await response.json(); return data; } catch (error) { console.error("Failed to create item type:", error); throw error; } } export async function updateItemType( shopId, itemTypeId, newName, previewUrl, selectedImage, isVisible ) { try { const formData = new FormData(); formData.append("name", newName); console.log(selectedImage); console.log(previewUrl); // Check if selectedImage contains API_BASE_URL if (selectedImage == null) { // Remove the API_BASE_URL and any leading slashes previewUrl = previewUrl.replace(API_BASE_URL, "").replace(/^\/+/, ""); formData.append("sampleImage", previewUrl); } else formData.append("image", selectedImage); console.log(selectedImage); formData.append("isVisible", isVisible); const response = await fetch( `${API_BASE_URL}/item/updateType/${shopId}/${itemTypeId}`, { method: "PUT", headers: { Authorization: `Bearer ${getAuthToken()}`, }, body: formData, } ); if (!response.ok) { throw new Error(`Error: ${response.statusText}`); } const data = await response.json(); return data; } catch (error) { console.error("Failed to update item type:", error); throw error; } } export const moveItemType = async (itemTypeId, targetItemTypeId, fromOrder, toOrder) => { try { const response = await fetch(`${API_BASE_URL}/item/moveType/${itemTypeId}/${targetItemTypeId}/${fromOrder}/${toOrder}`, { method: 'PUT', headers: { Authorization: `Bearer ${getAuthToken()}`, }, }); if (!response.ok) { throw new Error('Failed to move item type'); } return await response.json(); } catch (error) { console.error(error); throw error; } }; export async function deleteItemType(shopId, itemTypeId) { try { const response = await fetch( `${API_BASE_URL}/item/deleteType/` + shopId + "/" + itemTypeId, { method: "DELETE", headers: { Authorization: `Bearer ${getAuthToken()}`, }, } ); if (!response.ok) { throw new Error(`Error: ${response.statusText}`); } return true; } catch (error) { console.error("Failed to delete item type:", error); throw error; } }