import { useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import axios from 'axios'; import { FormCard, PageContainer, PageHeader } from '../../components/layout'; import { useBreadcrumbs } from '../../hooks/useBreadcrumbs'; import { useToast } from '../../components/ui/Toast'; import { useWorkOrder, useUpdateWorkOrder } from '../../hooks/useWorkOrders'; import { OrdemServicoForm } from './components/OrdemServicoForm'; import type { CreateWorkOrderRequest } from '../../types/work-order.types'; export function OrdemServicoEditPage() { const { id } = useParams<{ id: string }>(); const navigate = useNavigate(); const { showToast } = useToast(); const [apiError, setApiError] = useState(null); const { data: workOrder, isLoading, isError } = useWorkOrder(id ?? ''); const breadcrumbs = useBreadcrumbs({ ':name': workOrder?.name ?? '' }); const updateMutation = useUpdateWorkOrder(); async function handleSubmit(data: CreateWorkOrderRequest) { if (!id) return; setApiError(null); const updateData = { code: data.code, name: data.name, description: data.description, contractItemId: data.contractItemId, projectIds: data.projectIds, reservedUst: data.reservedUst, startDate: data.startDate, endDate: data.endDate, }; try { await updateMutation.mutateAsync({ id, data: updateData }); showToast('Ordem de serviço atualizada com sucesso', 'success'); navigate(`/ordens-servico/${id}`); } catch (err) { if (axios.isAxiosError(err)) { setApiError(err.response?.data?.message ?? 'Erro ao atualizar ordem de serviço.'); } else { setApiError('Erro ao atualizar ordem de serviço.'); } } } if (isLoading) { return (
); } if (isError || !workOrder) { return (
Ordem de serviço não encontrada
); } return ( navigate('/ordens-servico')} /> ); }