import { useEffect, useState } from 'react' import { adminService, Order, OrderItem } from '@/services/adminService' const STATUS_OPTIONS = ['Pendente', 'Pago', 'Faturado', 'Entregue'] export function OrdersPage() { const [orders, setOrders] = useState([]) const [loading, setLoading] = useState(true) const [page, setPage] = useState(1) const [total, setTotal] = useState(0) const [selectedOrder, setSelectedOrder] = useState(null) const pageSize = 10 useEffect(() => { loadOrders() }, [page]) const loadOrders = async () => { setLoading(true) try { const data = await adminService.listOrders(page, pageSize) setOrders(data.orders || []) setTotal(data.total) } catch (err) { console.error('Error loading orders:', err) } finally { setLoading(false) } } const handleStatusChange = async (id: string, status: string) => { try { await adminService.updateOrderStatus(id, status) loadOrders() } catch (err) { console.error('Error updating order status:', err) alert('Erro ao atualizar status') } } const handleDelete = async (id: string) => { if (!confirm('Tem certeza que deseja excluir este pedido?')) return try { await adminService.deleteOrder(id) loadOrders() } catch (err) { console.error('Error deleting order:', err) alert('Erro ao excluir pedido') } } const formatPrice = (cents: number) => { return (cents / 100).toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' }) } const formatDate = (dateStr: string) => { return new Date(dateStr).toLocaleDateString('pt-BR', { day: '2-digit', month: '2-digit', year: 'numeric', hour: '2-digit', minute: '2-digit' }) } const getStatusColor = (status: string) => { switch (status) { case 'Pendente': return 'bg-yellow-100 text-yellow-800' case 'Pago': return 'bg-blue-100 text-blue-800' case 'Faturado': return 'bg-purple-100 text-purple-800' case 'Entregue': return 'bg-green-100 text-green-800' default: return 'bg-gray-100 text-gray-800' } } const totalPages = Math.ceil(total / pageSize) return (

Pedidos

{/* Table */}
{loading ? ( ) : orders.length === 0 ? ( ) : ( orders.map((order) => ( )) )}
ID Data Status Total Ações
Carregando...
Nenhum pedido encontrado
{order.id.substring(0, 8)}... {formatDate(order.created_at)} {formatPrice(order.total_cents)}
{/* Pagination */} {totalPages > 1 && (

Mostrando {(page - 1) * pageSize + 1} a {Math.min(page * pageSize, total)} de {total}

)} {/* Order Detail Modal */} {selectedOrder && (

Detalhes do Pedido

ID:

{selectedOrder.id}

Status:

{selectedOrder.status}

Comprador ID:

{selectedOrder.buyer_id}

Vendedor ID:

{selectedOrder.seller_id}

{selectedOrder.items && selectedOrder.items.length > 0 && (

Itens

{selectedOrder.items.map((item, idx) => ( ))}
Produto Qtd Valor
{item.product_id.substring(0, 8)}... {item.quantity} {formatPrice(item.unit_cents * item.quantity)}
)}
Total: {formatPrice(selectedOrder.total_cents)}
)}
) }