import { ref } from 'vue' import { useToast } from './useToast' import { useApi } from './useApi' const sites = ref([]) const loading = ref(false) export function useSites() { const { showSuccess, showInfo } = useToast() const { get, post, patch, delete: del } = useApi() const loadSites = async () => { loading.value = true try { const result = await get('/sites') if (result.success) { sites.value = result.data showInfo(`Chargement de ${sites.value.length} site(s) réussi`) } } catch (error) { console.error('Erreur lors du chargement des sites:', error) } finally { loading.value = false } } const createSite = async (siteData) => { loading.value = true try { const result = await post('/sites', siteData) if (result.success) { sites.value.push(result.data) showSuccess(`Site "${siteData.name}" créé avec succès`) } return result } catch (error) { console.error('Erreur lors de la création du site:', error) return { success: false, error: error.message } } finally { loading.value = false } } const updateSite = async (id, siteData) => { loading.value = true try { const result = await patch(`/sites/${id}`, siteData) if (result.success) { const index = sites.value.findIndex(site => site.id === id) if (index !== -1) { sites.value[index] = result.data } showSuccess(`Site "${siteData.name}" mis à jour avec succès`) } return result } catch (error) { console.error('Erreur lors de la mise à jour du site:', error) return { success: false, error: error.message } } finally { loading.value = false } } const deleteSite = async (id) => { loading.value = true try { const result = await del(`/sites/${id}`) if (result.success) { const deletedSite = sites.value.find(site => site.id === id) sites.value = sites.value.filter(site => site.id !== id) showSuccess(`Site "${deletedSite?.name || 'inconnu'}" supprimé avec succès`) } return result } catch (error) { console.error('Erreur lors de la suppression du site:', error) return { success: false, error: error.message } } finally { loading.value = false } } const getSiteById = (id) => { return sites.value.find(site => site.id === id) } const getSites = () => sites.value const isLoading = () => loading.value return { sites, loading, loadSites, createSite, updateSite, deleteSite, getSiteById, getSites, isLoading } }