import { ref } from 'vue' import { useApi } from './useApi' import { useToast } from './useToast' const constructeurs = ref([]) const loading = ref(false) export function useConstructeurs () { const { get, post, patch, delete: del } = useApi() const { showSuccess, showError } = useToast() const loadConstructeurs = async (search = '') => { loading.value = true try { const query = search ? `?search=${encodeURIComponent(search)}` : '' const result = await get(`/constructeurs${query}`) if (result.success) { constructeurs.value = result.data } return result } catch (error) { console.error('Erreur lors du chargement des fournisseurs:', error) return { success: false, error: error.message } } finally { loading.value = false } } const searchConstructeurs = async (search = '') => { return loadConstructeurs(search) } const createConstructeur = async (data) => { loading.value = true try { const result = await post('/constructeurs', data) if (result.success) { constructeurs.value = [result.data, ...constructeurs.value] showSuccess(`Fournisseur "${result.data.name}" créé`) } else if (result.error) { showError(result.error) } return result } catch (error) { console.error('Erreur lors de la création du fournisseur:', error) showError('Impossible de créer le fournisseur') return { success: false, error: error.message } } finally { loading.value = false } } const updateConstructeur = async (id, data) => { loading.value = true try { const result = await patch(`/constructeurs/${id}`, data) if (result.success) { const index = constructeurs.value.findIndex(item => item.id === id) if (index !== -1) { constructeurs.value[index] = result.data } showSuccess(`Fournisseur "${result.data.name}" mis à jour`) } else if (result.error) { showError(result.error) } return result } catch (error) { console.error('Erreur lors de la mise à jour du fournisseur:', error) showError('Impossible de mettre à jour le fournisseur') return { success: false, error: error.message } } finally { loading.value = false } } const deleteConstructeur = async (id) => { loading.value = true try { const result = await del(`/constructeurs/${id}`) if (result.success) { constructeurs.value = constructeurs.value.filter(item => item.id !== id) showSuccess('Fournisseur supprimé') } else if (result.error) { showError(result.error) } return result } catch (error) { console.error('Erreur lors de la suppression du fournisseur:', error) showError('Impossible de supprimer le fournisseur') return { success: false, error: error.message } } finally { loading.value = false } } const getConstructeurById = id => constructeurs.value.find(item => item.id === id) return { constructeurs, loading, loadConstructeurs, searchConstructeurs, createConstructeur, updateConstructeur, deleteConstructeur, getConstructeurById } }