import { useMetricsByPortal, useMetricsBySystems, } from '@/app/hooks/useMetrics'; import logoAImg from '@/assets/images/a-agape.png'; import logoImg from '@/assets/images/agape-logo.png'; import { BuildingIcon, ChartLineUpIcon, SpinnerIcon, } from '@phosphor-icons/react'; import { motion } from 'framer-motion'; import * as React from 'react'; import { useSearchParams } from 'react-router-dom'; import { Navigation } from './navigation'; import ProfileCard from './ProfileCard'; import { StorySlide } from './story-slide'; export function RetrospectiveSlides() { const [searchParams] = useSearchParams(); const cpf = searchParams.get('cpf') || ''; const ano = searchParams.get('ano') ? parseInt(searchParams.get('ano')!) : new Date().getFullYear(); const { data: metricsPortal, isLoading: isLoadingPortal, error: errorPortal, } = useMetricsByPortal(cpf, ano); const { data: metricsSystems, isLoading: isLoadingSystems, error: errorSystems, } = useMetricsBySystems(cpf, ano); const [current, setCurrent] = React.useState(0); // Calcula slides baseado nos dados disponíveis const slides: number[] = []; slides.push(0); // Slide inicial if (metricsPortal && metricsPortal.length > 0) slides.push(1); // Slide com portal principal if ( (metricsPortal && metricsPortal.length > 0) || (metricsSystems && metricsSystems.length > 0) ) { slides.push(2); // Slide com podio de aplicações } slides.push(3); // Slide final const total = slides.length; const isLoading = isLoadingPortal || isLoadingSystems; const hasError = errorPortal || errorSystems; // Extrai total de acessos const totalAcessos = [ ...(metricsPortal || []), ...(metricsSystems || []), ].reduce((acc, item) => acc + item.totalAcessos, 0); // Top sistemas/portais por acessos const topItems = [...(metricsPortal || []), ...(metricsSystems || [])] .filter((item) => (item.nomeSistema || '').toLowerCase() !== 'agportal') .sort((a, b) => b.totalAcessos - a.totalAcessos) .slice(0, 5); const allItems = [...(metricsPortal || []), ...(metricsSystems || [])]; const aplicacoesCount = new Set( allItems.map((i) => (i.nomeSistema || '').trim()).filter((n) => !!n), ).size; const topAppName = topItems[0]?.nomeSistema ?? null; const topAppAcessos = topItems[0]?.totalAcessos ?? null; return (
{isLoading ? (

Carregando sua retrospectiva...

) : hasError ? (

Erro ao carregar dados

Verifique seu CPF e ano, e tente novamente.

) : ( <>
Ágape Logo Sua Retrospectiva
Ágape {ano}
Um ano de conquistas, eficiência e transparência na gestão pública Seus dados analisados: CPF ••••••••••• Transparência Eficiência Parceria
{metricsPortal && metricsPortal.length > 0 && (
{/* Coluna esquerda - Ícone e números principais */} {/* Ícone com efeito */}
{/* Título */} Acessos no AgPortal A porta de entrada para todas as aplicações {/* Número principal */}
{metricsPortal .reduce((acc, p) => acc + p.totalAcessos, 0) .toLocaleString('pt-BR')}

acessos em {ano}

{/* Estatísticas rápidas */}
{Math.round( metricsPortal.reduce( (acc, p) => acc + p.totalAcessos, 0, ) / 365, )}
Por dia
{Math.round( metricsPortal.reduce( (acc, p) => acc + p.totalAcessos, 0, ) / 12, ).toLocaleString('pt-BR')}
Por mês
{/* Coluna direita - Sistemas mais acessados (mantendo seu design) */}
Aplicativos Mais Acessados
{/* Lista de sistemas */}
{topItems.slice(0, 6).map((item, index) => { const medalColors = [ 'bg-yellow-400 text-yellow-900', 'bg-gray-300 text-gray-900', 'bg-orange-400 text-orange-900', 'bg-blue-400/20 text-blue-300', 'bg-purple-400/20 text-purple-300', 'bg-green-400/20 text-green-300', ]; const isMedal = index < 3; const medalColor = medalColors[index] || 'bg-white/20'; return (
{index === 0 && '🥇'} {index === 1 && '🥈'} {index === 2 && '🥉'} {index >= 3 && `#${index + 1}`}

{item.nomeSistema}

{item.totalAcessos.toLocaleString('pt-BR')}{' '} acessos

{( (item.totalAcessos / (topItems[0]?.totalAcessos || 1)) * 100 ).toFixed(0)} %

); })}
)}

A Ágape deseja a você um {ano + 1} repleto de sucesso!

Obrigado por fazer parte desta jornada de transformação digital na gestão pública. Sua dedicação é essencial para construirmos um serviço público mais eficiente e transparente.

© {ano} Ágape Sistemas e Tecnologia

O Futuro da Gestão Pública começa aqui!

console.log('Contact clicked')} />
)}
); }