diff --git a/src/assets/locals/ar.json b/src/assets/locals/ar.json
index 7e87d55..de47b42 100644
--- a/src/assets/locals/ar.json
+++ b/src/assets/locals/ar.json
@@ -153,7 +153,9 @@
"restaurantCover": "غلاف المطعم",
"restaurantLogo": "شعار المطعم",
"joinUs": "انضم إلى الولاء",
- "joinUsDescription": "لتحصل على هدية مجانية"
+ "joinUsDescription": "لتحصل على هدية مجانية",
+ "openingHours": "ساعات العمل: {{openingTime}} - {{closingTime}}",
+ "restaurantIsClosed": "المطعم مغلق"
},
"cart": {
"title": "السلة",
@@ -185,7 +187,9 @@
"specialRequest": "طلب خاص",
"specialRequestPlaceholder": "أي تعليمات خاصة لطلبك؟",
"tableNumber": "رقم الطاولة",
+ "selectCompany": "اختر الشركة",
"tableNumberPlaceholder": "اختر طاولتك",
+ "selectCompanyPlaceholder": "اختر الشركة",
"coupon": "القسيمة",
"apply": "تطبيق",
"viewOffers": "عرض العروض",
diff --git a/src/assets/locals/en.json b/src/assets/locals/en.json
index 1b3d289..dd670fb 100644
--- a/src/assets/locals/en.json
+++ b/src/assets/locals/en.json
@@ -165,7 +165,9 @@
"noResultsFound": "No results found",
"cart": "Cart",
"joinUs": "Join us",
- "joinUsDescription": "to earn loyalty points"
+ "joinUsDescription": "to earn loyalty points",
+ "openingHours": "Opening Hours: {{openingTime}} - {{closingTime}}",
+ "restaurantIsClosed": "Restaurant is closed"
},
"cart": {
"title": "Cart",
@@ -197,7 +199,9 @@
"specialRequest": "Special Request",
"specialRequestPlaceholder": "Any special instructions for your order?",
"tableNumber": "Table Number",
+ "selectCompany": "Select Company",
"tableNumberPlaceholder": "Select your table",
+ "selectCompanyPlaceholder": "Select company",
"coupon": "Coupon",
"apply": "Apply",
"viewOffers": "View Offers",
diff --git a/src/pages/cart/components/CartMobileTabletLayout.tsx b/src/pages/cart/components/CartMobileTabletLayout.tsx
index 53002d6..2c4f01f 100644
--- a/src/pages/cart/components/CartMobileTabletLayout.tsx
+++ b/src/pages/cart/components/CartMobileTabletLayout.tsx
@@ -283,7 +283,8 @@ export default function CartMobileTabletLayout({
{/* Table Number */}
- {orderType === OrderType.DineIn && }
+ {(orderType === OrderType.DineIn ||
+ orderType === OrderType.ToOffice) && }
{/* Invoice Summary */}
diff --git a/src/pages/menu/components/AddToCartButton/AddToCartButton.tsx b/src/pages/menu/components/AddToCartButton/AddToCartButton.tsx
index 6c722ae..7aa11b8 100644
--- a/src/pages/menu/components/AddToCartButton/AddToCartButton.tsx
+++ b/src/pages/menu/components/AddToCartButton/AddToCartButton.tsx
@@ -1,8 +1,9 @@
import { PlusOutlined } from "@ant-design/icons";
-import { Button } from "antd";
+import { Button, message } from "antd";
import { useTranslation } from "react-i18next";
import { useNavigate, useParams } from "react-router-dom";
import { useAppSelector } from "redux/hooks.ts";
+import { useGetRestaurantDetailsQuery } from "redux/api/others";
import { colors } from "ThemeConstants.ts";
import styles from "./AddToCartButton.module.css";
@@ -12,6 +13,17 @@ export function AddToCartButton() {
const { subdomain } = useParams();
const navigate = useNavigate();
+ const { data: restaurant } = useGetRestaurantDetailsQuery(subdomain, {
+ skip: !subdomain,
+ });
+
+ const handleClick = () => {
+ if (restaurant && !restaurant.isOpened) {
+ message.warning(t("menu.restaurantIsClosed"));
+ return;
+ }
+ navigate(`/${subdomain}/menu`);
+ };
return (
}
size="small"
- onClick={() => {
- navigate(`/${subdomain}/menu`);
- }}
+ onClick={handleClick}
className={`${styles.addButton} ${isRTL ? styles.addButtonRTL : styles.addButtonLTR}`}
style={{ backgroundColor: colors.primary }}
>
diff --git a/src/pages/menu/components/MenuList/ProductCard.tsx b/src/pages/menu/components/MenuList/ProductCard.tsx
index 46134d0..327e23c 100644
--- a/src/pages/menu/components/MenuList/ProductCard.tsx
+++ b/src/pages/menu/components/MenuList/ProductCard.tsx
@@ -190,7 +190,7 @@ export default function ProductCard({ item }: Props) {
height={90}
/>
-
+ {/* */}
diff --git a/src/pages/menu/menu.module.css b/src/pages/menu/menu.module.css
index afbe5ba..a6104e5 100644
--- a/src/pages/menu/menu.module.css
+++ b/src/pages/menu/menu.module.css
@@ -474,6 +474,15 @@
padding: 0 1rem;
}
+.openingHours {
+ position: absolute;
+ top: 190px;
+ right: 10px;
+ font-size: 14px;
+ font-weight: 600;
+ color: #666;
+}
+
.restaurantTitle {
font-size: 16px;
font-weight: bold;
@@ -693,4 +702,7 @@
right: -10px !important;
}
-
+:global(.ant-app-rtl) .openingHours {
+ left: 10px;
+ right: auto;
+}
diff --git a/src/pages/menu/page.tsx b/src/pages/menu/page.tsx
index c6e8bba..1e323d1 100644
--- a/src/pages/menu/page.tsx
+++ b/src/pages/menu/page.tsx
@@ -126,6 +126,13 @@ function MenuPage() {
{isRTL ? restaurant?.descriptionAR : restaurant?.description}
+
+
+ {t("menu.openingHours", {
+ openingTime: restaurant?.openingTime,
+ closingTime: restaurant?.closingTime,
+ })}
+
@@ -137,10 +144,7 @@ function MenuPage() {
-
+
diff --git a/src/pages/product/components/ProductFooter.tsx b/src/pages/product/components/ProductFooter.tsx
index ad94778..c6dd302 100644
--- a/src/pages/product/components/ProductFooter.tsx
+++ b/src/pages/product/components/ProductFooter.tsx
@@ -9,6 +9,8 @@ import { useAppDispatch, useAppSelector } from "redux/hooks";
import { colors, ProBlack2 } from "ThemeConstants";
import { Extra, Product, Variant } from "utils/types/appTypes";
import styles from "../product.module.css";
+import { useGetRestaurantDetailsQuery } from "redux/api/others";
+import { useParams } from "react-router-dom";
export default function ProductFooter({
product,
@@ -34,7 +36,10 @@ export default function ProductFooter({
const { isMobile, isDesktop } = useBreakPoint();
const { isRTL } = useAppSelector((state) => state.locale);
const [specialRequest, setSpecialRequest] = useState("");
-
+ const { subdomain } = useParams();
+ const { data: restaurant } = useGetRestaurantDetailsQuery(subdomain, {
+ skip: !subdomain,
+ });
// Check if product has any customization options
const hasCustomizationOptions = useMemo(() => {
const hasVariants = product?.variants?.length > 0;
@@ -49,6 +54,11 @@ export default function ProductFooter({
]);
const handleAddToCart = () => {
+ if (restaurant && !restaurant.isOpened) {
+ message.warning(t("menu.restaurantIsClosed"));
+ return;
+ }
+
if (!isValid) {
message.error(t("menu.pleaseSelectRequiredOptions"));
return;