diff --git a/src/components/Item.js b/src/components/Item.js index 5c19fe2..2f03fa7 100644 --- a/src/components/Item.js +++ b/src/components/Item.js @@ -7,6 +7,7 @@ const Item = ({ name: initialName, description: initialDescription, price: initialPrice, + promoPrice, qty: initialQty, imageUrl, imageFile, @@ -30,16 +31,13 @@ const Item = ({ useEffect(() => { console.log(imageUrl); console.log(selectedImage); - if (selectedImage) { - const reader = new FileReader(); - reader.onloadend = () => { - setPreviewUrl(reader.result); - }; - reader.readAsDataURL(selectedImage); + console.log(imageFile) + if (imageFile) { + setPreviewUrl(imageFile); } else { setPreviewUrl(imageUrl); } - }, [selectedImage, imageUrl]); + }, [imageFile, imageUrl]); const handlePlusClick = () => { if (!blank) onPlusClick(id); @@ -89,67 +87,49 @@ const Item = ({ const handleNameChange = (event) => { setItemName(event.target.value); }; - + return (
-
- {!forInvoice && ( -
- { - currentTarget.onerror = null; // prevents looping - currentTarget.src = - "https://png.pngtree.com/png-vector/20221125/ourmid/pngtree-no-image-available-icon-flatvector-illustration-pic-design-profile-vector-png-image_40966566.jpg"; - }} - alt={itemName} - style={{ - filter: !isAvailable ? "grayscale(100%)" : "none", - }} - className={styles.itemImage} - /> - - {(isBeingEdit || blank) && ( -
- - {previewUrl ? "Ganti gambar" : "Tambah gambar"} - -
- )} - -
- )} -
- {forInvoice && - +
+ {!forInvoice && ( +
+ { + currentTarget.onerror = null; // prevents looping + currentTarget.src = + "https://png.pngtree.com/png-vector/20221125/ourmid/pngtree-no-image-available-icon-flatvector-illustration-pic-design-profile-vector-png-image_40966566.jpg"; + }} + alt={itemName} + style={{ + filter: !isAvailable ? "grayscale(100%)" : "none", + }} + className={styles.itemImage} + /> +
+ )} +
+ {forInvoice && + - - -} - + + } + {/* + /> */} +

{itemName}

+ {forInvoice && ( + <> +

x

+

{itemQty}

+ + )} + {!forInvoice && ( + // - {forInvoice && ( - <> -

x

-

{itemQty}

- - )} - {!forInvoice && ( - - )} +
+ {promoPrice && promoPrice != 0 && promoPrice != '' && +
+ Promo +
+} +
+ {promoPrice} + {initialPrice} +
+
+ )} - {!forInvoice && - (!isBeingEdit && itemQty != 0 ? ( -
- - - - {!blank && !isBeingEdit ? ( -

{itemQty}

- ) : ( - - )} - - - -
- ) : !blank && !isBeingEdit ? ( -
- -
- ) : ( -
- -
- ))} + {!forInvoice && + (!isBeingEdit && itemQty != 0 ? ( +
+ + + + {!blank && !isBeingEdit ? ( +

{itemQty}

+ ) : ( + + )} + + + +
+ ) : !blank && !isBeingEdit ? ( +
+ +
+ ) : ( +
+ +
+ ))} - {forInvoice && ( -

Rp {itemQty * itemPrice}

- )} -
- {forCart && ( -
- ⓧ + {forInvoice && ( +

Rp {itemQty * itemPrice}

+ )}
- )} - {/* {blank && ( + {forCart && ( +
+ ⓧ +
+ )} + {/* {blank && ( )} */} -
- {itemDescription && itemDescription != 'undefined' && itemDescription?.length && -
-

{itemDescription}

-
-} +
+ {itemDescription && itemDescription != 'undefined' && itemDescription?.length && +
+

{itemDescription}

+
+ }
); }; diff --git a/src/components/ItemConfig.js b/src/components/ItemConfig.js index a246a30..98fc935 100644 --- a/src/components/ItemConfig.js +++ b/src/components/ItemConfig.js @@ -27,17 +27,19 @@ const ItemConfig = ({ // Prevent scrolling when modal is open document.body.style.overflow = "hidden"; - - if (selectedImage) { + if(selectedImage){ const reader = new FileReader(); reader.onloadend = () => { setPreviewUrl(reader.result); }; reader.readAsDataURL(selectedImage); + } + else if (imageFile) { + setPreviewUrl(imageFile); } else { setPreviewUrl(imageUrl); } - }, [selectedImage, imageUrl]); + }, [selectedImage, imageFile, imageUrl]); const handleOverlayClick = (event) => { // Prevent scrolling when modal is open @@ -78,11 +80,11 @@ const ItemConfig = ({ }, [textareaRef.current]); const handleCreate = () => { - handleCreateItem(itemName, itemPrice, selectedImage, itemDescription); + handleCreateItem(itemName, itemPrice, selectedImage, itemDescription, itemPromoPrice); }; const handleUpdate = () => { console.log(itemDescription) - handleUpdateItem(itemName, itemPrice, selectedImage, itemDescription); + handleUpdateItem(itemName, itemPrice, selectedImage, itemDescription, itemPromoPrice); }; return ( diff --git a/src/components/ItemLister.js b/src/components/ItemLister.js index a6077eb..66fca59 100644 --- a/src/components/ItemLister.js +++ b/src/components/ItemLister.js @@ -210,44 +210,45 @@ const ItemLister = ({ name, price, selectedImage, - previewUrl + description, + promoPrice ) => { setItemsToCreate((prevItems) => prevItems.map((item) => item.itemId === itemId - ? { ...item, name, price, selectedImage, image: previewUrl } + ? { ...item, name, price, selectedImage, description, promoPrice } //image: previewUrl : item ) ); setisEditItem(0); }; - const onUpdateItem = (itemId, name, price, image, description) => { + const onUpdateItem = (itemId, name, price, image, description, promoPrice) => { if (isEdit) - setItemsToUpdate((prev) => [...prev, { itemId, name, price, image, description }]); + setItemsToUpdate((prev) => [...prev, { itemId, name, price,promoPrice, image, description }]); else { console.log(itemId, name, price, image, description) - handleUpdateItem(itemId, name, price, image, description); - + handleUpdateItem(itemId, name, price, image, description, promoPrice); + } const itemIndex = items.findIndex((item) => item.itemId === itemId); if (itemIndex === -1) return; // Item not found // Create a copy of the current items array const updatedItems = [...items]; const item = updatedItems[itemIndex]; - console.log(updatedItems) + console.log(items) // Toggle the availability locally if(image){ const reader = new FileReader(); reader.onloadend = () => { - updatedItems[itemIndex].image = reader.result; + updatedItems[itemIndex].selectedImage = reader.result; console.log(reader.result) }; reader.readAsDataURL(image); } - const newAvailability = !item.availability; updatedItems[itemIndex] = { + itemId: item.itemId, name, price, availability: item.availability @@ -258,7 +259,7 @@ const ItemLister = ({ setItems(updatedItems); setRandomKey(randomKey + 1); - } + console.log(itemsToUpdate); }; @@ -375,7 +376,8 @@ const ItemLister = ({ name, price, image, - description + description, + promoPrice } of itemsToUpdate) { if (newAvailability != undefined) { await executeUpdateAvailability( @@ -409,7 +411,7 @@ const ItemLister = ({ else { // Call the handleUpdateItem function - const updatedItem = await handleUpdateItem(itemId, name, price, image, description); + const updatedItem = await handleUpdateItem(itemId, name, price, image, description, promoPrice); // Update shopItems state setShopItems((prevShopItems) => { @@ -842,7 +844,7 @@ const ItemLister = ({ imageUrl={item.image} imageFile={item.selectedImage} cancelEdit={() => editItem(0)} - handleUpdateItem={(name, price, image, description) => { updateItemInCreate(item.itemId, name, price, image, description); setRandomKey(randomKey + 1); console.log(image) } + handleUpdateItem={(name, price, image, description, promoPrice) => { updateItemInCreate(item.itemId, name, price, image, description, promoPrice); setRandomKey(randomKey + 1); console.log(image) } } /> )} @@ -902,6 +904,7 @@ const ItemLister = ({ forInvoice={forInvoice} name={item.name} price={item.price} + promoPrice={item.promoPrice} qty={item.qty} imageUrl={item.image} imageFile={item.selectedImage} @@ -910,8 +913,8 @@ const ItemLister = ({ onRemoveClick={() => handleRemoveClick(item.itemId)} isBeingEdit={isEditItem == item.itemId} isAvailable={item.availability} - handleUpdateItem={(name, price, image, description) => - updateItemInCreate(item.itemId, name, price, image, description) + handleUpdateItem={(name, price, image, description, promoPrice) => + updateItemInCreate(item.itemId, name, price, image, description, promoPrice) } />
@@ -940,12 +943,12 @@ const ItemLister = ({ imageUrl={ itemTypeId ? getImageUrl(item.image) : item.image } + imageFile={item.selectedImage} cancelEdit={() => editItem(0)} handleCreateItem={onCreateItem} - handleUpdateItem={(name, price, image, description) => { + handleUpdateItem={(name, price, image, description, promoPrice) => { console.log(description) - onUpdateItem(item.itemId, name, price, image, description); - setRandomKey(randomKey + 1); console.log(image); + onUpdateItem(item.itemId, name, price, image, description, promoPrice); } } /> @@ -1005,18 +1008,20 @@ const ItemLister = ({ forInvoice={forInvoice} name={item.name} price={item.price} + promoPrice={item.promoPrice} qty={item.qty} description={item.description} imageUrl={ itemTypeId ? getImageUrl(item.image) : item.image } + imageFile={item.selectedImage} onPlusClick={() => handlePlusClick(item.itemId)} onNegativeClick={() => handleNegativeClick(item.itemId)} onRemoveClick={() => handleRemoveClick(item.itemId)} isBeingEdit={isEditItem == item.itemId} isAvailable={item.availability} - handleUpdateItem={(name, price, image, description) => - onUpdateItem(item.itemId, name, price, image, description) + handleUpdateItem={(name, price, image, description, promoPrice) => + onUpdateItem(item.itemId, name, price, image, description, promoPrice) } /> diff --git a/src/helpers/itemHelper.js b/src/helpers/itemHelper.js index 14f0813..3d388a4 100644 --- a/src/helpers/itemHelper.js +++ b/src/helpers/itemHelper.js @@ -110,7 +110,8 @@ export async function updateItem( name, price, selectedImage, - description + description, + promoPrice ) { try { console.log( @@ -124,6 +125,7 @@ export async function updateItem( formData.append("price", price); formData.append("image", selectedImage); formData.append("description", description); + formData.append("promoPrice", promoPrice); const response = await fetch(`${API_BASE_URL}/item/set-item/${itemId}`, { method: "PUT", diff --git a/src/pages/CafePage.js b/src/pages/CafePage.js index eb6cb31..a3ea60b 100644 --- a/src/pages/CafePage.js +++ b/src/pages/CafePage.js @@ -278,8 +278,8 @@ function CafePage({ description ) } - handleUpdateItem={(itemId, name, price, selectedImage, description) => - updateItem(itemId, name, price, selectedImage, description) + handleUpdateItem={(itemId, name, price, selectedImage, description, promoPrice) => + updateItem(itemId, name, price, selectedImage, description, promoPrice) } /> ))}