"use client"; import { X, Edit2, Trash2, Clock, Calendar, FileText, Users } from "lucide-react"; import { format } from "date-fns"; import { ru } from "date-fns/locale"; import { useState, useEffect } from "react"; import { apiClient } from "@/lib/api"; interface ViewEventDetailsModalProps { isOpen: boolean; onClose: () => void; event: any | null; onEdit: () => void; onDelete: () => void; showParticipants?: boolean; } export function ViewEventDetailsModal({ isOpen, onClose, event, onEdit, onDelete, showParticipants = false, }: ViewEventDetailsModalProps) { const [participants, setParticipants] = useState([]); const [loadingParticipants, setLoadingParticipants] = useState(false); useEffect(() => { if (isOpen && event?.id && showParticipants) { loadParticipants(); } else { setParticipants([]); } }, [isOpen, event?.id, showParticipants]); const loadParticipants = async () => { if (!event?.id) return; try { setLoadingParticipants(true); const result = await apiClient.getEventParticipants(event.id); const participantsList = Array.isArray(result) ? result : (result?.results || []); setParticipants(participantsList); } catch (error) { console.error("Failed to load participants:", error); } finally { setLoadingParticipants(false); } }; if (!isOpen || !event) return null; const formatDateTime = (dateStr: string) => { const date = new Date(dateStr); return format(date, "d MMMM yyyy, HH:mm", { locale: ru }); }; const formatDate = (dateStr: string) => { const date = new Date(dateStr); return format(date, "d MMMM yyyy", { locale: ru }); }; const capitalizedStart = formatDateTime(event.start).charAt(0).toUpperCase() + formatDateTime(event.start).slice(1); const capitalizedEnd = formatDateTime(event.end).charAt(0).toUpperCase() + formatDateTime(event.end).slice(1); return (

{event.title}

{event.rule && ( 🔁 )}
Календарь #{event.calendar}
{/* Time */}

Время

Начало: {capitalizedStart}

Конец: {capitalizedEnd}

{/* Recurring Info */} {event.rule && event.end_recurring_period && (

Повторение

До {formatDate(event.end_recurring_period)}

)} {/* Description */} {event.description && (

Описание

{event.description}

)} {/* Participants */} {showParticipants && (

Участники {participants.length > 0 && `(${participants.length})`}

{loadingParticipants ? (

Загрузка...

) : participants.length > 0 ? (
{participants.map((participant: any) => (
{participant.user_name?.[0] || "?"}
{participant.user_name}
{participant.distinction || "attendee"}
))}
) : (

Нет участников

)}
)}
); }