diff --git a/src/app/projects/[id]/page.js b/src/app/projects/[id]/page.js index fc83a77..014d066 100644 --- a/src/app/projects/[id]/page.js +++ b/src/app/projects/[id]/page.js @@ -30,6 +30,7 @@ export default function ProjectViewPage() { const [uploadedFiles, setUploadedFiles] = useState([]); const [editingNoteId, setEditingNoteId] = useState(null); const [editText, setEditText] = useState(''); + const [projectContacts, setProjectContacts] = useState([]); // Helper function to parse note text with links const parseNoteText = (text) => { @@ -163,9 +164,14 @@ export default function ProjectViewPage() { const filesRes = await fetch(`/api/files?entityType=project&entityId=${params.id}`); const filesData = filesRes.ok ? await filesRes.json() : []; + // Fetch project contacts + const contactsRes = await fetch(`/api/projects/${params.id}/contacts`); + const contactsData = contactsRes.ok ? await contactsRes.json() : []; + setProject(projectData); setNotes(notesData); setUploadedFiles(filesData); + setProjectContacts(contactsData); } catch (error) { console.error('Error fetching data:', error); setProject(null); @@ -221,6 +227,17 @@ export default function ProjectViewPage() { return "success"; }; + const getContactTypeBadge = (type) => { + const types = { + project: { label: "Projekt", variant: "primary" }, + contractor: { label: "Wykonawca", variant: "warning" }, + office: { label: "Urząd", variant: "info" }, + supplier: { label: "Dostawca", variant: "success" }, + other: { label: "Inny", variant: "secondary" }, + }; + return types[type] || types.other; + }; + return ( {/* Mobile: Full-width title, Desktop: Standard PageHeader */} @@ -479,12 +496,53 @@ export default function ProjectViewPage() { {project.contact && (
- Kontakt + Kontakt (stary format)

{project.contact}

)} + {/* New Contacts System */} + {projectContacts.length > 0 && ( +
+ + Kontakty + +
+ {projectContacts.map((contact) => { + const typeBadge = getContactTypeBadge(contact.contact_type); + return ( +
+
+ + {contact.name} + + {contact.is_primary === 1 && ( + + Główny + + )} + + {typeBadge.label} + +
+
+ {contact.phone &&
📞 {contact.phone}
} + {contact.email &&
📧 {contact.email}
} + {contact.company && ( +
🏢 {contact.company}
+ )} +
+
+ ); + })} +
+
+ )} + {project.coordinates && (