'use client'; import { useMunicipalityQuery, useParishQuery, useStateQuery, } from '@/feactures/location/hooks/use-query-location'; import { Badge } from '@repo/shadcn/badge'; import { Button } from '@repo/shadcn/button'; import { Card, CardContent, CardHeader, CardTitle, } from '@repo/shadcn/components/ui/card'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@repo/shadcn/components/ui/dialog'; import { ScrollArea } from '@repo/shadcn/components/ui/scroll-area'; import { Separator } from '@repo/shadcn/components/ui/separator'; import { ExternalLink, Factory, MapPin, Package, Wrench, X, } from 'lucide-react'; import React, { useState } from 'react'; import { TrainingSchema } from '../schemas/training'; interface TrainingViewModalProps { data: TrainingSchema | null; isOpen: boolean; onClose: () => void; } export function TrainingViewModal({ data, isOpen, onClose, }: TrainingViewModalProps) { const [selectedImage, setSelectedImage] = useState(null); const { data: statesData } = useStateQuery(); const { data: municipalitiesData } = useMunicipalityQuery(data?.state || 0); const { data: parishesData } = useParishQuery(data?.municipality || 0); if (!data) return null; const stateName = statesData?.data?.find( (s: any) => s.id === data.state, )?.name; const municipalityName = municipalitiesData?.data?.find( (m: any) => m.id === data.municipality, )?.name; const parishName = parishesData?.data?.find( (p: any) => p.id === data.parish, )?.name; const DetailItem = ({ label, value }: { label: string; value: any }) => (

{label}

{value !== null && value !== undefined && value !== '' ? value : 'N/A'}

); const Section = ({ title, icon: Icon, children, }: { title: string; icon?: React.ElementType; children: React.ReactNode; }) => ( {Icon && } {title} {children} ); const BooleanBadge = ({ value }: { value?: boolean | null }) => ( {value ? 'Sí' : 'No'} ); return ( <> {data.ospName} {data.ospType} • {data.ospRif} •{' '} {data.currentStatus}
{/* 1. Datos de la Visita */}
{/* 2. Sectores y Actividad */}
{/* 3. Infraestructura y Ubicación */}
} /> } />

Dirección

{data.ospAddress}

{data.ospGoogleMapsLink && ( )}
{/* 4. LISTAS DETALLADAS (Lo nuevo) */} {/* PRODUCTOS */} Productos y Mano de Obra {data.productList?.length || 0} {data.productList?.map((prod: any, idx: number) => (

{prod.productName}

Mano de obra:{' '} {Number(prod.menCount || 0) + Number(prod.womenCount || 0)}

{prod.description}

{/* Detalles de distribución si existen */} {(prod.internalQuantity || prod.externalQuantity) && ( <>
{prod.internalQuantity && (
DISTRIBUCIÓN INTERNA

Cant: {prod.internalQuantity}{' '} {prod.internalUnit}

{prod.internalDescription}

)} {prod.externalQuantity && (
EXPORTACIÓN ({prod.externalCountry})

Cant: {prod.externalQuantity}{' '} {prod.externalUnit}

{prod.externalDescription}

)}
)}
))} {(!data.productList || data.productList.length === 0) && (

No hay productos registrados.

)}
{/* EQUIPAMIENTO Y PRODUCCIÓN */}
Equipamiento {data.equipmentList?.map((eq: any, idx: number) => (

{eq.machine}

{eq.specifications}

{eq.quantity}
))} {(!data.equipmentList || data.equipmentList.length === 0) && (

No hay equipamiento registrado.

)}
Materia Prima {data.productionList?.map((mat: any, idx: number) => (

{mat.rawMaterial}

{mat.supplyType}

Cant: {mat.quantity} {mat.unit}
))} {(!data.productionList || data.productionList.length === 0) && (

No hay materia prima registrada.

)}
{/* 5. Comuna y Responsable */}
{/* 6. Observaciones */} {(data.generalObservations || data.paralysisReason) && ( Observaciones {data.generalObservations && (

Generales

{data.generalObservations}

)} {data.paralysisReason && (

Motivo de Paralización

{data.paralysisReason}

)}
)} {/* 7. Fotos */}
{[data.photo1, data.photo2, data.photo3].some(Boolean) ? (
{[data.photo1, data.photo2, data.photo3].map( (photo, idx) => photo && (
setSelectedImage(photo)} > {`Evidencia
), )}
) : (

No hay imágenes cargadas.

)}
{/* Lightbox para imágenes */} setSelectedImage(null)} > Imagen Ampliada
{selectedImage && ( Vista ampliada )}
); }