Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/detail restaurant #52

Merged
merged 2 commits into from
Dec 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions src/components/Dashboard/Nav.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ const navArrayRestaurant = [
</svg>
</span>
),
label: 'Dashboard',
label: 'Doanh thu',
navigate: '/v2/dashboard/restaurant',
},
{
Expand Down Expand Up @@ -67,7 +67,7 @@ const navArrayRestaurant = [
</svg>
</span>
),
label: 'Manage Items',
label: 'Quản lý món ăn',
navigate: '/v2/dashboard/restaurant/manage-items',
},
{
Expand Down Expand Up @@ -99,7 +99,7 @@ const navArrayRestaurant = [
</svg>
</span>
),
label: 'Manange Orders',
label: 'Quản lý đơn hàng',
navigate: '/v2/dashboard/restaurant/manage-orders',
},
{
Expand All @@ -124,7 +124,7 @@ const navArrayRestaurant = [
</svg>
</span>
),
label: 'Send Email',
label: 'Quản lý Email',
navigate: '/v2/dashboard/restaurant/send-email',
},
{
Expand Down Expand Up @@ -195,7 +195,7 @@ const navArrayAdmin = [
</svg>
</span>
),
label: 'Manage Account',
label: 'Quản lý người dùng',
navigate: '/v2/dashboard/admin/account',
},
{
Expand Down Expand Up @@ -251,7 +251,7 @@ const navArrayAdmin = [
</svg>
</span>
),
label: 'Manage Restaurant',
label: 'Quản lý nhà hàng',
navigate: '/v2/dashboard/admin/restaurant',
},
{
Expand Down Expand Up @@ -319,7 +319,7 @@ const navArrayAdmin = [
</svg>
</span>
),
label: 'Specialty Food',
label: 'Các món đặc sản',
navigate: '/v2/dashboard/admin/specialty-food',
},
]
Expand Down
68 changes: 7 additions & 61 deletions src/pages/adminDashboard/SpecialtyFood.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@ import React, { useState, useEffect } from 'react'
import api from '~/features/api'
import LoadingOverlay from 'react-loading-overlay-ts'
import { toast } from 'react-toastify'

import AddCircleIcon from '@mui/icons-material/AddCircle'
const SpecialtyFood = () => {
const [specialFood, setSpecialFood] = useState(null)
const [isLoading, setIsLoading] = useState(true)
const [isModalOpen, setIsModalOpen] = useState(false)
const [isEditFood, setIsEditFood] = useState(false)
const [editingFood, setEditingFood] = useState(null)

const [imgFood, setImgFood] = useState(null)
Expand Down Expand Up @@ -64,70 +63,17 @@ const SpecialtyFood = () => {
setImgFood(e.target.files[0])
}

// const handleSaveFood = async () => {
// const formData = new FormData()
// formData.append('name', nameFood)
// if (imgFood) {
// formData.append('image', imgFood)
// }

// try {
// if (editingFood) {
// await api.patch(`/admin/specialty-food/edit/${editingFood._id}`, formData)
// alert('Cập nhật món ăn thành công!')
// } else {
// await api.post('/admin/specialty-food/create', formData)
// alert('Thêm món ăn thành công!')
// }
// fetchAllSpecialFood()
// closeModal()
// } catch (error) {
// console.error('Error saving food:', error)
// alert(error.message || 'Đã xảy ra lỗi!')
// }
// }

// const handleSaveFood = async () => {
// const formData = new FormData();
// formData.append('name', nameFood);
// if (imgFood && typeof imgFood !== 'string') {
// formData.append('image', imgFood);
// }
// console.log(nameFood)
// console.log(imgFood)
// try {
// if (editingFood) {
// await api.patch(`/admin/specialty-food/edit/${editingFood._id}`, formData);
// alert('Cập nhật món ăn thành công!');
// } else {
// // Tạo món ăn mới
// await api.post('/admin/specialty-food/create', formData);
// alert('Thêm món ăn thành công!');
// }
// fetchAllSpecialFood();
// closeModal();
// } catch (error) {
// console.error('Error saving food:', error);
// alert(error.message || 'Đã xảy ra lỗi!');
// }
// };

const handleSaveFood = async () => {
const formData = new FormData()
formData.append('name', nameFood)

// Nếu người dùng tải lên ảnh mới, thêm ảnh vào formData
if (imgFood && typeof imgFood !== 'string') {
formData.append('image', imgFood)
}
console.log(imgFood)
try {
if (editingFood) {
// Cập nhật món ăn
await api.patch(`/admin/specialty-food/edit/${editingFood._id}`, formData)
toast.success('Món ăn đã được chỉnh sửa!')
} else {
// Tạo món ăn mới
await api.post('/admin/specialty-food/create', formData)
toast.success('Món ăn đã được thêm!')
}
Expand Down Expand Up @@ -167,10 +113,10 @@ const SpecialtyFood = () => {
QUẢN LÝ MÓN ĂN ĐẶC SẢN
</h1>
<button
className='px-2 py-2 text-white bg-green-500 rounded'
className='px-2 py-2 text-white bg-green-500 rounded '
onClick={() => openModal()}
>
Thêm món đặc sản
<AddCircleIcon /> Thêm món đặc sản
</button>
</div>
<table className='w-full border-2 mt-10'>
Expand Down Expand Up @@ -199,16 +145,16 @@ const SpecialtyFood = () => {
<td>{item.name}</td>
<td>
<button
className='px-2 py-1 bg-green-500 text-white rounded'
className='inline-flex items-center gap-1 px-3 py-2 bg-blue-400 text-white rounded-lg shadow hover:bg-blue-400 transition-all duration-300 ml-3'
onClick={() => openModal(item)}
>
Chỉnh sửa
<i className='bx bx-edit mr-1'></i>Chỉnh sửa
</button>
<button
className='px-2 py-1 bg-red-700 text-white rounded ml-2'
className='inline-flex items-center gap-1 px-3 py-2 bg-red-700 text-white rounded-lg shadow hover:bg-red-500 transition-all duration-300 ml-3'
onClick={() => handleDeleteFood(item._id)}
>
Xóa
<i className='bx bx-trash mr-1'></i>Xóa
</button>
</td>
</tr>
Expand Down
2 changes: 1 addition & 1 deletion src/pages/adminDashboard/components/PopupDelete.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export default function PopupDelete({ handleDeleteAccount, userId }) {
return (
<>
<button className='bg-red-500 text-white px-4 py-2 rounded' onClick={handleClickOpen}>
Xóa tài khoản
<i className='bx bx-trash'></i> Xóa tài khoản
</button>
<Dialog
open={open}
Expand Down
16 changes: 8 additions & 8 deletions src/pages/adminDashboard/manageRestaurant.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,8 @@ const ManageRestaurant = () => {
<LoadingOverlay active={isLoading} spinner Text='Loading ...' className='h-[650px]'>
<div className='relative mx-5 my-2 px-3 py-4'>
<div className='mb-3'>
<h3 className='text-3xl font-[700] font-family color-1 text-left mb-4 '>
Manage Restaurant 👋
<h3 className='font-family color-1 text-left mb-4 up text-[40px] text-primary font-bold'>
QUẢN LÝ NHÀ HÀNG
</h3>
</div>
<div className='flex items-center gap-10 mb-5'>
Expand Down Expand Up @@ -176,21 +176,21 @@ const ManageRestaurant = () => {
</div>
<input
className=' outline-none placeholder:text-slate-400 px-3 py-2 box-border '
placeholder='Search Restaurant...'
placeholder='Tìm kiếm nhà hàng...'
/>
</div>
<button className='border-2 border-orange-500 text-orange-500 rounded-sm px-3 py-1'>
Apply
Áp dụng
</button>
</div>
<div className='px-6 pb-6'>
<table className='w-full border-2 border-collapse border-solid border-[rbg(200,200,200)]'>
<thead>
<tr>
<th>Restaurant Name</th>
<th>Phone</th>
<th>Status</th>
<th>Handle</th>
<th className='bg-secondary text-accent text-[20px]'>Tên nhà hàng</th>
<th className='bg-secondary text-accent text-[20px]'>Số điện thoại</th>
<th className='bg-secondary text-accent text-[20px]'>Trạng thái</th>
<th className='bg-secondary text-accent text-[20px]'>Xử lý</th>
</tr>
</thead>
<tbody>
Expand Down
36 changes: 16 additions & 20 deletions src/pages/restaurantDashboard/manageItems.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
SuccessfulNotification,
FailedNotification,
} from '../../components/common/Notification.jsx'
import AddCircleIcon from '@mui/icons-material/AddCircle'

const ManageItems = () => {
const dispatch = useDispatch()
Expand Down Expand Up @@ -95,31 +96,26 @@ const ManageItems = () => {
}}
>
<div className='relative mx-5 my-2 px-3 py-4'>
<div className='mb-3'>
<h1 className="text-4xl font-medium font-['Oswald'] text-center text-primary uppercase">
Quản lý món ăn
<div className='flex justify-between items-center mt-2 mb-7'>
<h1 className='text-3xl font-bold text-[40px] text-center text-primary'>
QUẢN LÝ CÁC MÓN ĂN
</h1>
</div>
<div className='flex justify-between items-center mb-4'>
<button
onClick={handleCreateItem}
className='bg-blue-600 text-white font-bold rounded-md px-4 py-2'
>
<button onClick={handleCreateItem} className='px-2 py-2 text-white bg-green-500 rounded'>
<AddCircleIcon />
Thêm món mới
</button>
</div>

<div className='bg-white shadow-md rounded-lg p-6'>
<table className='w-full border-separate border-spacing-0'>
<thead>
<tr className='bg-gray-200'>
<th className='p-4 text-center'>Hình ảnh</th>
<th className='p-4 text-center'>Tên món</th>
<th className='p-4 text-center'>Loại</th>
<th className='p-4 text-center'>Giá</th>
<th className='p-4 text-center'>Số lượng</th>
<th className='p-4 text-center'>Giảm giá</th>
<th className='p-4 text-center'>Hành động</th>
<th className='bg-secondary text-accent text-[20px]'>Hình ảnh</th>
<th className='bg-secondary text-accent text-[20px]'>Tên món</th>
<th className='bg-secondary text-accent text-[20px]'>Loại</th>
<th className='bg-secondary text-accent text-[20px]'>Giá</th>
<th className='bg-secondary text-accent text-[20px]'>Số lượng</th>
<th className='bg-secondary text-accent text-[20px]'>Giảm giá</th>
<th className='bg-secondary text-accent text-[20px]'>Hành động</th>
</tr>
</thead>
<tbody>
Expand All @@ -140,7 +136,7 @@ const ManageItems = () => {
<td className='p-4'>{item.discount}</td>
<td className='p-4 text-center align-middle'>
<button
className='inline-flex items-center gap-1 px-3 py-2 bg-yellow-400 text-white rounded-lg shadow hover:bg-yellow-500 transition-all duration-300'
className='inline-flex items-center gap-1 px-3 py-2 bg-blue-400 text-white rounded-lg shadow hover:bg-yellow-500 transition-all duration-300'
onClick={() => {
setCurrentEditedId(item._id)
setRawData(item)
Expand All @@ -151,7 +147,7 @@ const ManageItems = () => {
<i className='bx bx-edit'></i> Sửa
</button>
<button
className='inline-flex items-center gap-1 px-3 py-2 bg-red-400 text-white rounded-lg shadow hover:bg-red-500 transition-all duration-300 ml-3'
className='inline-flex items-center gap-1 px-3 py-2 bg-red-700 text-white rounded-lg shadow hover:bg-red-500 transition-all duration-300 ml-3'
onClick={() => handleDeleteItem(item._id)}
>
<i className='bx bx-trash'></i> Xóa
Expand All @@ -162,7 +158,7 @@ const ManageItems = () => {
) : (
<tr>
<td colSpan='7' className='text-center p-4'>
Không có món nào
Không có món nào.
</td>
</tr>
)}
Expand Down
Loading
Loading