// ============================================================================ // CONCIERGES PAGE - Gestion des concierges // ============================================================================ const ConciergesPage = () => { const { customer } = useAuth(); const toast = useToast(); const [concierges, setConcierges] = useState([]); const [loading, setLoading] = useState(true); const [isModalOpen, setIsModalOpen] = useState(false); const [editingConcierge, setEditingConcierge] = useState(null); // Charger les concierges const loadConcierges = async () => { try { setLoading(true); const data = await api.getConcierges(customer.id); setConcierges(data.concierges || []); } catch (error) { console.error('Erreur chargement concierges:', error); toast.error('Erreur lors du chargement des concierges'); } finally { setLoading(false); } }; useEffect(() => { loadConcierges(); }, []); // Ajouter/Modifier un concierge const handleSave = async (conciergeData) => { try { if (editingConcierge) { await api.updateConcierge({ ...conciergeData, id: editingConcierge.id }); toast.success('Concierge mis à jour avec succès'); } else { await api.createConcierge(conciergeData); toast.success('Concierge créé avec succès'); } await loadConcierges(); setIsModalOpen(false); setEditingConcierge(null); } catch (error) { console.error('Erreur sauvegarde concierge:', error); toast.error('Erreur lors de la sauvegarde'); } }; // Supprimer un concierge const handleDelete = async (id) => { if (!confirm('Êtes-vous sûr de vouloir supprimer ce concierge ?')) return; try { await api.deleteConcierge(id); toast.success('Concierge supprimé avec succès'); await loadConcierges(); } catch (error) { console.error('Erreur suppression concierge:', error); toast.error('Erreur lors de la suppression'); } }; // Ouvrir le formulaire d'édition const handleEdit = (concierge) => { setEditingConcierge(concierge); setIsModalOpen(true); }; // Ouvrir le formulaire de création const handleNew = () => { setEditingConcierge(null); setIsModalOpen(true); }; return (
{/* Header */}

Concierges

Gérez les informations des concierges pour vos écrans

{/* Liste des concierges */} {loading ? (

Chargement...

) : concierges.length === 0 ? (

Aucun concierge

Commencez par ajouter votre premier concierge

) : (
{concierges.map((concierge) => (

{concierge.name}

{concierge.is_active ? ( Actif ) : ( Inactif )}

Client: {concierge.customer_name || 'N/A'}

Titre: {concierge.title || 'Conciergerie'}

Téléphone: {concierge.phone}

{concierge.email && (

Email: {concierge.email}

)} {concierge.address && (

Adresse: {concierge.address}

)}
{concierge.notes && (

{concierge.notes}

)}
))}
)} {/* Modal d'ajout/édition */} {isModalOpen && ( { setIsModalOpen(false); setEditingConcierge(null); }} onSave={handleSave} /> )}
); }; // ============================================================================ // MODAL FORMULAIRE CONCIERGE // ============================================================================ const ConciergeFormModal = ({ concierge, customers, onClose, onSave, customerId }) => { const toast = useToast(); const [formData, setFormData] = useState({ customer_id: concierge?.customer_id || customerId, title: concierge?.title || 'Conciergerie', name: concierge?.name || '', email: concierge?.email || '', phone: concierge?.phone || '', is_active: concierge?.is_active ?? 1 }); const handleSubmit = (e) => { e.preventDefault(); // Validation if (!formData.name) { toast.error('Le nom est requis'); return; } if (!formData.phone) { toast.error('Le téléphone est requis'); return; } onSave(formData); }; return (

{concierge ? 'Modifier le concierge' : 'Nouveau concierge'}

{/* Titre */}
setFormData({ ...formData, title: e.target.value })} placeholder="Ex: Conciergerie, Gardiennage" className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-green-500" />
{/* Nom */}
setFormData({ ...formData, name: e.target.value })} placeholder="Ex: Jean Dupont" className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-green-500" required />
{/* Téléphone */}
setFormData({ ...formData, phone: e.target.value })} placeholder="+41 79 123 45 67" className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-green-500" required />
{/* Email */}
setFormData({ ...formData, email: e.target.value })} placeholder="concierge@example.com" className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-green-500" />
{/* Actif */}
setFormData({ ...formData, is_active: e.target.checked ? 1 : 0 })} className="w-4 h-4 text-green-600 border-gray-300 rounded focus:ring-green-500" />
{/* Boutons */}
); };