import React, { useState } from 'react'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Edit, Trash2, BarChart3, FileText } from 'lucide-react'; import { format } from 'date-fns'; import { ptBR } from 'date-fns/locale'; import { CronogramaOf } from '@/types/cronograma'; import { toast } from 'sonner'; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from "@/components/ui/alert-dialog"; interface CronogramaTableProps { cronogramas: CronogramaOf[]; onEdit: (cronograma: CronogramaOf) => void; onDelete: (cronogramaId: string) => void; onViewChart: (cronograma: CronogramaOf) => void; onViewPDF: (cronograma: CronogramaOf) => void; canEdit?: boolean; canDelete?: boolean; } export const CronogramaTable: React.FC = ({ cronogramas, onEdit, onDelete, onViewChart, onViewPDF, canEdit = true, canDelete = true, }) => { const calcularDiasCorridos = (dataInicio: string, dataFim: string) => { const inicio = new Date(dataInicio); const fim = new Date(dataFim); const diffTime = Math.abs(fim.getTime() - inicio.getTime()); const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)) + 1; return diffDays; }; return (
OF Gestor Revisão Processos Peso Total (kg) Período Total Dias Corridos Ações {cronogramas.map((cronograma) => { const primeiroProcesso = cronograma.processos[0]; const ultimoProcesso = cronograma.processos[cronograma.processos.length - 1]; const dataInicio = primeiroProcesso?.data_inicio; const dataFim = ultimoProcesso?.data_fim; const diasCorridos = dataInicio && dataFim ? calcularDiasCorridos(dataInicio, dataFim) : 0; return (
{cronograma.ordem_fabricacao?.num_of}
{cronograma.ordem_fabricacao?.descritivo}
{cronograma.gestor_profile?.full_name || 'N/A'}
Rev. {cronograma.revisao}
{cronograma.processos.length} processo{cronograma.processos.length !== 1 ? 's' : ''}
{cronograma.peso_total ? `${Number(cronograma.peso_total).toLocaleString('pt-BR')} kg` : 'N/A'}
{dataInicio && dataFim ? (
{format(new Date(dataInicio + 'T00:00:00'), 'dd/MM/yyyy', { locale: ptBR })}
até
{format(new Date(dataFim + 'T00:00:00'), 'dd/MM/yyyy', { locale: ptBR })}
) : ( - )}
{diasCorridos} dias
{canEdit && ( )} {canDelete && ( Remover Cronograma Tem certeza que deseja remover o cronograma da OF {cronograma.ordem_fabricacao?.num_of}? Esta ação não pode ser desfeita. Cancelar cronograma.id && onDelete(cronograma.id)} className="bg-red-600 hover:bg-red-700 text-white" > Remover )}
); })}
); };