// ============================================================================ // VUE CONFIGURATIONS // ============================================================================ const ConfigurationsView = () => { const { customer } = useAuth(); const toast = useToast(); const [configurations, setConfigurations] = useState([]); const [loading, setLoading] = useState(true); const [isModalOpen, setIsModalOpen] = useState(false); const [editingConfig, setEditingConfig] = useState(null); // Form state const [formName, setFormName] = useState(''); const [formDescription, setFormDescription] = useState(''); const [formActive, setFormActive] = useState(true); const [formSigConnectEnabled, setFormSigConnectEnabled] = useState(false); useEffect(() => { loadConfigurations(); }, []); const loadConfigurations = async () => { setLoading(true); try { const result = await api.getConfigurations(customer.id); if (result.configurations) { setConfigurations(result.configurations); } } catch (error) { toast.error('Erreur lors du chargement'); } setLoading(false); }; const openModal = (config = null) => { if (config) { setEditingConfig(config); setFormName(config.name); setFormDescription(config.description || ''); setFormActive(config.is_active == 1); setFormSigConnectEnabled(config.sig_connect_enabled == 1); } else { setEditingConfig(null); setFormName(''); setFormDescription(''); setFormActive(true); setFormSigConnectEnabled(false); } setIsModalOpen(true); }; const handleSubmit = async (e) => { e.preventDefault(); const data = { customer_id: customer.id, name: formName, description: formDescription, is_active: formActive ? 1 : 0, sig_connect_enabled: formSigConnectEnabled ? 1 : 0 }; try { if (editingConfig) { data.configuration_id = editingConfig.id; const result = await api.updateConfiguration(data); if (result.success) { toast.success('Configuration modifiée'); loadConfigurations(); setIsModalOpen(false); } } else { const result = await api.createConfiguration(data); if (result.success) { toast.success('Configuration créée'); loadConfigurations(); setIsModalOpen(false); } } } catch (error) { toast.error('Erreur lors de l\'enregistrement'); } }; const handleDelete = async (configId) => { if (!confirm('Supprimer cette configuration ? Cette action est irréversible.')) return; try { const result = await api.deleteConfiguration(configId); if (result.success) { toast.success('Configuration supprimée'); loadConfigurations(); } } catch (error) { toast.error(error.message || 'Erreur lors de la suppression'); } }; const handleDuplicate = async (config) => { const newName = prompt('Nom de la nouvelle configuration:', config.name + ' (Copie)'); if (!newName) return; try { const result = await api.duplicateConfiguration(config.id, newName); if (result.success) { toast.success('Configuration dupliquée'); loadConfigurations(); } } catch (error) { toast.error('Erreur lors de la duplication'); } }; if (loading) return ; return (

Configurations

Gérez vos configurations de contenu réutilisables

{configurations.length === 0 ? ( openModal()} icon="fa-plus"> Créer une configuration } /> ) : (
{/* En-tête du tableau */}
Configuration
Description
Contenu
Écrans
Statut
Actions
{/* Lignes du tableau */} {configurations.map(config => (
{/* Nom de la configuration */}

{config.name}

{new Date(config.created_at).toLocaleDateString('fr-FR')}

{/* Description */}
{config.description ? ( {config.description} ) : ( Aucune description )}
{/* Contenu (statistiques) */}
{config.ads_count || 0} {config.news_count || 0} {config.sliders_count || 0} {config.numbers_count || 0}
{/* Nombre d'écrans */}
{config.screens_count || 0}
{/* Statut */}
{config.is_active == 1 ? 'Active' : 'Inactive'}
{/* Actions */}
))}
)} {/* Modal Créer/Modifier */} setIsModalOpen(false)} title={editingConfig ? 'Modifier la configuration' : 'Nouvelle configuration'} >