diff --git a/components/organisms/manager/ReviewsTab.tsx b/components/organisms/manager/ReviewsTab.tsx
index 89f8455..0705c5a 100644
--- a/components/organisms/manager/ReviewsTab.tsx
+++ b/components/organisms/manager/ReviewsTab.tsx
@@ -90,6 +90,44 @@ export default function ReviewsTab() {
const avgRating =
reviews.reduce((sum, r) => sum + r.rating, 0) / reviews.length;
+ const CustomerName = ({ customerId }: { customerId: string }) => {
+ const [name, setName] = useState("");
+ const [loading, setLoading] = useState(true);
+
+ useEffect(() => {
+ // Hàm gọi API
+ const getName = async () => {
+ try {
+ setLoading(true);
+
+ const response = await fetch(`/api/customer/${customerId}`);
+
+ if (!response.ok) {
+ throw new Error("Mạng lỗi hoặc không tìm thấy nhân viên");
+ }
+
+ const data = await response.json();
+
+ setName(data["name"]);
+ } catch (error) {
+ console.error("Lỗi khi lấy tên:", error);
+ setName("Lỗi tải tên");
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ if (customerId) {
+ getName();
+ }
+ }, [customerId]); // Chạy lại nếu customerId thay đổi
+
+ if (loading)
+ return ...;
+
+ return {name || "N/A"};
+ };
+
return (
{/* Summary header */}
@@ -124,7 +162,7 @@ export default function ReviewsTab() {
- {review.reviewerId}
+
diff --git a/components/templates/main-layout/MainLayout.tsx b/components/templates/main-layout/MainLayout.tsx
index c05346a..f6e1bab 100644
--- a/components/templates/main-layout/MainLayout.tsx
+++ b/components/templates/main-layout/MainLayout.tsx
@@ -1,6 +1,7 @@
import { CartFab } from "@/components/organisms/cart";
import Footer from "@/layouts/footer";
import Header from "@/layouts/header";
+import { ManagerProvider } from "@/lib/manager-context";
import type { MainLayoutProps } from "./MainLayout.types";
@@ -12,7 +13,9 @@ export default function MainLayout({ children }: MainLayoutProps) {
return (
<>
{/* Sticky top header */}
-
+
+
+
{/* Page content (grows to fill remaining height) */}
{children}
diff --git a/layouts/header.tsx b/layouts/header.tsx
index 96445ec..9293a6c 100644
--- a/layouts/header.tsx
+++ b/layouts/header.tsx
@@ -2,6 +2,7 @@
import { useAuth } from "@/lib/auth-context";
import { SHOP_INFO } from "@/lib/constants";
+import { useManager } from "@/lib/manager-context";
import Image from "next/image";
import Link from "next/link";
import { useRouter } from "next/navigation";
@@ -25,6 +26,7 @@ import { useRouter } from "next/navigation";
*/
export default function Header() {
const router = useRouter();
+ const { eatery } = useManager();
const { user, logout } = useAuth();
const handleAuthClick = () => {
@@ -47,7 +49,7 @@ export default function Header() {
- {SHOP_INFO.name}
+ {eatery?.name}
{SHOP_INFO.tagline}
diff --git a/lib/manager-context.tsx b/lib/manager-context.tsx
index e7da0f6..afdef93 100644
--- a/lib/manager-context.tsx
+++ b/lib/manager-context.tsx
@@ -12,6 +12,7 @@ import {
import { eateryClient } from "./apollo-clients";
import {
+ EateryEntity,
type MenuItemEntity,
type addMenuItemMutation,
type allEateriesQuery,
@@ -27,6 +28,7 @@ interface ManagerContextType {
// Data
products: MenuItemEntity[];
eateryId: string | null;
+ eatery?: EateryEntity;
// Active tab
activeTab: ManagerTab;
@@ -49,6 +51,7 @@ const GET_EATERY_MENU = gql`
query GetEateryMenu {
allEateries {
id
+ name
menuItems {
id
name
@@ -97,6 +100,7 @@ const DELETE_MENU_ITEM = gql`
export function ManagerProvider({ children }: { children: ReactNode }) {
const [products, setProducts] = useState([]);
+ const [eatery, setEatery] = useState();
const [activeTab, setActiveTab] = useState("products");
const { data } = useQuery(GET_EATERY_MENU, {
@@ -123,6 +127,7 @@ export function ManagerProvider({ children }: { children: ReactNode }) {
useEffect(() => {
if (data?.allEateries?.[0]) {
setProducts(data.allEateries[0].menuItems);
+ setEatery(data.allEateries[0]);
}
}, [data]);
@@ -193,6 +198,7 @@ export function ManagerProvider({ children }: { children: ReactNode }) {
return (