diff --git a/src/app/admin/(pos-system)/pos/(product)/create-product/page.jsx b/src/app/admin/(pos-system)/pos/(product)/create-product/page.jsx index ace1974..2f196bf 100644 --- a/src/app/admin/(pos-system)/pos/(product)/create-product/page.jsx +++ b/src/app/admin/(pos-system)/pos/(product)/create-product/page.jsx @@ -98,9 +98,13 @@ const AddNewProduct = () => { const res = await client?.get( `/Dine360%20Food%20Sides%20Category?fields=[%22*%22]&limit_page_length=100&filters=[["restaurantbranch","=","${restaruntBranch}"]]` ); - setSidesCategoryData(res?.data?.data); - if (res?.data?.data?.[0]) { - const first = res?.data?.data[0]?.name; + const sidesCategorys = res?.data?.data + // Filter out deleted ones + const activeSideCategory = sidesCategorys.filter(sidesCategory => sidesCategory.isdeleted !== 1); + + setSidesCategoryData(activeSideCategory); + if (activeSideCategory.length > 0) { + const first = activeSideCategory[0]?.name; setActiveCategory(first); await getSideData(first); } @@ -115,8 +119,10 @@ const AddNewProduct = () => { `/Dine360%20Food%20Sides?fields=[%22*%22]&limit_page_length=100&filters=[["sidecategoryid","=","${sidesCategoryName}"]]` ); const data = sideRes?.data?.data || []; - setSidesData(data); - setSidesDataByCategory((prev) => ({ ...prev, [sidesCategoryName]: data })); + // Filter out deleted ones + const activeSides = data.filter(sides => sides.isdeleted !== 1); + setSidesData(activeSides); + setSidesDataByCategory((prev) => ({ ...prev, [sidesCategoryName]: activeSides })); // keep existing selectionByCategory for that category (do not clear) } catch (error) { console.error("Error fetching sides data:", error); @@ -508,9 +514,8 @@ const AddNewProduct = () => { type="button" onClick={toggleSelectAll} aria-pressed={isAllSelected} - className={`btn radius-8 ${ - isAllSelected ? "btn-bg-theme text-white" : "btn-outline-theme" - }`} + className={`btn radius-8 ${isAllSelected ? "btn-bg-theme text-white" : "btn-outline-theme" + }`} style={{ display: "inline-flex", alignItems: "center", gap: 6 }} > {isPartialSelected && ( @@ -529,8 +534,8 @@ const AddNewProduct = () => { {isAllSelected ? "Deselect All" : isPartialSelected - ? "Select All (partial)" - : "Select All"} + ? "Select All (partial)" + : "Select All"} ({selectedSides.size}/{sidesData?.length || 0}) @@ -547,11 +552,10 @@ const AddNewProduct = () => { {sidesCategoryData?.map((sidesCategory) => (
  • handleSidesCategoryClick(sidesCategory?.name) @@ -587,9 +591,8 @@ const AddNewProduct = () => { onClick={() => toggleSide(side?.name)} >
    { const [isMenuFieldEditMode, setIsMenuFieldEditMode] = useState(false); const [editingMenuId, setEditingMenuId] = useState(null); const [formErrors, setFormErrors] = useState({}); - const [menuFieldDeleteConfirm, setMenuFieldDeleteConfirm] = useState({ show: false, id: null }); + const [menuFieldDeleteConfirm, setMenuFieldDeleteConfirm] = useState({ show: false, id: null, isDeleted: null }); const [menuFieldsFormData, setMenuFieldsFormData] = useState({ menuname: "", description: "", @@ -37,14 +37,14 @@ const ProductListInner = () => { const [isMenuCategoryEditMode, setIsMenuCategoryEditMode] = useState(false); const [editingMenuCategoryId, setEditingMenuCategoryId] = useState(null); const [formMenuCategoryErrors, setFormMenuCategoryErrors] = useState({}); - const [menuCategoryDeleteConfirm, setMenuCategoryDeleteConfirm] = useState({ show: false, id: null }); + const [menuCategoryDeleteConfirm, setMenuCategoryDeleteConfirm] = useState({ show: false, id: null, isDeleted: null }); const [menuCategoryFormData, setMenuCategoryFormData] = useState({ menucategoryname: "", description: "", is_active: 0, }); - const [menuItemDeleteConfirm, setMenuItemDeleteConfirm] = useState({ show: false, id: null }); + const [menuItemDeleteConfirm, setMenuItemDeleteConfirm] = useState({ show: false, id: null, isDeleted: null }); const [restaruntBranch, setRestaruntBranch] = useState("") @@ -217,8 +217,11 @@ const ProductListInner = () => { const handleMenuFieldDelete = async () => { try { - await client.delete(`/Dine360 Menu/${menuFieldDeleteConfirm.id}`); - setMenuFieldDeleteConfirm({ show: false, id: null }); + const body = { + isdeleted: menuFieldDeleteConfirm?.isDeleted == 0 ? 1 : 0 + } + await client.put(`/Dine360 Menu/${menuFieldDeleteConfirm.id}`, body); + setMenuFieldDeleteConfirm({ show: false, id: null, isDeleted: null }); getMenuItem(); } catch (error) { if ( @@ -316,10 +319,13 @@ const ProductListInner = () => { const handleMenuCategoryDelete = async () => { try { - await client.delete(`/Dine360%20Menu%20Category%20Link/${catMenuActive} - ${menuCategoryDeleteConfirm.id}`) + const Body = { + isdelete: menuCategoryDeleteConfirm.isDeleted == 0 ? 1 : 0 + } + // await client.delete(`/Dine360%20Menu%20Category%20Link/${catMenuActive} - ${menuCategoryDeleteConfirm.id}`) - await client.delete(`/Dine360%20Menu%20Category/${menuCategoryDeleteConfirm.id}`); - setMenuCategoryDeleteConfirm({ show: false, id: null }); + await client.put(`/Dine360%20Menu%20Category/${menuCategoryDeleteConfirm.id}`, Body); + setMenuCategoryDeleteConfirm({ show: false, id: null, isDeleted: null }); getMenuItem(); } catch (error) { if ( @@ -337,8 +343,11 @@ const ProductListInner = () => { const handleMenuItemDelete = async () => { try { - await client.delete(`/Dine360%20Menu%20Category/${activeCategory}/${menuItemDeleteConfirm.id}`); - setMenuItemDeleteConfirm({ show: false, id: null }); + const body = { + isdelete: menuItemDeleteConfirm?.isDeleted == 0 ? 1 : 0 + } + await client.put(`/Dine360%20Menu%20Category/${activeCategory}/${menuItemDeleteConfirm.id}`, body); + setMenuItemDeleteConfirm({ show: false, id: null, isDeleted: null }); getMenuItem(); } catch (error) { if ( @@ -370,6 +379,12 @@ const ProductListInner = () => {

    ${menu.price?.toFixed(2)}

    + { + menu?.isdelete == 1 && () + }
    e.stopPropagation()}>
  • @@ -449,11 +471,14 @@ const ProductListInner = () => { onClick={() => handleCatMenuClick(menu?.menuname)} style={{ cursor: "pointer" }} > - menu + {menu.isdeleted !== 1 ? ( + menu) : ( + + )} {menu?.menuname}
    e.stopPropagation()}>
    @@ -487,11 +512,18 @@ const ProductListInner = () => { onClick={(e) => { e.preventDefault(); e.stopPropagation(); // optional - setMenuFieldDeleteConfirm({ show: true, id: menu.name }); + setMenuFieldDeleteConfirm({ show: true, id: menu.name, isDeleted: menu.isdeleted }); }} > - - Delete + {menu.isdeleted === 1 ? ( + <> + Restore + + ) : ( + <> + Delete + + )} @@ -528,11 +560,14 @@ const ProductListInner = () => { > {/* Left: Icon and Name */}
    - menu icon + {menu.isdelete == 0 ? ( + menu) : ( + + )} {menu?.menucategoryname}
    @@ -569,10 +604,18 @@ const ProductListInner = () => { href="#" onClick={(e) => { e.preventDefault(); - setMenuCategoryDeleteConfirm({ show: true, id: menu.name }); // 👈 use menu + setMenuCategoryDeleteConfirm({ show: true, id: menu.name, isDeleted: menu.isdelete }); // 👈 use menu }} > - Delete + {menu.isdelete == 1 ? ( + <> + Restore + + ) : ( + <> + Delete + + )} @@ -680,23 +723,27 @@ const ProductListInner = () => {
    -
    Confirm Delete
    +
    {menuFieldDeleteConfirm?.isDeleted == 0 ? "Confirm to Delete" : "Confirm to Restore"}
    -

    Are you sure you want to delete this Menu?

    +

    + {menuFieldDeleteConfirm?.isDeleted === 0 + ? "Are you sure you want to set this Menu Fields as Delete?" + : "Are you sure you want to set this Menu Fields as Restore?"} +

    @@ -779,23 +826,27 @@ const ProductListInner = () => {
    -
    Confirm Delete
    +
    {menuCategoryDeleteConfirm?.isDeleted == 0 ? "Confirm to Delete" : "Confirm to Restore"}
    -

    Are you sure you want to delete this Menu?

    +

    + {menuCategoryDeleteConfirm?.isDeleted === 0 + ? "Are you sure you want to set this Menu Category as Delete?" + : "Are you sure you want to set this Menu Category as Restore?"} +

    @@ -812,23 +863,27 @@ const ProductListInner = () => {
    -
    Confirm Delete
    +
    {menuItemDeleteConfirm?.isDeleted == 0 ? "Confirm to Delete" : "Confirm to Restore"}
    -

    Are you sure you want to delete this Menu?

    +

    + {menuItemDeleteConfirm?.isDeleted === 0 + ? "Are you sure you want to set this Sides as Delete?" + : "Are you sure you want to set this Sides as Restore?"} +

    diff --git a/src/app/admin/(pos-system)/pos/sides/page.jsx b/src/app/admin/(pos-system)/pos/sides/page.jsx index e7a4ca0..55b9296 100644 --- a/src/app/admin/(pos-system)/pos/sides/page.jsx +++ b/src/app/admin/(pos-system)/pos/sides/page.jsx @@ -30,7 +30,7 @@ const SidesPageInner = () => { image_preview: null, }); const [errors, setErrors] = useState({}); - const [deleteConfirm, setDeleteConfirm] = useState({ show: false, id: null }); + const [deleteConfirm, setDeleteConfirm] = useState({ show: false, id: null, isDeleted: null }); const [restaruntBranch, setRestaruntBranch] = useState(""); // Sides Category @@ -44,7 +44,7 @@ const SidesPageInner = () => { description: "", }); const [sidesCategoryErrors, setSidesCategoryErrors] = useState({}); - const [sidesCategoryDeleteConfirm, setSidesCategoryDeleteConfirm] = useState({ show: false, id: null }); + const [sidesCategoryDeleteConfirm, setSidesCategoryDeleteConfirm] = useState({ show: false, id: null, isDeleted: null }); useEffect(() => { const restarunt = localStorage.getItem("restaurantbranch"); @@ -199,8 +199,11 @@ const SidesPageInner = () => { const handleDelete = async () => { try { - await client.delete(`/Dine360%20Food%20Sides/${deleteConfirm?.id}`); - setDeleteConfirm({ show: false, id: null }); + const body = { + isdeleted: deleteConfirm.isDeleted == 0 ? 1 : 0 + } + await client.put(`/Dine360%20Food%20Sides/${deleteConfirm?.id}`, body); + setDeleteConfirm({ show: false, id: null, isDeleted: null }); getSideData(activeCategory); } catch (error) { alert("Error deleting. It might be linked to other data."); @@ -284,8 +287,11 @@ const SidesPageInner = () => { const handleSidesCategoryDelete = async () => { try { - await client.delete(`/Dine360%20Food%20Sides%20Category/${sidesCategoryDeleteConfirm.id}`); - setSidesCategoryDeleteConfirm({ show: false, id: null }); + const body = { + isdeleted: sidesCategoryDeleteConfirm.isDeleted == 0 ? 1 : 0 + } + await client.put(`/Dine360%20Food%20Sides%20Category/${sidesCategoryDeleteConfirm.id}`, body); + setSidesCategoryDeleteConfirm({ show: false, id: null, isDeleted: null }); getSidesCategory(); } catch (error) { if ( @@ -307,7 +313,7 @@ const SidesPageInner = () => {
    -
    +
      @@ -331,11 +337,21 @@ const SidesPageInner = () => { onClick={() => handleSidesCategoryClick(sidesCategory?.name)} style={{ cursor: "pointer" }} > - menu + + { + sidesCategory?.isdeleted == 0 ? ( + menu + ) + : + ( + + ) + } + {sidesCategory?.sidecategoryname}
      e.stopPropagation()}>
      @@ -366,14 +382,18 @@ const SidesPageInner = () => { className='dropdown-item px-16 py-8 d-flex align-items-center gap-2 rounded text-secondary-light bg-hover-neutral-200 text-hover-neutral-900' onClick={(e) => { e.preventDefault(); - setSidesCategoryDeleteConfirm({ show: true, id: sidesCategory.name }); + setSidesCategoryDeleteConfirm({ show: true, id: sidesCategory.name, isDeleted: sidesCategory.isdeleted }); }} > - - Delete + {sidesCategory.isdeleted === 1 ? ( + <> + Restore + + ) : ( + <> + Delete + + )}
    @@ -417,13 +437,27 @@ const SidesPageInner = () => {
  • - { e.preventDefault(); setDeleteConfirm({ show: true, id: room.name }); }}> - Delete + { e.preventDefault(); setDeleteConfirm({ show: true, id: room.name, isDeleted: room.isdeleted }); }}> + {room.isdeleted === 1 ? ( + <> + Restore + + ) : ( + <> + Delete + + )}
  • + { + room?.isdeleted == 1 && () + }
    {room?.sidename}
    @@ -526,23 +560,27 @@ const SidesPageInner = () => {
    -
    Confirm Delete
    +
    {sidesCategoryDeleteConfirm?.isDeleted == 0 ? "Confirm to Delete" : "Confirm to Restore"}
    -

    Are you sure you want to delete this sidesCategory?

    +

    + {sidesCategoryDeleteConfirm?.isDeleted == 0 + ? "Are you sure you want to set this Sides as Delete?" + : "Are you sure you want to set this Sides as Restore?"} +

    @@ -659,13 +697,17 @@ const SidesPageInner = () => {
    -
    Confirm Delete
    - +
    {deleteConfirm?.isDeleted == 0 ? "Confirm to Delete" : "Confirm to Restore"}
    +
    -

    Are you sure you want to delete this item?

    +

    + {deleteConfirm?.isDeleted === 0 + ? "Are you sure you want to set this Sides as Delete?" + : "Are you sure you want to set this Sides as Restore?"} +

    - - + +
    diff --git a/src/app/waiter/menu-items/page.jsx b/src/app/waiter/menu-items/page.jsx index a6fa5ca..64ff55b 100644 --- a/src/app/waiter/menu-items/page.jsx +++ b/src/app/waiter/menu-items/page.jsx @@ -49,8 +49,10 @@ const MenuItemsCategoryInner = () => { const getMenuItem = async () => { try { const res = await client?.get(`/Dine360 Menu?fields=["*"]&limit_page_length=100`); - setCatMenu(res?.data?.data || []); - setCatMenuActive(res?.data?.data[0]?.name || []) + const menuFieldRes = res?.data?.data + const activeMenuFields = menuFieldRes.filter(menuField => menuField.isdeleted !== 1); + setCatMenu(activeMenuFields || []); + setCatMenuActive(activeMenuFields[0]?.name || []) } catch (error) { console.error("Error fetching menu list:", error); } @@ -81,7 +83,10 @@ const MenuItemsCategoryInner = () => { const menuLinks = menuRes?.data?.data || []; - const menuCategoryPromises = menuLinks.map(async (menuItem) => { + const activeMenuCategoryLink = menuLinks.filter(menuCatLink => menuCatLink.isdeleted !== 1); + console.log("activeMenuCategoryLink", activeMenuCategoryLink) + + const menuCategoryPromises = activeMenuCategoryLink.map(async (menuItem) => { const res = await client.get( `/Dine360%20Menu%20Category?fields=["*"]&limit_page_length=100&filters=[["name","=","${menuItem.menucategory}"]]` ); @@ -106,7 +111,10 @@ const MenuItemsCategoryInner = () => { const res = await client.get( `/Dine360%20Menu%20Category/${category.name}?fields=["*"]&limit_page_length=100` ); - setMenuItems(res?.data?.data || []); + const menuItem = res?.data?.data + console.log("menuItem", menuItem) + const activeMenuItem = menuItem?.menuitems_child?.filter(menuItem => menuItem.isdeleted !== 1); + setMenuItems(activeMenuItem || []); } catch (error) { console.error("Error fetching menu items:", error); } @@ -398,8 +406,6 @@ const MenuItemsCategoryInner = () => { { loading ? ( - ) : menuData?.length == 0 ? ( - ) : (
    {/* Menu Category - Always col-xxl-2 */} diff --git a/src/app/waiter/table-order/page.jsx b/src/app/waiter/table-order/page.jsx index 43059d1..26e43a1 100644 --- a/src/app/waiter/table-order/page.jsx +++ b/src/app/waiter/table-order/page.jsx @@ -68,12 +68,15 @@ const TableOrderInner = () => { `/Dine360 Floor?fields=["*"]&limit_page_length=100&filters=[["restaurantbranch","=","${restaruntBranch}"]]` ); const floors = res?.data?.data || []; - setFloorData(floors); - if (floors.length > 0) { - setSelectedFloor(floors[0].name); + // Filter out deleted ones + const activeFloors = floors.filter(floor => floor.isdeleted !== 1); + setFloorData(activeFloors); + + if (activeFloors.length > 0) { + setSelectedFloor(activeFloors[0].name); setSelectedRoom(null); - getRoomData(floors[0].name); + getRoomData(activeFloors[0].name); } else { setSelectedFloor(null); setRoomData([]); @@ -91,11 +94,12 @@ const TableOrderInner = () => { `/Dine360 Room?fields=["*"]&limit_page_length=100&filters=[["floor","=","${floorName}"]]` ); const rooms = res?.data?.data || []; - setRoomData(rooms); + const activeRooms = rooms.filter(room => room.isdeleted !== 1); + setRoomData(activeRooms); - if (rooms.length > 0) { - setSelectedRoom(rooms[0].name); - getTableData(rooms[0].name); + if (activeRooms.length > 0) { + setSelectedRoom(activeRooms[0].name); + getTableData(activeRooms[0].name); } else { setSelectedRoom(null); // clear selection if no rooms setTables([]); // clear table data @@ -112,7 +116,9 @@ const TableOrderInner = () => { const res = await client.get( `/Dine360 Table?fields=["*"]&limit_page_length=100&filters=[["room","=","${roomName}"]]` ); - setTables(res?.data?.data || []); + const tables = res?.data?.data + const activeRooms = tables.filter(table => table.isdeleted !== 1); + setTables(activeRooms || []); } catch (error) { console.error("Error fetching table data:", error); } finally { diff --git a/src/components/admin/(reservation)/DateReservationMainComponent.jsx b/src/components/admin/(reservation)/DateReservationMainComponent.jsx index bf59c50..88cb42a 100644 --- a/src/components/admin/(reservation)/DateReservationMainComponent.jsx +++ b/src/components/admin/(reservation)/DateReservationMainComponent.jsx @@ -14,7 +14,7 @@ const DateReservationMainComponent = () => { const [dateReservation, setDateReservation] = useState([]); const [loading, setLoading] = useState(true); - const [deleteConfirm, setDeleteConfirm] = useState({ show: false, id: null }); + const [deleteConfirm, setDeleteConfirm] = useState({ show: false, id: null, isDeleted: null }); const [restaruntBranch, setRestaruntBranch] = useState("") useEffect(() => { @@ -66,8 +66,11 @@ const DateReservationMainComponent = () => { const handleDelete = async () => { try { - await client.delete(`/Dine360 Table Reservation Master/${deleteConfirm?.id}`); - setDeleteConfirm({ show: false, id: null }); + const body = { + isdeleted: deleteConfirm?.isDeleted == 0 ? 1 : 0 + } + await client.put(`/Dine360 Table Reservation Master/${deleteConfirm?.id}`, body); + setDeleteConfirm({ show: false, id: null, isDeleted: null }); getReservationDate(); } catch (error) { if ( @@ -145,13 +148,23 @@ const DateReservationMainComponent = () => { + +
    @@ -181,19 +194,25 @@ const DateReservationMainComponent = () => {
    -

    Are you sure you want to delete this Reservation?

    +
    +

    + {deleteConfirm?.isDeleted === 0 + ? "Are you sure you want to set this Day as Delete?" + : "Are you sure you want to set this Day as Restore?"} +

    +
    diff --git a/src/components/admin/(reservation)/DayReservationMainComponent.jsx b/src/components/admin/(reservation)/DayReservationMainComponent.jsx index 1043f03..4b4bace 100644 --- a/src/components/admin/(reservation)/DayReservationMainComponent.jsx +++ b/src/components/admin/(reservation)/DayReservationMainComponent.jsx @@ -22,7 +22,7 @@ const DayReservationMainComponent = () => { const [formData, setFormData] = useState({ day: "" }); const [existingDays, setExistingDays] = useState([]); const [formError, setFormError] = useState(""); - const [deleteConfirm, setDeleteConfirm] = useState({ show: false, id: null }); + const [deleteConfirm, setDeleteConfirm] = useState({ show: false, id: null, isDeleted: null }); const [restaruntBranch, setRestaruntBranch] = useState("") useEffect(() => { @@ -85,8 +85,12 @@ const DayReservationMainComponent = () => { const handleDeleteConfirm = async () => { if (!deleteConfirm.id) return; try { - await client.delete(`/Dine360 Days/${deleteConfirm.id}`); - setDeleteConfirm({ show: false, id: null }); + const body = { + isdeleted: deleteConfirm?.isDeleted == 0 ? 1 : 0 + } + + await client.put(`/Dine360 Days/${deleteConfirm.id}`, body); + setDeleteConfirm({ show: false, id: null, isDeleted: null }); getDayData(); } catch (err) { alert("Delete failed."); @@ -137,12 +141,23 @@ const DayReservationMainComponent = () => { {/* Delete Button Top-Right */} +
    @@ -205,27 +220,31 @@ const DayReservationMainComponent = () => {
    Delete Confirmation
    - +
    -

    Are you sure you want to delete this day?

    +

    + {deleteConfirm?.isDeleted === 0 + ? "Are you sure you want to set this Day as Delete?" + : "Are you sure you want to set this Day as Restore?"} +

    -
    + )} ); diff --git a/src/components/admin/(reservation)/DayReservationTableEnable.jsx b/src/components/admin/(reservation)/DayReservationTableEnable.jsx index 5138adc..d4e1416 100644 --- a/src/components/admin/(reservation)/DayReservationTableEnable.jsx +++ b/src/components/admin/(reservation)/DayReservationTableEnable.jsx @@ -181,6 +181,8 @@ const DayReservationTableEnableInner = () => { }; const sortedTables = [...tables].sort((a, b) => a.tablename.localeCompare(b.tablename)); + + console.log("sortedTables", sortedTables) return ( <> @@ -209,7 +211,7 @@ const DayReservationTableEnableInner = () => {
    - {sortedTables.map((table) => ( + {sortedTables.filter((table) => table.isdeleted !== 1).map((table) => (