diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopPage.razor b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopPage.razor
index ddbb8b2f..c9f3c6be 100644
--- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopPage.razor
+++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Pages/Admin/Shop/ShopPage.razor
@@ -1338,6 +1338,133 @@
break;
+ // ═══ R4: ZONES / KHU VỰC (Nhà hàng) ═══
+ case "zones":
+
+
+
+
+ @foreach (var (name, tables, desc, color, icon) in new[] {
+ ("Tầng 1 — Sảnh chính", 12, "Khu vực chính tiếp khách, gần quầy bar", "#3B82F6", "building"),
+ ("Tầng 2 — VIP", 6, "Phòng VIP riêng tư, cách âm tốt", "#A855F7", "crown"),
+ ("Sân vườn", 8, "Khu vực ngoài trời, view đẹp", "#22C55E", "trees"),
+ ("Bar & Lounge", 4, "Khu vực bar, phục vụ đồ uống", "#F59E0B", "wine") })
+ {
+
+
+
@desc
+
+ Đang hoạt động
+
+
+
+
+
+
+ }
+
+
+
+ break;
+
+ // ═══ S6: COMBO DỊCH VỤ (Spa) ═══
+ case "combos":
+
+
+
+
+ @foreach (var (name, services, duration, price, orig, sold, color) in new[] {
+ ("Combo Thư Giãn Toàn Thân", "Massage body 60' + Xông hơi 30' + Đắp mặt nạ 20'", "110 phút", "800,000₫", "1,050,000₫", 45, "#3B82F6"),
+ ("Combo Detox & Làm Đẹp", "Tẩy tế bào chết + Massage mặt + Chăm sóc da 5 bước", "90 phút", "650,000₫", "850,000₫", 32, "#A855F7"),
+ ("Combo Cặp Đôi Premium", "2 Massage body 90' + 2 Xông hơi + Trà thảo mộc", "120 phút", "1,500,000₫", "2,100,000₫", 18, "#EC4899") })
+ {
+
+
+
@name
+ Đang bán
+
+
@services
+
+
+ @duration
+
+
+
+ @price
+ @orig
+
+
Đã bán: @sold
+
+
+ }
+
+
+
+ break;
+
+ // ═══ C5: CA LÀM VIỆC / SHIFTS (Café) ═══
+ case "shifts":
+
+
+
+
+
+ | Nhân viên |
+ @foreach (var d in new[] { "T2", "T3", "T4", "T5", "T6", "T7", "CN" })
+ {
+ @d |
+ }
+
+ @foreach (var (name, shifts) in new[] {
+ ("Nguyễn A", new[] { "S", "S", "C", "C", "—", "S", "—" }),
+ ("Trần B", new[] { "C", "C", "S", "S", "C", "—", "—" }),
+ ("Lê C", new[] { "S", "—", "S", "C", "S", "C", "S" }),
+ ("Phạm D", new[] { "—", "S", "C", "—", "C", "S", "C" }),
+ ("Hoàng E", new[] { "C", "C", "—", "S", "S", "—", "S" }) })
+ {
+
+ | @name |
+ @foreach (var s in shifts)
+ {
+ var bg = s == "S" ? "rgba(59,130,246,0.12)" : s == "C" ? "rgba(168,85,247,0.12)" : "transparent";
+ var fg = s == "S" ? "#3B82F6" : s == "C" ? "#A855F7" : "var(--admin-text-tertiary)";
+
+ @s
+ |
+ }
+
+ }
+
+
+
+
+
S = Sáng (7:00-14:00)
+
C = Chiều (14:00-22:00)
+
— = Nghỉ
+
+ break;
+
// ═══ UNKNOWN SECTIONS ═══
default:
@@ -1554,6 +1681,9 @@
case "consent": _sectionTitle = "Cam kết KH"; _sectionIcon = "file-check"; _sectionDescription = "Biểu mẫu đồng ý khách hàng."; break;
case "doctors": _sectionTitle = "Bác sĩ / CK"; _sectionIcon = "stethoscope"; _sectionDescription = "Quản lý bác sĩ và chuyên gia."; break;
case "followup": _sectionTitle = "Tái khám"; _sectionIcon = "calendar-heart"; _sectionDescription = "Lịch tái khám sau điều trị."; break;
+ case "zones": _sectionTitle = "Khu vực"; _sectionIcon = "map-pin"; _sectionDescription = "Quản lý khu vực phục vụ."; break;
+ case "combos": _sectionTitle = "Combo dịch vụ"; _sectionIcon = "layers"; _sectionDescription = "Quản lý combo dịch vụ."; break;
+ case "shifts": _sectionTitle = "Ca làm việc"; _sectionIcon = "clock-4"; _sectionDescription = "Lịch ca làm, phân ca."; break;
default: _sectionTitle = Section ?? "Trang"; _sectionIcon = "layout-dashboard"; _sectionDescription = "Trang đang phát triển."; break;
}
}
diff --git a/apps/web-client-tpos-net/src/WebClientTpos.Client/Services/ShopSidebarConfig.cs b/apps/web-client-tpos-net/src/WebClientTpos.Client/Services/ShopSidebarConfig.cs
index 7be4bc82..e7c4c932 100644
--- a/apps/web-client-tpos-net/src/WebClientTpos.Client/Services/ShopSidebarConfig.cs
+++ b/apps/web-client-tpos-net/src/WebClientTpos.Client/Services/ShopSidebarConfig.cs
@@ -34,6 +34,7 @@ public static class ShopSidebarConfig
new("POS Bán hàng", "monitor", "pos"),
new("Menu & Đồ uống", "coffee", "menu"),
new("Nguyên liệu", "flask-conical", "recipes"),
+ new("Ca làm việc", "clock-4", "shifts"),
new("Tồn kho", "warehouse", "inventory"),
new("Tài chính", "trending-up", "finance"),
new("Nhân sự", "users", "staff"),
@@ -49,6 +50,7 @@ public static class ShopSidebarConfig
new("Menu & Món ăn", "utensils", "menu"),
new("Bàn / Table", "grid-3x3", "tables"),
new("Đặt bàn", "calendar-check", "reservations"),
+ new("Khu vực", "map-pin", "zones"),
new("Bếp (Kitchen)", "flame", "kitchen"),
new("Tồn kho", "warehouse", "inventory"),
new("Tài chính", "trending-up", "finance"),
@@ -80,6 +82,7 @@ public static class ShopSidebarConfig
new("Lịch hẹn", "calendar", "appointments"),
new("Dịch vụ", "sparkles", "services"),
new("Gói dịch vụ", "gift", "packages"),
+ new("Combo dịch vụ", "layers", "combos"),
new("Tài nguyên", "door-open", "resources"),
new("Sản phẩm", "package", "products"),
new("Tài chính", "trending-up", "finance"),