isdeleted updated all module menu is pending for isdeleted, isdeleted datas hide on all module without module manage page
This commit is contained in:
parent
214ce43ff9
commit
a5a57a7cd7
@ -98,9 +98,13 @@ const AddNewProduct = () => {
|
|||||||
const res = await client?.get(
|
const res = await client?.get(
|
||||||
`/Dine360%20Food%20Sides%20Category?fields=[%22*%22]&limit_page_length=100&filters=[["restaurantbranch","=","${restaruntBranch}"]]`
|
`/Dine360%20Food%20Sides%20Category?fields=[%22*%22]&limit_page_length=100&filters=[["restaurantbranch","=","${restaruntBranch}"]]`
|
||||||
);
|
);
|
||||||
setSidesCategoryData(res?.data?.data);
|
const sidesCategorys = res?.data?.data
|
||||||
if (res?.data?.data?.[0]) {
|
// Filter out deleted ones
|
||||||
const first = res?.data?.data[0]?.name;
|
const activeSideCategory = sidesCategorys.filter(sidesCategory => sidesCategory.isdeleted !== 1);
|
||||||
|
|
||||||
|
setSidesCategoryData(activeSideCategory);
|
||||||
|
if (activeSideCategory.length > 0) {
|
||||||
|
const first = activeSideCategory[0]?.name;
|
||||||
setActiveCategory(first);
|
setActiveCategory(first);
|
||||||
await getSideData(first);
|
await getSideData(first);
|
||||||
}
|
}
|
||||||
@ -115,8 +119,10 @@ const AddNewProduct = () => {
|
|||||||
`/Dine360%20Food%20Sides?fields=[%22*%22]&limit_page_length=100&filters=[["sidecategoryid","=","${sidesCategoryName}"]]`
|
`/Dine360%20Food%20Sides?fields=[%22*%22]&limit_page_length=100&filters=[["sidecategoryid","=","${sidesCategoryName}"]]`
|
||||||
);
|
);
|
||||||
const data = sideRes?.data?.data || [];
|
const data = sideRes?.data?.data || [];
|
||||||
setSidesData(data);
|
// Filter out deleted ones
|
||||||
setSidesDataByCategory((prev) => ({ ...prev, [sidesCategoryName]: data }));
|
const activeSides = data.filter(sides => sides.isdeleted !== 1);
|
||||||
|
setSidesData(activeSides);
|
||||||
|
setSidesDataByCategory((prev) => ({ ...prev, [sidesCategoryName]: activeSides }));
|
||||||
// keep existing selectionByCategory for that category (do not clear)
|
// keep existing selectionByCategory for that category (do not clear)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error fetching sides data:", error);
|
console.error("Error fetching sides data:", error);
|
||||||
@ -508,9 +514,8 @@ const AddNewProduct = () => {
|
|||||||
type="button"
|
type="button"
|
||||||
onClick={toggleSelectAll}
|
onClick={toggleSelectAll}
|
||||||
aria-pressed={isAllSelected}
|
aria-pressed={isAllSelected}
|
||||||
className={`btn radius-8 ${
|
className={`btn radius-8 ${isAllSelected ? "btn-bg-theme text-white" : "btn-outline-theme"
|
||||||
isAllSelected ? "btn-bg-theme text-white" : "btn-outline-theme"
|
}`}
|
||||||
}`}
|
|
||||||
style={{ display: "inline-flex", alignItems: "center", gap: 6 }}
|
style={{ display: "inline-flex", alignItems: "center", gap: 6 }}
|
||||||
>
|
>
|
||||||
{isPartialSelected && (
|
{isPartialSelected && (
|
||||||
@ -529,8 +534,8 @@ const AddNewProduct = () => {
|
|||||||
{isAllSelected
|
{isAllSelected
|
||||||
? "Deselect All"
|
? "Deselect All"
|
||||||
: isPartialSelected
|
: isPartialSelected
|
||||||
? "Select All (partial)"
|
? "Select All (partial)"
|
||||||
: "Select All"}
|
: "Select All"}
|
||||||
</span>
|
</span>
|
||||||
<small className="text-muted" style={{ marginLeft: 4 }}>
|
<small className="text-muted" style={{ marginLeft: 4 }}>
|
||||||
({selectedSides.size}/{sidesData?.length || 0})
|
({selectedSides.size}/{sidesData?.length || 0})
|
||||||
@ -547,11 +552,10 @@ const AddNewProduct = () => {
|
|||||||
{sidesCategoryData?.map((sidesCategory) => (
|
{sidesCategoryData?.map((sidesCategory) => (
|
||||||
<li
|
<li
|
||||||
key={sidesCategory?.name}
|
key={sidesCategory?.name}
|
||||||
className={`nav-item border rounded-2 px-3 py-3 bg-border-theme d-flex align-items-center gap-3 position-relative ${
|
className={`nav-item border rounded-2 px-3 py-3 bg-border-theme d-flex align-items-center gap-3 position-relative ${activeCategory === sidesCategory.name
|
||||||
activeCategory === sidesCategory.name
|
? "bg-theme text-white"
|
||||||
? "bg-theme text-white"
|
: ""
|
||||||
: ""
|
}`}
|
||||||
}`}
|
|
||||||
role="presentation"
|
role="presentation"
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
handleSidesCategoryClick(sidesCategory?.name)
|
handleSidesCategoryClick(sidesCategory?.name)
|
||||||
@ -587,9 +591,8 @@ const AddNewProduct = () => {
|
|||||||
onClick={() => toggleSide(side?.name)}
|
onClick={() => toggleSide(side?.name)}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className={`card p-3 shadow-2 radius-8 h-100 border position-relative ${
|
className={`card p-3 shadow-2 radius-8 h-100 border position-relative ${selected ? "bg-theme text-white" : "border-white"
|
||||||
selected ? "bg-theme text-white" : "border-white"
|
}`}
|
||||||
}`}
|
|
||||||
style={{
|
style={{
|
||||||
transition: "background-color .2s, color .2s",
|
transition: "background-color .2s, color .2s",
|
||||||
}}
|
}}
|
||||||
|
|||||||
@ -26,7 +26,7 @@ const ProductListInner = () => {
|
|||||||
const [isMenuFieldEditMode, setIsMenuFieldEditMode] = useState(false);
|
const [isMenuFieldEditMode, setIsMenuFieldEditMode] = useState(false);
|
||||||
const [editingMenuId, setEditingMenuId] = useState(null);
|
const [editingMenuId, setEditingMenuId] = useState(null);
|
||||||
const [formErrors, setFormErrors] = useState({});
|
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({
|
const [menuFieldsFormData, setMenuFieldsFormData] = useState({
|
||||||
menuname: "",
|
menuname: "",
|
||||||
description: "",
|
description: "",
|
||||||
@ -37,14 +37,14 @@ const ProductListInner = () => {
|
|||||||
const [isMenuCategoryEditMode, setIsMenuCategoryEditMode] = useState(false);
|
const [isMenuCategoryEditMode, setIsMenuCategoryEditMode] = useState(false);
|
||||||
const [editingMenuCategoryId, setEditingMenuCategoryId] = useState(null);
|
const [editingMenuCategoryId, setEditingMenuCategoryId] = useState(null);
|
||||||
const [formMenuCategoryErrors, setFormMenuCategoryErrors] = useState({});
|
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({
|
const [menuCategoryFormData, setMenuCategoryFormData] = useState({
|
||||||
menucategoryname: "",
|
menucategoryname: "",
|
||||||
description: "",
|
description: "",
|
||||||
is_active: 0,
|
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("")
|
const [restaruntBranch, setRestaruntBranch] = useState("")
|
||||||
@ -217,8 +217,11 @@ const ProductListInner = () => {
|
|||||||
|
|
||||||
const handleMenuFieldDelete = async () => {
|
const handleMenuFieldDelete = async () => {
|
||||||
try {
|
try {
|
||||||
await client.delete(`/Dine360 Menu/${menuFieldDeleteConfirm.id}`);
|
const body = {
|
||||||
setMenuFieldDeleteConfirm({ show: false, id: null });
|
isdeleted: menuFieldDeleteConfirm?.isDeleted == 0 ? 1 : 0
|
||||||
|
}
|
||||||
|
await client.put(`/Dine360 Menu/${menuFieldDeleteConfirm.id}`, body);
|
||||||
|
setMenuFieldDeleteConfirm({ show: false, id: null, isDeleted: null });
|
||||||
getMenuItem();
|
getMenuItem();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (
|
if (
|
||||||
@ -316,10 +319,13 @@ const ProductListInner = () => {
|
|||||||
|
|
||||||
const handleMenuCategoryDelete = async () => {
|
const handleMenuCategoryDelete = async () => {
|
||||||
try {
|
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}`);
|
await client.put(`/Dine360%20Menu%20Category/${menuCategoryDeleteConfirm.id}`, Body);
|
||||||
setMenuCategoryDeleteConfirm({ show: false, id: null });
|
setMenuCategoryDeleteConfirm({ show: false, id: null, isDeleted: null });
|
||||||
getMenuItem();
|
getMenuItem();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (
|
if (
|
||||||
@ -337,8 +343,11 @@ const ProductListInner = () => {
|
|||||||
|
|
||||||
const handleMenuItemDelete = async () => {
|
const handleMenuItemDelete = async () => {
|
||||||
try {
|
try {
|
||||||
await client.delete(`/Dine360%20Menu%20Category/${activeCategory}/${menuItemDeleteConfirm.id}`);
|
const body = {
|
||||||
setMenuItemDeleteConfirm({ show: false, id: null });
|
isdelete: menuItemDeleteConfirm?.isDeleted == 0 ? 1 : 0
|
||||||
|
}
|
||||||
|
await client.put(`/Dine360%20Menu%20Category/${activeCategory}/${menuItemDeleteConfirm.id}`, body);
|
||||||
|
setMenuItemDeleteConfirm({ show: false, id: null, isDeleted: null });
|
||||||
getMenuItem();
|
getMenuItem();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (
|
if (
|
||||||
@ -370,6 +379,12 @@ const ProductListInner = () => {
|
|||||||
<p className="text-sm mb-0 mt-1">${menu.price?.toFixed(2)}</p>
|
<p className="text-sm mb-0 mt-1">${menu.price?.toFixed(2)}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{
|
||||||
|
menu?.isdelete == 1 && (<Icon icon="mdi:block-helper" style={{
|
||||||
|
color: "red", position: "absolute", top: "5%",
|
||||||
|
left: "5%", zIndex: 1
|
||||||
|
}} />)
|
||||||
|
}
|
||||||
<div className="position-absolute top-0 end-0 me-1 mt-1" onClick={(e) => e.stopPropagation()}>
|
<div className="position-absolute top-0 end-0 me-1 mt-1" onClick={(e) => e.stopPropagation()}>
|
||||||
<div className="dropdown">
|
<div className="dropdown">
|
||||||
<button
|
<button
|
||||||
@ -402,11 +417,18 @@ const ProductListInner = () => {
|
|||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation(); // optional
|
e.stopPropagation(); // optional
|
||||||
setMenuItemDeleteConfirm({ show: true, id: menu.name });
|
setMenuItemDeleteConfirm({ show: true, id: menu.name, isDeleted: menu.isdelete });
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Icon icon="fluent:delete-24-regular" className="menu-icon" />
|
{menu.isdelete == 1 ? (
|
||||||
Delete
|
<>
|
||||||
|
<Icon icon="mdi:restore" /> Restore
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
<Icon icon="fluent:delete-24-regular" /> Delete
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -449,11 +471,14 @@ const ProductListInner = () => {
|
|||||||
onClick={() => handleCatMenuClick(menu?.menuname)}
|
onClick={() => handleCatMenuClick(menu?.menuname)}
|
||||||
style={{ cursor: "pointer" }}
|
style={{ cursor: "pointer" }}
|
||||||
>
|
>
|
||||||
<img
|
{menu.isdeleted !== 1 ? (
|
||||||
src="/assets/images/menu/menu-icons/all-menu.png"
|
<img
|
||||||
alt="menu"
|
src="/assets/images/menu/menu-icons/all-menu.png"
|
||||||
className="w-28-px h-28-px"
|
alt="menu"
|
||||||
/>
|
className="w-28-px h-28-px"
|
||||||
|
/>) : (
|
||||||
|
<Icon icon="mdi:block-helper" style={{ color: "red" }} />
|
||||||
|
)}
|
||||||
<span className="line-height-1">{menu?.menuname}</span>
|
<span className="line-height-1">{menu?.menuname}</span>
|
||||||
<div className="position-absolute top-0 end-0 me-1 mt-1" onClick={(e) => e.stopPropagation()}>
|
<div className="position-absolute top-0 end-0 me-1 mt-1" onClick={(e) => e.stopPropagation()}>
|
||||||
<div className="dropdown">
|
<div className="dropdown">
|
||||||
@ -487,11 +512,18 @@ const ProductListInner = () => {
|
|||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation(); // optional
|
e.stopPropagation(); // optional
|
||||||
setMenuFieldDeleteConfirm({ show: true, id: menu.name });
|
setMenuFieldDeleteConfirm({ show: true, id: menu.name, isDeleted: menu.isdeleted });
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Icon icon="fluent:delete-24-regular" className="menu-icon" />
|
{menu.isdeleted === 1 ? (
|
||||||
Delete
|
<>
|
||||||
|
<Icon icon="mdi:restore" /> Restore
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
<Icon icon="fluent:delete-24-regular" /> Delete
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -528,11 +560,14 @@ const ProductListInner = () => {
|
|||||||
>
|
>
|
||||||
{/* Left: Icon and Name */}
|
{/* Left: Icon and Name */}
|
||||||
<div className="d-flex align-items-center gap-2">
|
<div className="d-flex align-items-center gap-2">
|
||||||
<img
|
{menu.isdelete == 0 ? (
|
||||||
src="/assets/images/menu/menu-icons/all-menu.png"
|
<img
|
||||||
alt="menu icon"
|
src="/assets/images/menu/menu-icons/all-menu.png"
|
||||||
className="w-28-px h-28-px"
|
alt="menu"
|
||||||
/>
|
className="w-28-px h-28-px"
|
||||||
|
/>) : (
|
||||||
|
<Icon icon="mdi:block-helper" style={{ color: "red" }} />
|
||||||
|
)}
|
||||||
<span className="line-height-1">{menu?.menucategoryname}</span>
|
<span className="line-height-1">{menu?.menucategoryname}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -569,10 +604,18 @@ const ProductListInner = () => {
|
|||||||
href="#"
|
href="#"
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setMenuCategoryDeleteConfirm({ show: true, id: menu.name }); // 👈 use menu
|
setMenuCategoryDeleteConfirm({ show: true, id: menu.name, isDeleted: menu.isdelete }); // 👈 use menu
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Icon icon="fluent:delete-24-regular" /> Delete
|
{menu.isdelete == 1 ? (
|
||||||
|
<>
|
||||||
|
<Icon icon="mdi:restore" /> Restore
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
<Icon icon="fluent:delete-24-regular" /> Delete
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -680,23 +723,27 @@ const ProductListInner = () => {
|
|||||||
|
|
||||||
<div className="modal-body">
|
<div className="modal-body">
|
||||||
<div className="d-flex justify-content-between mb-1">
|
<div className="d-flex justify-content-between mb-1">
|
||||||
<h6 className="text-lg mb-0">Confirm Delete</h6>
|
<h6 className="text-lg mb-0"> {menuFieldDeleteConfirm?.isDeleted == 0 ? "Confirm to Delete" : "Confirm to Restore"}</h6>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="btn-close"
|
className="btn-close"
|
||||||
onClick={() => setMenuFieldDeleteConfirm({ show: false, id: null })}
|
onClick={() => setMenuFieldDeleteConfirm({ show: false, id: null, isDeleted: null })}
|
||||||
></button>
|
></button>
|
||||||
</div>
|
</div>
|
||||||
<p className="m-0">Are you sure you want to delete this Menu?</p>
|
<p className="mb-0">
|
||||||
|
{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?"}
|
||||||
|
</p>
|
||||||
<div className="d-flex justify-content-end gap-2 mt-1 ">
|
<div className="d-flex justify-content-end gap-2 mt-1 ">
|
||||||
<button
|
<button
|
||||||
className="btn btn-outline-danger px-14 py-6 text-sm"
|
className="btn btn-outline-danger px-14 py-6 text-sm"
|
||||||
onClick={() => setMenuFieldDeleteConfirm({ show: false, id: null })}
|
onClick={() => setMenuFieldDeleteConfirm({ show: false, id: null, isDeleted: null })}
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
</button>
|
</button>
|
||||||
<button className="btn btn-danger px-14 py-6 text-sm" onClick={handleMenuFieldDelete}>
|
<button className="btn btn-danger px-14 py-6 text-sm" onClick={handleMenuFieldDelete}>
|
||||||
Delete
|
{menuFieldDeleteConfirm?.isDeleted === 0 ? "Delete" : "Restore"}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -779,23 +826,27 @@ const ProductListInner = () => {
|
|||||||
|
|
||||||
<div className="modal-body">
|
<div className="modal-body">
|
||||||
<div className="d-flex justify-content-between mb-1">
|
<div className="d-flex justify-content-between mb-1">
|
||||||
<h6 className="text-lg mb-0">Confirm Delete</h6>
|
<h6 className="text-lg mb-0"> {menuCategoryDeleteConfirm?.isDeleted == 0 ? "Confirm to Delete" : "Confirm to Restore"}</h6>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="btn-close"
|
className="btn-close"
|
||||||
onClick={() => setMenuCategoryDeleteConfirm({ show: false, id: null })}
|
onClick={() => setMenuCategoryDeleteConfirm({ show: false, id: null, isDeleted: null })}
|
||||||
></button>
|
></button>
|
||||||
</div>
|
</div>
|
||||||
<p className="m-0">Are you sure you want to delete this Menu?</p>
|
<p className="mb-0">
|
||||||
|
{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?"}
|
||||||
|
</p>
|
||||||
<div className="d-flex justify-content-end gap-2 mt-1 ">
|
<div className="d-flex justify-content-end gap-2 mt-1 ">
|
||||||
<button
|
<button
|
||||||
className="btn btn-outline-danger px-14 py-6 text-sm"
|
className="btn btn-outline-danger px-14 py-6 text-sm"
|
||||||
onClick={() => setMenuCategoryDeleteConfirm({ show: false, id: null })}
|
onClick={() => setMenuCategoryDeleteConfirm({ show: false, id: null, isDeleted: null })}
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
</button>
|
</button>
|
||||||
<button className="btn btn-danger px-14 py-6 text-sm" onClick={handleMenuCategoryDelete}>
|
<button className="btn btn-danger px-14 py-6 text-sm" onClick={handleMenuCategoryDelete}>
|
||||||
Delete
|
{menuCategoryDeleteConfirm?.isDeleted == 0 ? "Delete" : "Restore"}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -812,23 +863,27 @@ const ProductListInner = () => {
|
|||||||
|
|
||||||
<div className="modal-body">
|
<div className="modal-body">
|
||||||
<div className="d-flex justify-content-between mb-1">
|
<div className="d-flex justify-content-between mb-1">
|
||||||
<h6 className="text-lg mb-0">Confirm Delete</h6>
|
<h6 className="text-lg mb-0"> {menuItemDeleteConfirm?.isDeleted == 0 ? "Confirm to Delete" : "Confirm to Restore"}</h6>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="btn-close"
|
className="btn-close"
|
||||||
onClick={() => setMenuItemDeleteConfirm({ show: false, id: null })}
|
onClick={() => setMenuItemDeleteConfirm({ show: false, id: null, isDeleted: null })}
|
||||||
></button>
|
></button>
|
||||||
</div>
|
</div>
|
||||||
<p className="m-0">Are you sure you want to delete this Menu?</p>
|
<p className="m-0">
|
||||||
|
{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?"}
|
||||||
|
</p>
|
||||||
<div className="d-flex justify-content-end gap-2 mt-1 ">
|
<div className="d-flex justify-content-end gap-2 mt-1 ">
|
||||||
<button
|
<button
|
||||||
className="btn btn-outline-danger px-14 py-6 text-sm"
|
className="btn btn-outline-danger px-14 py-6 text-sm"
|
||||||
onClick={() => setMenuItemDeleteConfirm({ show: false, id: null })}
|
onClick={() => setMenuItemDeleteConfirm({ show: false, id: null, isDeleted: null })}
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
</button>
|
</button>
|
||||||
<button className="btn btn-danger px-14 py-6 text-sm" onClick={handleMenuItemDelete}>
|
<button className="btn btn-danger px-14 py-6 text-sm" onClick={handleMenuItemDelete}>
|
||||||
Delete
|
{menuItemDeleteConfirm?.isDeleted == 0 ? "Delete" : "Restore"}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -30,7 +30,7 @@ const SidesPageInner = () => {
|
|||||||
image_preview: null,
|
image_preview: null,
|
||||||
});
|
});
|
||||||
const [errors, setErrors] = useState({});
|
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("");
|
const [restaruntBranch, setRestaruntBranch] = useState("");
|
||||||
|
|
||||||
// Sides Category
|
// Sides Category
|
||||||
@ -44,7 +44,7 @@ const SidesPageInner = () => {
|
|||||||
description: "",
|
description: "",
|
||||||
});
|
});
|
||||||
const [sidesCategoryErrors, setSidesCategoryErrors] = useState({});
|
const [sidesCategoryErrors, setSidesCategoryErrors] = useState({});
|
||||||
const [sidesCategoryDeleteConfirm, setSidesCategoryDeleteConfirm] = useState({ show: false, id: null });
|
const [sidesCategoryDeleteConfirm, setSidesCategoryDeleteConfirm] = useState({ show: false, id: null, isDeleted: null });
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const restarunt = localStorage.getItem("restaurantbranch");
|
const restarunt = localStorage.getItem("restaurantbranch");
|
||||||
@ -199,8 +199,11 @@ const SidesPageInner = () => {
|
|||||||
|
|
||||||
const handleDelete = async () => {
|
const handleDelete = async () => {
|
||||||
try {
|
try {
|
||||||
await client.delete(`/Dine360%20Food%20Sides/${deleteConfirm?.id}`);
|
const body = {
|
||||||
setDeleteConfirm({ show: false, id: null });
|
isdeleted: deleteConfirm.isDeleted == 0 ? 1 : 0
|
||||||
|
}
|
||||||
|
await client.put(`/Dine360%20Food%20Sides/${deleteConfirm?.id}`, body);
|
||||||
|
setDeleteConfirm({ show: false, id: null, isDeleted: null });
|
||||||
getSideData(activeCategory);
|
getSideData(activeCategory);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
alert("Error deleting. It might be linked to other data.");
|
alert("Error deleting. It might be linked to other data.");
|
||||||
@ -284,8 +287,11 @@ const SidesPageInner = () => {
|
|||||||
|
|
||||||
const handleSidesCategoryDelete = async () => {
|
const handleSidesCategoryDelete = async () => {
|
||||||
try {
|
try {
|
||||||
await client.delete(`/Dine360%20Food%20Sides%20Category/${sidesCategoryDeleteConfirm.id}`);
|
const body = {
|
||||||
setSidesCategoryDeleteConfirm({ show: false, id: null });
|
isdeleted: sidesCategoryDeleteConfirm.isDeleted == 0 ? 1 : 0
|
||||||
|
}
|
||||||
|
await client.put(`/Dine360%20Food%20Sides%20Category/${sidesCategoryDeleteConfirm.id}`, body);
|
||||||
|
setSidesCategoryDeleteConfirm({ show: false, id: null, isDeleted: null });
|
||||||
getSidesCategory();
|
getSidesCategory();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (
|
if (
|
||||||
@ -307,7 +313,7 @@ const SidesPageInner = () => {
|
|||||||
<div className="row gy-3 gx-3 gx-lg-5 gy-lg-5 justify-content-center">
|
<div className="row gy-3 gx-3 gx-lg-5 gy-lg-5 justify-content-center">
|
||||||
|
|
||||||
<div className="col-xl-3 col-lg-3 col-md-4">
|
<div className="col-xl-3 col-lg-3 col-md-4">
|
||||||
<div className="d-inline-block" style={{width:"100%"}}>
|
<div className="d-inline-block" style={{ width: "100%" }}>
|
||||||
<div className="card p-0 overflow-hidden radius-12 h-100">
|
<div className="card p-0 overflow-hidden radius-12 h-100">
|
||||||
<div className="card-body p-24">
|
<div className="card-body p-24">
|
||||||
<ul className="d-flex flex-column gap-2">
|
<ul className="d-flex flex-column gap-2">
|
||||||
@ -331,11 +337,21 @@ const SidesPageInner = () => {
|
|||||||
onClick={() => handleSidesCategoryClick(sidesCategory?.name)}
|
onClick={() => handleSidesCategoryClick(sidesCategory?.name)}
|
||||||
style={{ cursor: "pointer" }}
|
style={{ cursor: "pointer" }}
|
||||||
>
|
>
|
||||||
<img
|
|
||||||
src="/assets/images/menu/menu-icons/all-menu.png"
|
{
|
||||||
alt="menu"
|
sidesCategory?.isdeleted == 0 ? (
|
||||||
className="w-28-px h-28-px"
|
<img
|
||||||
/>
|
src="/assets/images/menu/menu-icons/all-menu.png"
|
||||||
|
alt="menu"
|
||||||
|
className="w-28-px h-28-px"
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
:
|
||||||
|
(
|
||||||
|
<Icon icon="mdi:block-helper" style={{ color: "red" }} />
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
<span className="line-height-1">{sidesCategory?.sidecategoryname}</span>
|
<span className="line-height-1">{sidesCategory?.sidecategoryname}</span>
|
||||||
<div className="position-absolute top-0 end-0 me-1 mt-1" onClick={(e) => e.stopPropagation()}>
|
<div className="position-absolute top-0 end-0 me-1 mt-1" onClick={(e) => e.stopPropagation()}>
|
||||||
<div className="dropdown">
|
<div className="dropdown">
|
||||||
@ -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'
|
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) => {
|
onClick={(e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setSidesCategoryDeleteConfirm({ show: true, id: sidesCategory.name });
|
setSidesCategoryDeleteConfirm({ show: true, id: sidesCategory.name, isDeleted: sidesCategory.isdeleted });
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Icon
|
{sidesCategory.isdeleted === 1 ? (
|
||||||
icon='fluent:delete-24-regular'
|
<>
|
||||||
className='menu-icon'
|
<Icon icon="mdi:restore" /> Restore
|
||||||
/>
|
</>
|
||||||
Delete
|
) : (
|
||||||
|
<>
|
||||||
|
<Icon icon="fluent:delete-24-regular" /> Delete
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -417,13 +437,27 @@ const SidesPageInner = () => {
|
|||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<Link href="#" 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(); setDeleteConfirm({ show: true, id: room.name }); }}>
|
<Link href="#" 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(); setDeleteConfirm({ show: true, id: room.name, isDeleted: room.isdeleted }); }}>
|
||||||
<Icon icon='fluent:delete-24-regular' className='menu-icon' /> Delete
|
{room.isdeleted === 1 ? (
|
||||||
|
<>
|
||||||
|
<Icon icon="mdi:restore" /> Restore
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
<Icon icon="fluent:delete-24-regular" /> Delete
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{
|
||||||
|
room?.isdeleted == 1 && (<Icon icon="mdi:block-helper" style={{
|
||||||
|
color: "red", position: "absolute", top: "5%",
|
||||||
|
left: "5%", zIndex: 1
|
||||||
|
}} />)
|
||||||
|
}
|
||||||
<div className="card-body text-center p-3">
|
<div className="card-body text-center p-3">
|
||||||
<img src={`${ImageBase}/${room.item_image}`} alt="" className="w-100-px h-100-px rounded-circle object-fit-cover" />
|
<img src={`${ImageBase}/${room.item_image}`} alt="" className="w-100-px h-100-px rounded-circle object-fit-cover" />
|
||||||
<h6 className="text-md mb-0 mt-3">{room?.sidename}</h6>
|
<h6 className="text-md mb-0 mt-3">{room?.sidename}</h6>
|
||||||
@ -526,23 +560,27 @@ const SidesPageInner = () => {
|
|||||||
|
|
||||||
<div className="modal-body">
|
<div className="modal-body">
|
||||||
<div className="d-flex justify-content-between mb-1">
|
<div className="d-flex justify-content-between mb-1">
|
||||||
<h6 className="text-lg mb-0">Confirm Delete</h6>
|
<h6 className="text-lg mb-0">{sidesCategoryDeleteConfirm?.isDeleted == 0 ? "Confirm to Delete" : "Confirm to Restore"}</h6>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="btn-close"
|
className="btn-close"
|
||||||
onClick={() => setSidesCategoryDeleteConfirm({ show: false, id: null })}
|
onClick={() => setSidesCategoryDeleteConfirm({ show: false, id: null, isDeleted: null })}
|
||||||
></button>
|
></button>
|
||||||
</div>
|
</div>
|
||||||
<p className="m-0">Are you sure you want to delete this sidesCategory?</p>
|
<p className="m-0">
|
||||||
|
{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?"}
|
||||||
|
</p>
|
||||||
<div className="d-flex justify-content-end gap-2 mt-1 ">
|
<div className="d-flex justify-content-end gap-2 mt-1 ">
|
||||||
<button
|
<button
|
||||||
className="btn btn-outline-danger px-14 py-6 text-sm"
|
className="btn btn-outline-danger px-14 py-6 text-sm"
|
||||||
onClick={() => setSidesCategoryDeleteConfirm({ show: false, id: null })}
|
onClick={() => setSidesCategoryDeleteConfirm({ show: false, id: null, isDeleted: null })}
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
</button>
|
</button>
|
||||||
<button className="btn btn-danger px-14 py-6 text-sm" onClick={handleSidesCategoryDelete}>
|
<button className="btn btn-danger px-14 py-6 text-sm" onClick={handleSidesCategoryDelete}>
|
||||||
Delete
|
{sidesCategoryDeleteConfirm?.isDeleted == 0 ? "Delete" : "Restore"}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -659,13 +697,17 @@ const SidesPageInner = () => {
|
|||||||
<div className="modal-content">
|
<div className="modal-content">
|
||||||
<div className="modal-body">
|
<div className="modal-body">
|
||||||
<div className="d-flex justify-content-between mb-1">
|
<div className="d-flex justify-content-between mb-1">
|
||||||
<h6 className="text-lg mb-0">Confirm Delete</h6>
|
<h6 className="text-lg mb-0"> {deleteConfirm?.isDeleted == 0 ? "Confirm to Delete" : "Confirm to Restore"}</h6>
|
||||||
<button type="button" className="btn-close" onClick={() => setDeleteConfirm({ show: false, id: null })}></button>
|
<button type="button" className="btn-close" onClick={() => setDeleteConfirm({ show: false, id: null, isDeleted: null })}></button>
|
||||||
</div>
|
</div>
|
||||||
<p>Are you sure you want to delete this item?</p>
|
<p className="m-0">
|
||||||
|
{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?"}
|
||||||
|
</p>
|
||||||
<div className="d-flex justify-content-end gap-2 mt-1">
|
<div className="d-flex justify-content-end gap-2 mt-1">
|
||||||
<button className="btn btn-outline-danger" onClick={() => setDeleteConfirm({ show: false, id: null })}>Cancel</button>
|
<button className="btn btn-outline-danger" onClick={() => setDeleteConfirm({ show: false, id: null, isDeleted: null })}>Cancel</button>
|
||||||
<button className="btn btn-danger" onClick={handleDelete}>Delete</button>
|
<button className="btn btn-danger" onClick={handleDelete}> {deleteConfirm?.isDeleted == 0 ? "Delete" : "Restore"}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -49,8 +49,10 @@ const MenuItemsCategoryInner = () => {
|
|||||||
const getMenuItem = async () => {
|
const getMenuItem = async () => {
|
||||||
try {
|
try {
|
||||||
const res = await client?.get(`/Dine360 Menu?fields=["*"]&limit_page_length=100`);
|
const res = await client?.get(`/Dine360 Menu?fields=["*"]&limit_page_length=100`);
|
||||||
setCatMenu(res?.data?.data || []);
|
const menuFieldRes = res?.data?.data
|
||||||
setCatMenuActive(res?.data?.data[0]?.name || [])
|
const activeMenuFields = menuFieldRes.filter(menuField => menuField.isdeleted !== 1);
|
||||||
|
setCatMenu(activeMenuFields || []);
|
||||||
|
setCatMenuActive(activeMenuFields[0]?.name || [])
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error fetching menu list:", error);
|
console.error("Error fetching menu list:", error);
|
||||||
}
|
}
|
||||||
@ -81,7 +83,10 @@ const MenuItemsCategoryInner = () => {
|
|||||||
|
|
||||||
const menuLinks = menuRes?.data?.data || [];
|
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(
|
const res = await client.get(
|
||||||
`/Dine360%20Menu%20Category?fields=["*"]&limit_page_length=100&filters=[["name","=","${menuItem.menucategory}"]]`
|
`/Dine360%20Menu%20Category?fields=["*"]&limit_page_length=100&filters=[["name","=","${menuItem.menucategory}"]]`
|
||||||
);
|
);
|
||||||
@ -106,7 +111,10 @@ const MenuItemsCategoryInner = () => {
|
|||||||
const res = await client.get(
|
const res = await client.get(
|
||||||
`/Dine360%20Menu%20Category/${category.name}?fields=["*"]&limit_page_length=100`
|
`/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) {
|
} catch (error) {
|
||||||
console.error("Error fetching menu items:", error);
|
console.error("Error fetching menu items:", error);
|
||||||
}
|
}
|
||||||
@ -398,8 +406,6 @@ const MenuItemsCategoryInner = () => {
|
|||||||
{
|
{
|
||||||
loading ? (
|
loading ? (
|
||||||
<PageLoader />
|
<PageLoader />
|
||||||
) : menuData?.length == 0 ? (
|
|
||||||
<PageNoData />
|
|
||||||
) : (
|
) : (
|
||||||
<div className="row gy-4">
|
<div className="row gy-4">
|
||||||
{/* Menu Category - Always col-xxl-2 */}
|
{/* Menu Category - Always col-xxl-2 */}
|
||||||
|
|||||||
@ -68,12 +68,15 @@ const TableOrderInner = () => {
|
|||||||
`/Dine360 Floor?fields=["*"]&limit_page_length=100&filters=[["restaurantbranch","=","${restaruntBranch}"]]`
|
`/Dine360 Floor?fields=["*"]&limit_page_length=100&filters=[["restaurantbranch","=","${restaruntBranch}"]]`
|
||||||
);
|
);
|
||||||
const floors = res?.data?.data || [];
|
const floors = res?.data?.data || [];
|
||||||
setFloorData(floors);
|
|
||||||
|
|
||||||
if (floors.length > 0) {
|
// Filter out deleted ones
|
||||||
setSelectedFloor(floors[0].name);
|
const activeFloors = floors.filter(floor => floor.isdeleted !== 1);
|
||||||
|
setFloorData(activeFloors);
|
||||||
|
|
||||||
|
if (activeFloors.length > 0) {
|
||||||
|
setSelectedFloor(activeFloors[0].name);
|
||||||
setSelectedRoom(null);
|
setSelectedRoom(null);
|
||||||
getRoomData(floors[0].name);
|
getRoomData(activeFloors[0].name);
|
||||||
} else {
|
} else {
|
||||||
setSelectedFloor(null);
|
setSelectedFloor(null);
|
||||||
setRoomData([]);
|
setRoomData([]);
|
||||||
@ -91,11 +94,12 @@ const TableOrderInner = () => {
|
|||||||
`/Dine360 Room?fields=["*"]&limit_page_length=100&filters=[["floor","=","${floorName}"]]`
|
`/Dine360 Room?fields=["*"]&limit_page_length=100&filters=[["floor","=","${floorName}"]]`
|
||||||
);
|
);
|
||||||
const rooms = res?.data?.data || [];
|
const rooms = res?.data?.data || [];
|
||||||
setRoomData(rooms);
|
const activeRooms = rooms.filter(room => room.isdeleted !== 1);
|
||||||
|
setRoomData(activeRooms);
|
||||||
|
|
||||||
if (rooms.length > 0) {
|
if (activeRooms.length > 0) {
|
||||||
setSelectedRoom(rooms[0].name);
|
setSelectedRoom(activeRooms[0].name);
|
||||||
getTableData(rooms[0].name);
|
getTableData(activeRooms[0].name);
|
||||||
} else {
|
} else {
|
||||||
setSelectedRoom(null); // clear selection if no rooms
|
setSelectedRoom(null); // clear selection if no rooms
|
||||||
setTables([]); // clear table data
|
setTables([]); // clear table data
|
||||||
@ -112,7 +116,9 @@ const TableOrderInner = () => {
|
|||||||
const res = await client.get(
|
const res = await client.get(
|
||||||
`/Dine360 Table?fields=["*"]&limit_page_length=100&filters=[["room","=","${roomName}"]]`
|
`/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) {
|
} catch (error) {
|
||||||
console.error("Error fetching table data:", error);
|
console.error("Error fetching table data:", error);
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@ -14,7 +14,7 @@ const DateReservationMainComponent = () => {
|
|||||||
|
|
||||||
const [dateReservation, setDateReservation] = useState([]);
|
const [dateReservation, setDateReservation] = useState([]);
|
||||||
const [loading, setLoading] = useState(true);
|
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("")
|
const [restaruntBranch, setRestaruntBranch] = useState("")
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -66,8 +66,11 @@ const DateReservationMainComponent = () => {
|
|||||||
|
|
||||||
const handleDelete = async () => {
|
const handleDelete = async () => {
|
||||||
try {
|
try {
|
||||||
await client.delete(`/Dine360 Table Reservation Master/${deleteConfirm?.id}`);
|
const body = {
|
||||||
setDeleteConfirm({ show: false, id: null });
|
isdeleted: deleteConfirm?.isDeleted == 0 ? 1 : 0
|
||||||
|
}
|
||||||
|
await client.put(`/Dine360 Table Reservation Master/${deleteConfirm?.id}`, body);
|
||||||
|
setDeleteConfirm({ show: false, id: null, isDeleted: null });
|
||||||
getReservationDate();
|
getReservationDate();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (
|
if (
|
||||||
@ -145,13 +148,23 @@ const DateReservationMainComponent = () => {
|
|||||||
</button>
|
</button>
|
||||||
<button onClick={(e) => {
|
<button onClick={(e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
setDeleteConfirm({ show: true, id: reservation.name })
|
setDeleteConfirm({ show: true, id: reservation.name, isDeleted: reservation?.isdeleted })
|
||||||
}}
|
}}
|
||||||
type="button"
|
type="button"
|
||||||
className="bg-danger-focus text-danger-600 w-40-px h-40-px d-flex justify-content-center align-items-center rounded-circle"
|
className={`w-40-px h-40-px d-flex justify-content-center align-items-center rounded-circle
|
||||||
|
${reservation.isdeleted === 1
|
||||||
|
? "bg-success-focus bg-hover-success-200 text-success-600"
|
||||||
|
: "bg-danger-focus bg-hover-danger-200 text-danger-600"
|
||||||
|
}`}
|
||||||
>
|
>
|
||||||
<Icon icon="fluent:delete-24-regular" className="menu-icon" />
|
{reservation.isdeleted === 1 ? (
|
||||||
|
<Icon icon="mdi:restore" />
|
||||||
|
) : (
|
||||||
|
<Icon icon="fluent:delete-24-regular" />
|
||||||
|
)}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -181,19 +194,25 @@ const DateReservationMainComponent = () => {
|
|||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="btn-close"
|
className="btn-close"
|
||||||
onClick={() => setDeleteConfirm({ show: false, id: null })}
|
onClick={() => setDeleteConfirm({ show: false, id: null, isDeleted: null })}
|
||||||
></button>
|
></button>
|
||||||
</div>
|
</div>
|
||||||
<p>Are you sure you want to delete this Reservation?</p>
|
<div>
|
||||||
|
<p className="mb-0">
|
||||||
|
{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?"}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
<div className="d-flex justify-content-end gap-2">
|
<div className="d-flex justify-content-end gap-2">
|
||||||
<button
|
<button
|
||||||
className="btn btn-secondary"
|
className="btn btn-secondary"
|
||||||
onClick={() => setDeleteConfirm({ show: false, id: null })}
|
onClick={() => setDeleteConfirm({ show: false, id: null, isDeleted: null })}
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
</button>
|
</button>
|
||||||
<button className="btn btn-danger" onClick={handleDelete}>
|
<button className="btn btn-danger" onClick={handleDelete}>
|
||||||
Delete
|
{deleteConfirm?.isDeleted === 0 ? "Delete" : "Restore"}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -22,7 +22,7 @@ const DayReservationMainComponent = () => {
|
|||||||
const [formData, setFormData] = useState({ day: "" });
|
const [formData, setFormData] = useState({ day: "" });
|
||||||
const [existingDays, setExistingDays] = useState([]);
|
const [existingDays, setExistingDays] = useState([]);
|
||||||
const [formError, setFormError] = 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("")
|
const [restaruntBranch, setRestaruntBranch] = useState("")
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -85,8 +85,12 @@ const DayReservationMainComponent = () => {
|
|||||||
const handleDeleteConfirm = async () => {
|
const handleDeleteConfirm = async () => {
|
||||||
if (!deleteConfirm.id) return;
|
if (!deleteConfirm.id) return;
|
||||||
try {
|
try {
|
||||||
await client.delete(`/Dine360 Days/${deleteConfirm.id}`);
|
const body = {
|
||||||
setDeleteConfirm({ show: false, id: null });
|
isdeleted: deleteConfirm?.isDeleted == 0 ? 1 : 0
|
||||||
|
}
|
||||||
|
|
||||||
|
await client.put(`/Dine360 Days/${deleteConfirm.id}`, body);
|
||||||
|
setDeleteConfirm({ show: false, id: null, isDeleted: null });
|
||||||
getDayData();
|
getDayData();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
alert("Delete failed.");
|
alert("Delete failed.");
|
||||||
@ -137,12 +141,23 @@ const DayReservationMainComponent = () => {
|
|||||||
|
|
||||||
{/* Delete Button Top-Right */}
|
{/* Delete Button Top-Right */}
|
||||||
<button
|
<button
|
||||||
className="remove-item-btn bg-danger-focus bg-hover-danger-200 text-danger-600 fw-medium w-40-px h-40-px d-flex justify-content-center align-items-center rounded-circle position-absolute"
|
className={`remove-item-btn fw-medium w-40-px h-40-px d-flex justify-content-center align-items-center rounded-circle position-absolute
|
||||||
|
${days.isdeleted === 1
|
||||||
|
? "bg-success-focus bg-hover-success-200 text-success-600"
|
||||||
|
: "bg-danger-focus bg-hover-danger-200 text-danger-600"
|
||||||
|
}`}
|
||||||
style={{ top: "8px", right: "8px" }}
|
style={{ top: "8px", right: "8px" }}
|
||||||
onClick={() => setDeleteConfirm({ show: true, id: days.name })}
|
onClick={() =>
|
||||||
|
setDeleteConfirm({ show: true, id: days.name, isDeleted: days?.isdeleted })
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<Icon icon="fluent:delete-24-regular" className="menu-icon" />
|
{days.isdeleted === 1 ? (
|
||||||
|
<Icon icon="mdi:restore" />
|
||||||
|
) : (
|
||||||
|
<Icon icon="fluent:delete-24-regular" />
|
||||||
|
)}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -205,27 +220,31 @@ const DayReservationMainComponent = () => {
|
|||||||
<div className="modal-body">
|
<div className="modal-body">
|
||||||
<div className="mb-1 d-flex justify-content-between align-items-center">
|
<div className="mb-1 d-flex justify-content-between align-items-center">
|
||||||
<h5 className="mb-0 text-lg">Delete Confirmation</h5>
|
<h5 className="mb-0 text-lg">Delete Confirmation</h5>
|
||||||
<button type="button" className="btn-close" onClick={() => setDeleteConfirm({ show: false, id: null })}></button>
|
<button type="button" className="btn-close" onClick={() => setDeleteConfirm({ show: false, id: null, isDeleted: null })}></button>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<p>Are you sure you want to delete this day?</p>
|
<p className="mb-0">
|
||||||
|
{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?"}
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="d-flex justify-content-end align-items-center gap-2">
|
<div className="d-flex justify-content-end align-items-center gap-2">
|
||||||
<button
|
<button
|
||||||
className="btn btn-secondary"
|
className="btn btn-secondary"
|
||||||
onClick={() => setDeleteConfirm({ show: false, id: null })}
|
onClick={() => setDeleteConfirm({ show: false, id: null, isDeleted: null })}
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
</button>
|
</button>
|
||||||
<button className="btn btn-danger" onClick={handleDeleteConfirm}>
|
<button className="btn btn-danger" onClick={handleDeleteConfirm}>
|
||||||
Yes, Delete
|
{deleteConfirm?.isDeleted === 0 ? "Delete" : "Restore"}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div >
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -181,6 +181,8 @@ const DayReservationTableEnableInner = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const sortedTables = [...tables].sort((a, b) => a.tablename.localeCompare(b.tablename));
|
const sortedTables = [...tables].sort((a, b) => a.tablename.localeCompare(b.tablename));
|
||||||
|
|
||||||
|
console.log("sortedTables", sortedTables)
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|
||||||
@ -209,7 +211,7 @@ const DayReservationTableEnableInner = () => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="row gy-3 gx-3 gx-lg-5 gy-lg-5 justify-content-center">
|
<div className="row gy-3 gx-3 gx-lg-5 gy-lg-5 justify-content-center">
|
||||||
{sortedTables.map((table) => (
|
{sortedTables.filter((table) => table.isdeleted !== 1).map((table) => (
|
||||||
<div
|
<div
|
||||||
className="col-xxl-2 col-lg-3 col-md-4 col-sm-6 col-6 text-center"
|
className="col-xxl-2 col-lg-3 col-md-4 col-sm-6 col-6 text-center"
|
||||||
key={table.name}
|
key={table.name}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user