import React, { useEffect, useState } from 'react';
import { useParams, useNavigate } from 'react-router-dom';
import { ArrowLeft, MapPin, Calendar, Clock, DollarSign } from 'lucide-react';
import { useAuth } from '../contexts/AuthContext';
import { useData } from '../contexts/DataContext';
import { getAgendas } from '../services/apiService';
import { UserRole, AssignmentStatus } from '../types';
import EventScheduler from '../components/EventScheduler';
import EventLogistics from '../components/EventLogistics';
const EventDetails: React.FC = () => {
const { id } = useParams<{ id: string }>();
const navigate = useNavigate();
const { user } = useAuth();
const { events, loading } = useData();
const [calculatedStats, setCalculatedStats] = useState({ studios: 0 });
const event = events.find(e => e.id === id);
// No local loading state needed if events are loaded globally, or check if events.length === 0 && loading
if (!event) return
Evento não encontrado ou carregando...
;
if (!event) return Evento não encontrado.
;
// Check if user can view logistics
const isCoordinator = event?.assignments?.some(a => a.professionalId === (user?.professionalId || user?.id) && a.is_coordinator);
const canViewLogistics = isCoordinator || user?.role === UserRole.SUPERADMIN || user?.role === UserRole.EVENT_OWNER || user?.role === UserRole.BUSINESS_OWNER;
// Use event.date which is already YYYY-MM-DD from DataContext
const formattedDate = new Date(event.date + "T00:00:00").toLocaleDateString();
return (
{/* Header */}
window.location.href = `/painel?eventId=${id}`} className="flex items-center gap-2 px-3 py-2 hover:bg-gray-200 rounded-lg transition-colors text-gray-600">
Voltar
{(() => {
const name = event.empresa_nome || event.name;
const type = event.tipo_evento_nome || event.type;
return name === type ? name : `${name} - ${type}`;
})()}
{event.status}
{(event.fot_id || event.fot || event.id) && (
ID: {event.fot_id || event.fot || event.id}
)}
{/* Event Info Card (Spreadsheet Header Style) */}
Local:
{(() => {
const localVal = event['local_evento'] || event.local || event.local_evento;
const isUrl = localVal && String(localVal).startsWith('http');
if (isUrl) {
return (
{event.locationName || "Ver Localização no Mapa"}
);
}
return
{localVal || "Não informado"}
;
})()}
{event.endereco}
Horário
{event.horario || event.time || "Não definido"}
?
Observações
{event.observacoes_evento || "Nenhuma observação."}
{/* Main Content: Scheduling & Logistics */}
{/* Right: Logistics (Carros) - Only visible if user has permission */}
{canViewLogistics && (
a.status === AssignmentStatus.ACCEPTED)
.map((a: any) => a.professionalId)}
/>
{/* Equipment / Studios Section (Placeholder for now based on spreadsheet) */}
{/* Using DollarSign as generic icon for assets/inventory for now, map to Camera later */}
Equipamentos & Estúdios
Qtd. Estúdios (Automático):
{calculatedStats.studios}
Ponto de Foto:
{event.qtd_ponto_foto || 0}
)}
);
};
export default EventDetails;