import React, { useEffect, useMemo, useState } from 'react'; import { FiRefreshCw, FiClipboard, FiClock, FiPhone, FiMapPin, FiPackage } from 'react-icons/fi'; import toast from 'react-hot-toast'; import '../styles/pedidos-catalogo.css'; const formatarMoeda = (valor) => { return (Number(valor) || 0).toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' }); }; const formatarData = (dataISO) => { if (!dataISO) return '-'; try { return new Date(dataISO).toLocaleString('pt-BR', { dateStyle: 'short', timeStyle: 'short' }); } catch (error) { return dataISO; } }; const PedidosCatalogo = () => { const [pedidos, setPedidos] = useState([]); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const carregarPedidos = async () => { try { setLoading(true); setError(null); const response = await fetch('/api/catalogo/pedidos'); if (!response.ok) { throw new Error('Erro ao carregar pedidos'); } const data = await response.json(); setPedidos(Array.isArray(data) ? data : []); } catch (err) { console.error('Erro ao carregar pedidos:', err); setError('Não foi possível carregar os pedidos.'); toast.error('Erro ao carregar pedidos do catálogo.'); } finally { setLoading(false); } }; useEffect(() => { carregarPedidos(); }, []); const pedidosOrdenados = useMemo(() => { return [...pedidos].sort((a, b) => new Date(b.createdAt || 0) - new Date(a.createdAt || 0)); }, [pedidos]); return (

Pedidos do Catálogo

Pedidos registrados automaticamente através do catálogo online

{error && (
{error}
)} {pedidosOrdenados.length === 0 && !loading ? (

Nenhum pedido registrado ainda

Assim que um cliente finalizar uma compra no catálogo, o pedido aparecerá aqui.
) : (
{pedidosOrdenados.map((pedido) => (
{pedido.codigo || pedido.id || 'Pedido sem ID'}
{formatarData(pedido.createdAt)}
{pedido.cliente?.nome || 'Cliente não informado'}
{pedido.cliente?.whatsapp || 'Sem contato'} {pedido.cliente?.endereco && ( {pedido.cliente.endereco} )}

Itens

{(pedido.itens || []).map((item, index) => (
{item.nome}
{item.codigo || 'Sem ID'} Tam: {item.tamanho || '-'} Cor: {item.cor || '-'}
{item.quantidade || 0} x {formatarMoeda(item.preco)} {formatarMoeda(item.subtotal)}
))}
))}
)}
); }; export default PedidosCatalogo;