import React from 'react'; import { Trophy, DollarSign, TrendingUp, MapPin, Users, Calendar, Target } from 'lucide-react'; import { LotomaniaResult } from '../types'; interface PrizeAnalysisProps { result: LotomaniaResult; className?: string; } const PrizeAnalysis: React.FC = ({ result, className = '' }) => { // Formatação de valores monetários const formatCurrency = (value: number): string => { return new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL', minimumFractionDigits: 2 }).format(value); }; // Formatação de números const formatNumber = (value: number): string => { return new Intl.NumberFormat('pt-BR').format(value); }; // Calcular total de ganhadores const totalGanhadores = result.premiacoes?.reduce((total, premio) => total + premio.ganhadores, 0) || 0; // Calcular total de prêmios distribuídos const totalPremios = result.premiacoes?.reduce((total, premio) => total + (premio.valorPremio * premio.ganhadores), 0) || 0; // Verificar se houve ganhador principal (20 acertos) const ganhadorPrincipal = result.premiacoes?.find(p => p.acertos === 20); const temGanhadorPrincipal = ganhadorPrincipal && ganhadorPrincipal.ganhadores > 0; return (
{/* Header */}

Análise de Prêmios

Concurso {result.concurso} - {result.data}

{/* Status do Concurso */}

Total Arrecadado

{formatCurrency(result.valorArrecadado || 0)}

Status do Prêmio Principal

{temGanhadorPrincipal ? '🎯 Ganho!' : '🔄 Acumulou'}

Próximo Concurso

{formatCurrency(result.valorEstimadoProximoConcurso || 0)}

{/* Informações do Sorteio */}

Informações do Sorteio

Local:

{result.localSorteio || 'Não informado'}

Próximo Concurso:

{result.numeroProximoConcurso} - {result.dataProximoConcurso}

Total de Ganhadores:

{formatNumber(totalGanhadores)}

{/* Tabela de Premiações */}

Premiações por Faixa

{result.premiacoes?.map((premio, index) => { const totalFaixa = premio.valorPremio * premio.ganhadores; const isMainPrize = premio.acertos === 20; const hasWinners = premio.ganhadores > 0; return ( ); })}
Faixa Acertos Ganhadores Prêmio Individual Total Pago
{isMainPrize && } {premio.faixa}ª
{premio.acertos} acertos {formatNumber(premio.ganhadores)} {formatCurrency(premio.valorPremio)} {formatCurrency(totalFaixa)}
TOTAL DISTRIBUÍDO - {formatCurrency(totalPremios)}
{/* Ganhadores por Cidade */} {result.ganhadores && result.ganhadores.length > 0 && (

Ganhadores por Cidade

{result.ganhadores.map((ganhador, index) => (

{ganhador.municipio}

{ganhador.uf}

{ganhador.ganhadores}

{ganhador.ganhadores === 1 ? 'ganhador' : 'ganhadores'}

))}
)} {/* Estatísticas Adicionais */}

Data do Sorteio

{result.data}

% Distribuído

{result.valorArrecadado ? ((totalPremios / result.valorArrecadado) * 100).toFixed(1) : 0}%

Acumulado

{formatCurrency(result.valorAcumuladoProximoConcurso || 0)}

Total Ganhadores

{formatNumber(totalGanhadores)}

); }; export default PrizeAnalysis;