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 (
Carregando sua retrospectiva...
Erro ao carregar dados
Verifique seu CPF e ano, e tente novamente.
acessos em {ano}
{item.nomeSistema}
{item.totalAcessos.toLocaleString('pt-BR')}{' '} acessos
{( (item.totalAcessos / (topItems[0]?.totalAcessos || 1)) * 100 ).toFixed(0)} %
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!