From 79bc2e227563a1697105ec2f1dd75fa00c2996c9 Mon Sep 17 00:00:00 2001
From: Tiago Yamamoto
- R$ {pedido.valor.toFixed(2)} - {pedido.comprador} + R${" "} + {Number.isFinite(pedido.valor) + ? pedido.valor.toFixed(2) + : "0.00"}{" "} + - {pedido.comprador}
diff --git a/saveinmed-frontend/src/hooks/useDashboardData.ts b/saveinmed-frontend/src/hooks/useDashboardData.ts index c8283a5..42397c0 100644 --- a/saveinmed-frontend/src/hooks/useDashboardData.ts +++ b/saveinmed-frontend/src/hooks/useDashboardData.ts @@ -78,10 +78,12 @@ export const useDashboardData = ({ const activitiesData = await activitiesResponse.json(); if (activitiesData.success) { - setAtividades(activitiesData.data || []); + setAtividades( + Array.isArray(activitiesData.data) ? activitiesData.data : [] + ); console.log( `✅ [useDashboardData] Atividades obtidas:`, - activitiesData.data?.length || 0 + Array.isArray(activitiesData.data) ? activitiesData.data.length : 0 ); } @@ -98,10 +100,12 @@ export const useDashboardData = ({ const pendingData = await pendingResponse.json(); if (pendingData.success) { - setPedidosPendentes(pendingData.data || []); + setPedidosPendentes( + Array.isArray(pendingData.data) ? pendingData.data : [] + ); console.log( `✅ [useDashboardData] Pedidos pendentes obtidos:`, - pendingData.data?.length || 0 + Array.isArray(pendingData.data) ? pendingData.data.length : 0 ); } } catch (err) { diff --git a/saveinmed-frontend/src/services/dashboardService.ts b/saveinmed-frontend/src/services/dashboardService.ts index cd6c8e1..03dbea8 100644 --- a/saveinmed-frontend/src/services/dashboardService.ts +++ b/saveinmed-frontend/src/services/dashboardService.ts @@ -38,6 +38,20 @@ interface Documento { [key: string]: any; } +const parseValor = (value: unknown, fallback = 0): number => { + if (typeof value === 'number' && Number.isFinite(value)) { + return value; + } + + if (typeof value === 'string') { + const normalized = value.replace(',', '.'); + const parsed = Number(normalized); + return Number.isFinite(parsed) ? parsed : fallback; + } + + return fallback; +}; + class DashboardService { /** * Obtém estatísticas do dashboard baseadas no nível do usuário @@ -265,11 +279,12 @@ class DashboardService { // Converter pedidos em atividades pedidos.forEach((pedido: Documento) => { + const valorTotal = parseValor(pedido['valor-total']); atividades.push({ id: pedido.$id, tipo: 'pedido', titulo: `Novo pedido recebido`, - descricao: `Pedido #${pedido.$id.substring(0, 8)} - R$ ${(pedido['valor-total'] || 0).toFixed(2)}`, + descricao: `Pedido #${pedido.$id.substring(0, 8)} - R$ ${valorTotal.toFixed(2)}`, data: pedido.$createdAt, status: pedido.status === 'pendente' ? 'novo' : 'atualizado', }); @@ -330,7 +345,7 @@ class DashboardService { id: pedido.$id, numero: `#${pedido.$id.substring(0, 8)}`, status: pedido.status, - valor: pedido['valor-total'] || 0, + valor: parseValor(pedido['valor-total']), comprador: pedido.comprador || 'N/A', data: pedido.$createdAt, }));