import { format } from "date-fns"; import { ptBR } from "date-fns/locale"; import { useState } from "react"; import { useQuery } from "react-query"; import { useParams, Link } from "react-router-dom"; import api from "../../services/api"; // Função auxiliar para formatar data com validação const formatDate = ( date: string | Date | null | undefined, formatStr: string, ): string => { if (!date) return "Data não disponível"; try { const dateObj = typeof date === "string" ? parseISO(date) : date; return format(dateObj, formatStr, { locale: ptBR }); } catch (error) { console.error("Erro ao formatar data:", error); return "Data inválida"; } }; export function AtendimentoDetalhes() { const { id } = useParams(); const [loading, setLoading] = useState(false); const [cancelModalOpen, setCancelModalOpen] = useState(false); const [justificativa, setJustificativa] = useState(""); const [isCancelling, setIsCancelling] = useState(false); const { data: atendimento, refetch } = useQuery( ["atendimento", id], async () => { const response = await api.get(`/atendimentos/${id}`); return response.data; }, ); const handleCancelar = async () => { if (!justificativa.trim()) { alert("A justificativa é obrigatória"); return; } try { setIsCancelling(true); await api.patch(`/atendimentos/${id}/status`, { status: "CANCELADO", justificativa, }); await refetch(); setCancelModalOpen(false); } catch (error) { console.error("Erro ao cancelar atendimento:", error); alert("Erro ao cancelar atendimento"); } finally { setIsCancelling(false); } }; if (!atendimento) { return (
Protocolo: {atendimento.protocolo}
{atendimento.cliente.nome}
{formatDate(atendimento.dataAtendimento, "PPpp")}
{atendimento.usuario.nome}
{anexo.nome}
{formatDate(anexo.dataCriacao, "PP")}
Esta ação não pode ser desfeita. O atendimento será marcado como cancelado, mas manterá seu protocolo e histórico.
{atendimento.justificativaCancelamento}
Cancelado em: {formatDate(atendimento.dataAtualizacao, "PPpp")}