// ============================================================================
// 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
Gérez vos configurations de contenu réutilisables
{new Date(config.created_at).toLocaleDateString('fr-FR')}
Ville: ${screen.location_city}
Adresse: ${screen.address}
Statut: ${screen.is_active == 1 ? 'Actif ✓' : 'Inactif ✗'}
${screen.bus_stop_name ? `Arrêt: ${screen.bus_stop_name}
` : ''}