import { useEffect, useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { ArrowLeft, Loader2, FileText, MapPin, Calendar, AlertTriangle, CheckCircle, Clock, XCircle } from 'lucide-react'; import { api } from '@/hooks/useApi'; import { Avaliacao } from '@/types'; import DDSModal from '@/components/DDSModal'; const statusConfig = { pendente: { icon: Clock, color: 'bg-amber-100 text-amber-700', label: 'Pendente' }, em_analise: { icon: AlertTriangle, color: 'bg-blue-100 text-blue-700', label: 'Em Análise' }, aprovada: { icon: CheckCircle, color: 'bg-green-100 text-green-700', label: 'Aprovada' }, reprovada: { icon: XCircle, color: 'bg-red-100 text-red-700', label: 'Reprovada' }, }; const riscoConfig = { baixo: { color: 'text-green-600', bg: 'bg-green-100', label: 'Baixo' }, medio: { color: 'text-amber-600', bg: 'bg-amber-100', label: 'Médio' }, alto: { color: 'text-orange-600', bg: 'bg-orange-100', label: 'Alto' }, critico: { color: 'text-red-600', bg: 'bg-red-100', label: 'Crítico' }, }; export default function AvaliacaoDetail() { const navigate = useNavigate(); const { id } = useParams(); const [avaliacao, setAvaliacao] = useState(null); const [isLoading, setIsLoading] = useState(true); const [showDDSModal, setShowDDSModal] = useState(false); useEffect(() => { loadAvaliacao(); }, [id]); const loadAvaliacao = async () => { try { const response = await api.getAvaliacao(Number(id)); setAvaliacao(response.data); } catch (error) { console.error('Erro ao carregar avaliação:', error); // Mock setAvaliacao({ id: Number(id), propriedade_id: 1, data_avaliacao: '2024-02-01', status: 'aprovada', risco_desmatamento: 'baixo', score_risco: 15, observacoes: 'Propriedade em conformidade com EUDR. Documentação verificada e validada.', dds_gerada: true, dds_codigo: 'DDS-2024-00001', created_at: '2024-02-01', updated_at: '2024-02-01', propriedade: { id: 1, nome: 'Fazenda Santa Maria', codigo_car: 'MT-5107909-F4B8E35DB1', area_total_ha: 1250.5, cidade: 'Sinop', estado: 'MT', } as any, }); } finally { setIsLoading(false); } }; if (isLoading) { return (
); } if (!avaliacao) { return (

Avaliação não encontrada

); } const status = statusConfig[avaliacao.status]; const StatusIcon = status.icon; const risco = riscoConfig[avaliacao.risco_desmatamento]; return (
{/* Header */}

Avaliação #{avaliacao.id}

{avaliacao.propriedade?.nome}

{/* Main Info */}
{/* Status Card */}

Status da Avaliação

{status.label}

Status

{risco.label}

Risco

{avaliacao.score_risco}%

Score de Risco

{avaliacao.dds_gerada ? '✓ Gerada' : 'Pendente'}

DDS

{/* Observações */}

Observações

{avaliacao.observacoes || 'Sem observações registradas.'}

{/* DDS Info */} {avaliacao.dds_gerada && avaliacao.dds_codigo && (

DDS Gerada com Sucesso

Código: {avaliacao.dds_codigo}

Declaração compatível com TRACES NT

)}
{/* Sidebar */}
{/* Propriedade Info */}

Propriedade

{avaliacao.propriedade?.nome}

{avaliacao.propriedade?.cidade}/{avaliacao.propriedade?.estado}

Código CAR

{avaliacao.propriedade?.codigo_car || '-'}

Área Total

{avaliacao.propriedade?.area_total_ha?.toLocaleString('pt-BR')} ha

{/* Datas */}

Datas

Avaliação {new Date(avaliacao.data_avaliacao).toLocaleDateString('pt-BR')}
Criado em {new Date(avaliacao.created_at).toLocaleDateString('pt-BR')}
Atualizado em {new Date(avaliacao.updated_at).toLocaleDateString('pt-BR')}
{/* DDS Modal */} setShowDDSModal(false)} avaliacao={avaliacao} onSuccess={loadAvaliacao} />
); }