diff --git a/RestroHub-FrontEnd/src/components/admin/orders/orderComponents/OrderCard.jsx b/RestroHub-FrontEnd/src/components/admin/orders/orderComponents/OrderCard.jsx index 003fe02..b8c0cd1 100644 --- a/RestroHub-FrontEnd/src/components/admin/orders/orderComponents/OrderCard.jsx +++ b/RestroHub-FrontEnd/src/components/admin/orders/orderComponents/OrderCard.jsx @@ -97,20 +97,30 @@ const OrderCard = ({ order, onStatusUpdate }) => { // ------------------------------------ // HANDLER // ------------------------------------ + // Map frontend status to backend enum + const statusMap = { + cooking: 'PREPARING', + ready: 'READY', + billed: 'COMPLETED', + complete: 'COMPLETED', + pending: 'PENDING', + }; + const handleAction = async () => { if (!action) return; try { setUpdating(true); - // 🔌 UNCOMMENT WHEN API READY - // await api.put(`/api/orders/${order.id}/status`, { status: action.next }); - // toast.success(`Order #${order.id} → ${action.label}`); + const backendStatus = statusMap[action.next] || action.next.toUpperCase(); + + await api.patch(`/secure/api/v1/orders/${order.id}/status`, { + status: backendStatus, + }); - await new Promise((resolve) => setTimeout(resolve, 400)); onStatusUpdate(order.id, action.next); } catch (err) { - console.error('Failed to update order:', err); + console.error('Failed to update order status:', err); } finally { setUpdating(false); } diff --git a/RestroHub-FrontEnd/src/components/admin/orders/orderComponents/OrdersGrid.jsx b/RestroHub-FrontEnd/src/components/admin/orders/orderComponents/OrdersGrid.jsx index cbb7a0e..2ee772e 100644 --- a/RestroHub-FrontEnd/src/components/admin/orders/orderComponents/OrdersGrid.jsx +++ b/RestroHub-FrontEnd/src/components/admin/orders/orderComponents/OrdersGrid.jsx @@ -3,9 +3,6 @@ import { RefreshCw, AlertCircle, ClipboardList } from 'lucide-react'; import OrderCard from './OrderCard'; import api from "@services/common/api"; -// ============================================ -// SKELETON (Private) -// ============================================ const OrderCardSkeleton = () => (
@@ -45,21 +42,22 @@ const OrderCardSkeleton = () => (
); -// ============================================ -// MAIN COMPONENT -// ============================================ -const OrdersGrid = ({ activeFilter, searchQuery, onOrdersChange }) => { +<<<<<<< HEAD +// =====================================// MAIN COMPONENT +// =====================================const OrdersGrid = ({ activeFilter, searchQuery, onOrdersChange }) => { const [orders, setOrders] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [refreshing, setRefreshing] = useState(false); +<<<<<<< HEAD // Sync orders up to parent so OrderFilters gets real counts const syncOrders = (updated) => { setOrders(updated); onOrdersChange?.(updated); }; +<<<<<<< HEAD // ------------------------------------ // FALLBACK DATA // ------------------------------------ @@ -112,21 +110,15 @@ const OrdersGrid = ({ activeFilter, searchQuery, onOrdersChange }) => { }, ]; - // ------------------------------------ - // FETCH - // ------------------------------------ useEffect(() => { fetchOrders(); - - // 🔌 UNCOMMENT: Auto-refresh every 30 seconds - // const interval = setInterval(fetchOrders, 30000); - // return () => clearInterval(interval); }, []); const fetchOrders = async () => { try { if (!loading) setRefreshing(true); setError(null); +<<<<<<< HEAD // 🔌 UNCOMMENT WHEN API READY // const response = await api.get('/api/orders'); @@ -138,6 +130,15 @@ const OrdersGrid = ({ activeFilter, searchQuery, onOrdersChange }) => { } catch (err) { console.error('Failed to fetch orders:', err); setError('Failed to load orders'); + const response = await api.get('/secure/api/v1/orders/branch/1/active'); + const data = response.data; + if (Array.isArray(data) && data.length > 0) { + syncOrders(data); + } else { + syncOrders(fallbackOrders); + } + } catch (err) { + console.warn('API not available, using fallback data:', err); syncOrders(fallbackOrders); } finally { setLoading(false); @@ -145,9 +146,6 @@ const OrdersGrid = ({ activeFilter, searchQuery, onOrdersChange }) => { } }; - // ------------------------------------ - // HANDLERS - // ------------------------------------ const handleStatusUpdate = (orderId, newStatus) => { if (newStatus === 'complete') { syncOrders(orders.filter((o) => o.id !== orderId)); @@ -172,9 +170,6 @@ const OrdersGrid = ({ activeFilter, searchQuery, onOrdersChange }) => { ); }); - // ------------------------------------ - // RENDER - // ------------------------------------ if (loading) { return (
@@ -219,15 +214,12 @@ const OrdersGrid = ({ activeFilter, searchQuery, onOrdersChange }) => { return (
- {/* Refresh indicator */} {refreshing && (
Refreshing orders...
)} - - {/* Orders Grid */}
{filteredOrders.map((order) => ( { /> ))}
- - {/* Results Count */}

Showing {filteredOrders.length} of {orders.length} orders @@ -248,4 +238,4 @@ const OrdersGrid = ({ activeFilter, searchQuery, onOrdersChange }) => { ); }; -export default OrdersGrid; \ No newline at end of file +export default OrdersGrid;