import React, { useState, useEffect } from 'react' import { useApi } from '../api/client' import Modal from '../components/Modal' const ContactPage = () => { const api = useApi() const [entries, setEntries] = useState([]) const [filtered, setFiltered] = useState([]) const [agencies, setAgencies] = useState([]) const [selectedAgency, setSelectedAgency] = useState('') const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const [modalOpen, setModalOpen] = useState(false) const [detailEntry, setDetailEntry] = useState(null) const fetchEntries = async () => { setLoading(true) setError(null) try { const res = await api.get('/formulaire') const list = res.data || [] setEntries(list) setFiltered(list) // récupérer agences uniques const uniq = [] list.forEach(e => { const name = e.agency?.name || 'Inconnue' const id = e.agency?._id || '' if (id && !uniq.find(u => u.id === id)) { uniq.push({ id, name }) } }) setAgencies(uniq) } catch (err) { console.error(err) setError('Impossible de charger les entrées de formulaire.') } finally { setLoading(false) } } useEffect(() => { fetchEntries() }, []) useEffect(() => { if (!selectedAgency || selectedAgency === 'all') { setFiltered(entries) } else { setFiltered(entries.filter(e => e.agency && e.agency._id === selectedAgency)) } }, [selectedAgency, entries]) const openDetail = async (id) => { try { const res = await api.get(`/formulaire/${id}`) setDetailEntry(res.data) setModalOpen(true) } catch (err) { console.error('Impossible de charger le détail', err) alert('Impossible de charger le détail.') } } const closeDetail = () => { setModalOpen(false) setDetailEntry(null) } const formatDate = (iso) => { if (!iso) return '' return new Date(iso).toLocaleString() } // ✅ helper pour message const getMessage = (entry) => { const w = entry.whiseData || {} const f = entry.fields || {} return ( w.Message || f.Message || f.comment || '' ) } return (
Chargement...
) : error ? ({error}
) : filtered.length === 0 ? (Aucune entrée trouvée.
) : (| Date | Agence | Prénom | Nom | Téléphone | Message | ||
|---|---|---|---|---|---|---|---|
| {formatDate(entry.createdAt)} | {entry.agency?.name || '—'} | {/* ✅ champs corrigés */}{w.FirstName || f.firstname} | {w.Name || f.lastname} | {w.PrivateEmail || f.email} | {w.PrivateMobile || f.phone} | {/* ✅ message corrigé */}{getMessage(entry)} |
{JSON.stringify(detailEntry.whiseData || {}, null, 2)}
Chargement...
)}