import { useState, useEffect } from 'react'; // Le moteur logique pour la gestion des groupes d'infrastructures export const useVPC = () => { // 1. Initialisation : On cherche s'il y a déjà des VPC sauvegardés const [vpcs, setVpcs] = useState(() => { const saved = localStorage.getItem('nexus_vpcs'); return saved ? JSON.parse(saved) : []; }); // 2. Sauvegarde automatique à chaque modification useEffect(() => { localStorage.setItem('nexus_vpcs', JSON.stringify(vpcs)); }, [vpcs]); // 3. Créer un nouveau VPC const createVPC = (name) => { if (!name.trim()) return; const newVpc = { id: `vpc_${Date.now()}`, name: name, services: [] // Tableau qui contiendra les IDs des commandes (ex: [13, 14]) }; setVpcs([...vpcs, newVpc]); }; // 4. Supprimer un VPC (Les services à l'intérieur ne sont pas supprimés, ils redeviennent "Libres") const deleteVPC = (vpcId) => { setVpcs(vpcs.filter(vpc => vpc.id !== vpcId)); }; // 5. Assigner un service à un VPC const assignToVPC = (serviceId, targetVpcId) => { setVpcs(vpcs.map(vpc => { // On retire d'abord le service de tous les VPC pour éviter les doublons (1 service = 1 VPC max) const cleanedServices = vpc.services.filter(id => id !== serviceId); // Si c'est le VPC cible, on ajoute le service if (vpc.id === targetVpcId) { return { ...vpc, services: [...cleanedServices, serviceId] }; } // Sinon on retourne le VPC nettoyé return { ...vpc, services: cleanedServices }; })); }; // 6. Retirer un service d'un VPC (Le rendre "Libre") const removeFromVPC = (serviceId) => { setVpcs(vpcs.map(vpc => ({ ...vpc, services: vpc.services.filter(id => id !== serviceId) }))); }; return { vpcs, createVPC, deleteVPC, assignToVPC, removeFromVPC }; };