import React, {useEffect, useState} from "react"; import {useRouter} from "next/navigation"; import {Card} from "@/components/ui/card"; import {Button} from "@/components/ui/button"; import {ChevronDown, ChevronRight, ExternalLink, Folder, Pencil, Plus, Trash2} from "lucide-react"; import {DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle,} from "@/components/ui/dialog"; import {Label} from "@/components/ui/label"; import {Input} from "@/components/ui/input"; import {Textarea} from "@/components/ui/textarea"; import {Select, SelectContent, SelectItem, SelectTrigger, SelectValue} from "@/components/ui/select"; import {Tooltip, TooltipContent, TooltipTrigger} from "@/components/ui/tooltip"; import {AnimatePresence, motion} from "framer-motion"; import {CustomerProject, CustomerProjectStatus, getStatusText} from "@/services/projects/entities/customer-project"; import {CreateCustomerProjectDto, ProjectNoteDto} from "@/services/projects/dtos/create-project.dto"; interface Props { customer: { id: string; companyName: string }; handleOpenDialog: (content: React.ReactNode) => void; } export default function CustomerProjectsContent({customer, handleOpenDialog}: Readonly) { const router = useRouter(); const [expandedProjects, setExpandedProjects] = useState([]); const [projects, setProjects] = useState([]); const [selectedStatus, setSelectedStatus] = useState(CustomerProjectStatus.PLANNED); const [notes, setNotes] = useState([]); const loadProjects = async () => { try { const response = await fetch(`/api/projects/customer/${customer.id}`); if (!response.ok) throw new Error("Failed to fetch projects"); const data = await response.json(); setProjects(data); } catch (error) { console.error("Error loading projects:", error); setProjects([]); } }; useEffect(() => { loadProjects(); }, [customer.id]); const toggleProject = (index: number) => { setExpandedProjects((prev) => prev.includes(index) ? prev.filter((i) => i !== index) : [...prev, index] ); }; const handleAddNote = () => { // Ensure a blank note is added when the button is clicked setNotes((prev) => [...prev, {text: ""}]); }; const handleUpdateNote = (index: number, text: string) => { setNotes((prev) => prev.map((note, i) => (i === index ? {...note, text} : note)) ); }; const handleRemoveNote = (index: number) => { setNotes((prev) => prev.filter((_, i) => i !== index)); }; const handleAddProject = () => { handleOpenDialog( Neues Projekt hinzufügen Füge ein neues Projekt für {customer.companyName} hinzu.