import { useState, useEffect } from 'react';
import { Modal, Button, Container, Row, Col, Tab, Tabs, Form, InputGroup } from 'react-bootstrap';
import MenuItem from '../molecules/MenuItem';
import BasicTemplate from '../templates/BasicTemplate';
import DataStorage from '../organisms/DataStorage';
import CacheStorage from '../organisms/CacheStorage';
import axios from 'axios';
const categoryMapper = [
{ itemType: 1, category: 'Món chính' },
{ itemType: 2, category: 'Đồ uống' },
{ itemType: 3, category: 'Tráng miệng' },
];
function MenuPage() {
const [key, setKey] = useState(0);
const [selectedDish, setSelectedDish] = useState(null);
const [show, setShow] = useState(false);
const [cartAmount, setCartAmount] = useState(0);
const [loading, setLoading] = useState(true);
const [menuItems, setMenuItems] = useState({});
function handleClose() {
const cart = JSON.parse(DataStorage.get('cart')) || {}; // Đảm bảo cart không null
cart[selectedDish.id] = {
'name':selectedDish.item_name,
'amount': cartAmount,
'imageSrc': selectedDish.image_url,
'price': selectedDish.price
};
for (let id in cart) {
if (cart[id].amount === 0) {
delete cart[id];
}
DataStorage.set('cart', JSON.stringify(cart));
// console.log(JSON.stringify(filteredCart));
setShow(false);
}
}
function notLoggedInClose() {
setShow(false);
}
function handleShow(dish) {
if (DataStorage.get('isLoggedIn') === null) {
setShow(true);
return;
} else {
setSelectedDish(dish); // Đặt selectedDish ngay lập tức
// Sau khi cập nhật selectedDish, lấy dữ liệu từ cart theo tên món ăn mới
const cart = JSON.parse(DataStorage.get('cart')) || {};
// Kiểm tra số lượng món ăn trong cart
const amount = cart[dish.id] !== undefined ? cart[dish.id] : 0;
setCartAmount(amount); // Cập nhật số lượng
setShow(true); // Hiển thị modal
}
}
function setIncrease() {
setCartAmount(cartAmount + 1);
}
function setDecrease() {
if (cartAmount > 0) {
setCartAmount(cartAmount - 1);
}
}
useEffect(() => {
const fetchMenuItems = async () => {
try {
const menuItemsByType = {};
for (const item of categoryMapper) {
// Gọi API để lấy món theo itemType
const response = await axios.get(process.env.REACT_APP_API_URL + `/menu-items?filter.item_type=${item.itemType}`);
// Lưu danh sách món theo itemType
menuItemsByType[item.itemType] = response.data.data;
}
console.log(menuItemsByType);
setMenuItems(menuItemsByType);
setLoading(false);
CacheStorage.set('menuItems',JSON.stringify(menuItemsByType));
} catch (error) {
console.error('Error fetching menu items:', error);
setLoading(false);
}
};
if (CacheStorage.get('menuItems')) {
setMenuItems(JSON.parse(CacheStorage.get('menuItems')));
setLoading(false);
} else {
fetchMenuItems();
}
}, []);
let modalContent;
if (DataStorage.get('isLoggedIn') === null) {
modalContent = (
{selectedDish?.description}
Đang tải thực đơn...
); } else { menuContent = (